//
you're reading...
Musings

Breaking up Insight

I have been thinking about it for a while, and finally decided to go about doing it. Insight is an open source log analysis tool that was started by Regu. I started contributing to it and before I realized, I was maintaining the project.

On its own Insight works fine as it stands today. But I believe the application has one major flaw – its Swing UI and logic are joined at the hip. The other major flaw – there are no unit tests! When we moved Insight to SourceForge, we had to make two releases within days as two critical defects introduced during the move went undetected (see mailing list thread on this).
There have been features on the wish list, feature request tracker and the build wish list, for months (nay years) that have not been implemented – some because I never had the time and unfortunately despite having an OK user community (gauging from downloads), we don’t have a good developer community. Some others never got implemented, as with the current state of Insight adding a new major feature usually makes it a little more complex, add that with no unit tests and swing. I’m scared.
In the beginning of the year, I finally decided to do something about it. The first step was actually a follow up from my musings from a year back on what I wanted to change in Insight and why (captured on the Insight wiki @http://mindtreeinsight.wiki.sourceforge.net/Insight_UI_2.0_Thoughts). And the push to do something came from three quarters, first scratching my own itch – to parse through some web server access logs and applying filtering on them – something we can’t do in Insight today. The second one was to alleviate the pain of some of my team members who have to regularly parse the logs on some production applications using trusty old grep and shell scripts to look for symptoms of trouble in applications – a task which could possibly be done by Insight automatically without user intervention (a daemon version has been a long standing feature request on Insight). The third was the pain to bring up the Insight development environment mostly thanks to Log4j – which depends on a number of Sun jars not available on any Maven repository.

When I finally started work on Insight 2.0 last month, I kept thinking why I had not done this earlier! Anyways – long story short, in the next few weeks and months I will be committing changes to a modified Insight on the subversion repository. At a high level, Insight will be broken down into the following major components:
  • insight-core consisting of insight-core-api which is what any insight implementations would depend on; insight-core-impl which will contain insight logic implementation (independent of any UI dependencies); and insight-core-app which will contain logic to initialize Insight in a desktop environment.
  • insight-preferences-ui will be a subset of the current desktop UI that can be brought up independently to modify preferences for insight; and
  • insight-desktop which will be a UI only component relying on the modules above for other functionality.
With release early philosophy, I want to get these out of the door before touching the other big items in the list:
  • Completing the listener verifier framework in Insight for daemon operations
  • insight-daemon version which can run as a scheduled app
Somewhere in between I would try and tackle as many of the wish list and tracker items as I can, and also give Insight some library updates (move to commons VFS for easy remote integration, get rid of Log4j and maybe use ehcache for the disk cache on Insight). That is not forgetting the old eclipse plug in that needs an overhaul and my own wish list for a web version of insight. And the maven plu-ins need some work too (maybe their own project?).
Good luck to me! But right now Insight is a huge HELP WANTED!

Discussion

No comments yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

About Random Musings

Random Musings is a collection of my personal thoughts, opinions, views and anything else that I find interesting. The views posted here are mine and may not necessarily reflect the views of MindTree Limited (my employer).
%d bloggers like this: