Sunday, January 27, 2013

Where Does The Time Go?

It's strange having a full-time job again. Progress on my personal projects has been very slow. Here it is, past midnight on Sunday night again, and I only fixed one bug this weekend. But at least it was an important one.

My last post apparently gave some people the impression that I'm giving up on Weapon M. Quite the opposite: I'm giving up on Git and Maven so I can continue work on Weapon M.

For someone comfortable and experienced with Subversion, Git is an infuriating piece of crap. Its theoretical advantages are inaccessible unless you possess vast knowledge of its intricacies. I know one developer who's been using it for five years and still despises it. And my verdict on Maven is that it's only practical for an open-source project if all the required libraries and build tools exist in public repositories. There is a way to make Maven install a jar into its local repo and then use it in a build, but it's clumsy and ugly. The same goes for using exec-maven-plugin to invoke an external build tool. The JPlex compiler is the slowest part of the Weapon M build process, but it only needs to run if you've modified the lexer specs. There's probably a way to skip it if it doesn't need to run, but I don't know what it is and I don't have time to figure it out.

A co-worker linked me an article entitled Why Everyone (Eventually) Hates (or Leaves) Maven. It makes an interesting point about the difference between composable and contextual tools. One sentence in particular summarizes my experience with Maven and Git: "The knowledge and effort required for a seemingly trivial change prevents the change from occurring, leaving the developer with a perpetually dull tool."

The point is, I'm giving up on automated building for Weapon M. It's not necessary, and it's certainly not worth dedicating weeks or months to learning a new tool chain, especially when "good enough" comes free. Anyone who wants to modify and build their own version of Weapon M will probably be using Eclipse, and Eclipse's build tools are more than adequate. It's much simpler and more intuitive — at least for me, and I'm sure for many others — to configure JPlex as an external build tool in Eclipse and run it only when you need it. Eclipse's executable jar export is superior to the maven-assembly-plugin. And Subversion's Eclipse integration is much more mature and functional than Git's.

And that's all I have to say about that.

I received an email this week from another Java developer who's excited about Weapon M. He said called my event model "awesome". That's the kind of thing that keeps open-source development going. I'm going to commit cleaned-up versions of all my projects soon, hopefully with more bug fixes. Stay tuned!

No comments:

Post a Comment