Do You OpenGrok?

Today was our first hack day of 2008. I’ve been helping coordinate these events for the past year and a half and they’ve proven to be a solid source of inspiration and motivation for all participants.

Unfortunately for me, today was more or less a day of false starts. Like always, I had a number of ideas but quickly realized most of them were too much work or simply not interesting enough to devote time to. I was contemplating playing around with GWT or Android but couldn’t think of an interesting enough problem to warrant the effort setting up the development environment. I just couldn’t bring myself to install Eclipse.

On the Eclipse front, it’s a constant struggle. I think the community support it gets is great but wish other IDEs would get the same love (obviously it’s a matter of user demand). I’m an IntelliJ fan and find its lack of serious plugins for many of the popular open-source frameworks a bit disappointing. It’s Groovy support is top notch, things are definitely lacking when it comes to other popular frameworks (like Seam which has JBoss Tools for Eclipse but not much for IntelliJ).

I’ll leave the topic of Maven artifacts for another day. Needless to say that some of the more popular frameworks and libraries are starting to come around to it.

The day was not a complete loss and I did manage to make progress on a couple of things. The first involved some UI work that could eventually replace our current excel-based way of doing expenses. I’ve been seeing more and more references to Ext JS and wanted to check it out. I mocked up a bit of a GUI using some of their components but didn’t get much farther than that. I was quite impressed with their examples (Feed Viewer and Web Desktop). If you’re a web developer, I’d be interesting in hearing your thoughts on the library. I don’t do a lot of web-centric development but I have played a bit with Prototype, JQuery and Mochikit previously in conjunction with Rails and Django.

The more interesting thing I played around with today was OpenGrok.

OpenGrok is a fast and usable source code search and cross reference engine. It helps you search, cross-reference and navigate your source tree. It can understand various program file formats and version control histories like Mercurial, SCCS, RCS, CVS, Subversion, Teamware and Bazaar. In other words it lets you grok (profoundly understand) the open source, hence the name OpenGrok. It is written in Java.

OpenGrok is the tool used for the OpenSolaris source browser and search.

It’s actually pretty cool. I installed on to a Ubuntu 7.10 virtual machine without too many problems. There are a few gotchas (documented and undocumented) when it came to indexing our source code (from subversion) but in the end it worked pretty well. OpenGrok uses Lucene behind the scenes and provides a nice simplistic web application for searching and navigating the source code (there are also command-line and Swing interfaces).

Performance was very good. Indexing a checkout consisting of ~1.1G (lots of libraries and test data) didn’t take much longer than a couple minutes. Indexing the 11,000 change sets from subversion only added about a minute. This is on a VM w/ 512M on a MacBook Pro. Searches are instantaneous.

I haven’t played around with too many other source code x-referencers so I’m not sure I fully understand it’s potential or how it compares to it’s commercial and OSS competitors. That being said, I love the speed and if the OpenSolaris guys are using it, it can’t be that bad right?