I just wasted the second of two weekend days...

I just wasted the second of two weekend days spending more time setting up development tools and programming environments than I did accomplishing what I set out to do in the first place.

Specifically, I once again wrestled Eclipse and WTP and Maven and Junit and Subclipse and Hibernate and Spring [and, and, and...] into partial submission.

But really, why do I do this to myself every time I want to write some simple little code?

I get this clear picture in my head of exactly what I want to write. Then I promptly go off on a 12 hour long tangent figuring out how to integrate an enterprise-quality build system and deployment system for my inconsequential one-person project.

The worst irony being that I just went through this exact process 3 months ago (just before my headfirst dive into Python). But, even in that brief period of time, everything I had set up before was already woefully out of date.

Which is precisely the problem. Hot new tools such as Maven, Eclipse, etc., etc., are perpetually focused on going from version n to version n+1. No one cares to stay behind to make sure version n is actually working well and inter-operating correctly with all of the other parts of the ecosystem. By the time you get one thing working you are already one upgrade cycle behind the other pieces you depend on.

So, is this problem endemic to all open source projects? Does the same thing that drives us to write open source code also drive us to go forward at all costs?

My gut says "no"; there are too many counter-examples. Older versions of the Linux kernel, Apache httpd, gcc, etc., are stable, rock-solid, and always getting more refined, not just adding more features. Stalwarts in the venerable old toolkit like emacs, make, autoconf, etc., are still being patched and updated. Sure, sometimes we move on to new tools, and sure, sometimes you'll see new versions of those development classics appear, but the maintainers never abandon the old versions entirely.

What makes me frustrated is that so many projects today are pushing the "Latest and Greatest" version on their homepages, and abandoning everything else, seemingly the moment the unit tests turn green. No one seems to care that tools don't work in isolation, that they are designed to interact with other tools. Heck, everyone seems to be able to add "plugin" support for their projects. But what good does it do if every four weeks you release a new version that is incompatible with your own plugins?

So forget it. I'm scrapping the cutting-edge development stack next time around and writing something in C89. At least I'll know what I'm getting myself into.

(Written and posted using Google Docs & Spreadsheets. Boring name, great product.)