Un-hibernating projects: Java Uuid Generator, getting ready for 3.0!
As cycle of seasons has rolled to late spring, it is time for
hibernating things -- bears, and stagnant open source projects -- to
wake up and start moving. It just so happens that this is the case with
venerable Java UUID Generator (JUG): my first true Open Source project.
Although
it is not exactly the first thing that I ever released as open source
(that would be something called "NetReaper", or perhaps "DLR", both from
late 90s -- few have ever heard of them -- heck, even "Fractalizer" is
older!), and much less the first piece of software I have released
(shareware lib/app that compressed Amiga Soundtracker files using delta
compression is probably the first one, from late 80s!), I count it as
basically starting point of my open source "career".
So what is happening? Well: there is the new JUG project page (at the OS darling GitHub); matching skeletal JUG product page at FasterXML; and of course the brand new JUG users discussion group (java-uuid-generator-users) at Google Groups, waiting for users to talk about it. And probably most interestingly, actual development effort to produce third major version, 3.0.
Given that the project has spent past 5 or so years changing very little, why is there new development effort? Mostly because JDK finally caught up with JUG, so to speak -- JDK 1.6 finally has a pure Java method of accessing Ethernet interface MAC addresses -- but partly also because of other niceties that can now be added (java.util.UUID was added in JDK 1.4; which was not the stable version at the time of writing JUG 2.0). And finally, there's quite a bit of clean up that would be nice to do if I was to work on the code.
Given above, here are the modest goals for version 3.0
- Add convenient support for using local Ethernet address, without using JNI library (requires JDK 1.6); and remove legacy code that was needed for JNI
- Change UUID type to use from JUG-specific to java.util.UUID (also allows removing quite a bit of code)
- Build/deployment changes: change build to Maven (including releasing builds to Maven repos); jars built as OSGi bundles as well
- SCM changes: move from Safehaus/svn to GitHub/git
- Improve API to avoid relying heavily on singletons; streamline for simpler (and perhaps more elegant) access
- Add support for one "new" UUID generation method (using SHA-1 instead of MD5 for name/hash based generation)
- Maybe even write a simple tutorial for using the lib!
Which is just to say, renovate the package so it does not feel quite so 2002 any more (which is when it was written originally). :-)