Open Source Tools and the Process of Programming

by William Crawford

Related link:

I've been a big fan of open source on the server for quite a while. Part of this is a desire to get the most out of what are often very limited budgets, but most of it is because the tools are suited for the task. Virtually all of the infrastructure at our company runs on Linux or one of the BSD variants. We haven't switched over to an open source RDBMS yet, but even our Oracle servers have been running on Linux for over four years and several versions.

Despite those largely positive experiences on the server, I've never had much open source software on my desktop. Part of this is the same old story: almost everyone I work with uses not just Microsoft Word, but Excel, PowerPoint, Project, Visio and even Access as well. I use every one of these every day, and switching back and forth to Linux doesn't make a lot of sense. I've also been using an integrated IDE since Turbo C back in the late 1980s, and at this point have become totally spoiled, particularly since switching to JDeveloper.

The two longstanding exceptions have been WinCVS and Cygwin, both of which are essential for communicating with all those open source based servers lying around the company. Cygwin lets me do very useful things, like running X Windows applications from my Win2K box, and scp and ssh'ing all over the place. Both have been essential toolkit components for several years.

Recently, though, I've begun to explore a bit more. I'm currently working on an enterprise software engineering book for O'Reilly, and my co-author maintains a Microsoft free household. He uses StarOffice, and we've found that the interaction between StarOffice and Word, even on the relatively complex O'Reilly template, is very clean. Most importantly, the revision markup features all translate, although information about who made which change gets lost. It also spurred me to download AbiWord and 1.0.1. AbiWord's image handling wasn't up to my requirements, but OpenOffice, so far, has performed like a champ. As an experiment I'm using it to write an article, and if all goes well I'm going to try switching over for writing work.

My other recent discovery, if by discovery one means something that everybody else has already found, is the JEdit programmer's editor. I haven't been using it to actually write much code, since I still prefer the integrated environment in JDeveloper, but I've been using it to clean up a lot of existing code. Some of the JEdit plugins, particularly JavaStyle, a code reformatter, are very well thought out. A few lengthy source files that had been mangled almost to unreadability after years of round trips through source control, different editors, tab-to-space conversions, space-to-tab conversions and the like are now much, much easier to understand, and if all the JavaDoc comments aren't written, at least there's a nagging space for them now. The tools support the practice, which I approve of wholeheartedly.

It makes sense, of course. Programming tools, in particular, are almost always good, because they're the only area where the developers have constant, ongoing, easily understood input from the user community. Open source programming tools, where it's pretty much a given that the authors will be using the products of their effort (else, what's the point?), benefit from this even more than commercial products.

I clearly need to devote more time to monitoring open source tool sets. Better late than never.

What open source tools do you use to aid the process of programming?