Hmm... The plot thickens a bit for me with regard to the Bean Markup Language project. On a whim, I Google'd for a Java decompiler, having remembered that I'd gotten some use and enlightenment back in the day from Mocha. So I found, downloaded, and tried Mocha on the BML class files. It choked a bit, produced some source files, but the collection as a whole was not trivially easy to recompile. Pretty much what I expected, given that Mocha is a relic these days.

But then, I noticed JODE, a few search results down the page. Google's description said, "Java decompiler with full source code. Supports inner/anonymous classes..." Well, inner/anonymous classes are new to me since I was last very active with Java. (Yes, I know, that's been awhile.) So I figured I'd check JODE out. Besides, the last release of JODE looked newer than the last release of BML.

Much to my surprise, JODE consumed the BML jar file directly and gave me a directory full of source without a complaint. For the hell of it, I compiled everything there, and made a new jar file from the results. I cleaned my project out, replaced the original BML jar with my new decompiled-recompiled archive and... everything worked just fine.

Skimming through the various source files JODE gave me, things look surprisingly less ugly than I'd expected. Of course comments are nowhere to be seen, and variable names are nothing like the original would have been, but the source was is still readable and I can follow it. So this means I have the source code to BML now, after a fashion.

So my question now is... I read the IBM ALPHAWORKS COMMERCIAL LICENSE AGREEMENT which came with the original download, and I see these paragraphs:

Permission to reproduce and create derivative works from the Software ("Software Derivative Works") is hereby granted to you under the copyrights of International Business Machines Corporation ("IBM"). IBM also grants you the right to distribute the Software and Software Derivative Works.

You grant IBM a world-wide, royalty-free right to use, copy, distribute, sublicense and prepare derivative works based upon any feedback, including materials, error corrections, Software Derivatives, enhancements, suggestions and the like that you provide to IBM relating to the Software.

Does this mean, basically, that it's okay for me to distribute this source as a derivative work, with various potential enhancements, &etc, as long as IBM is still able to grab a copy of it back from me with no strings attached? If so, that's great.

My only other question remaining, though, is whether or not my naivete toward Java has me yet to find what the community at large considers the Right Way to work with ?JavaBeans. Because, this BML thing seems great to me, but it seems to have gotten next to zero attention. This usually tells me that I'm missing something, but the thing itself works nicely.

Any thoughts out there in the blogosphere?