On prioritizing my Open Source projects, retrospect #2
1. What was the plan again?
Ok, it has been almost 4 months since my last medium-term high-level priorization overview. Planned list back then had these entries:
- Woodstox 4.1
- Aalto 1.0 (complete async API, impl)
- Jackson 1.7: focus on extensibility
- ClassMate 1.0
- Externalized Mr Bean (not dependant on Jackson)
- StaxMate 2.1
- Tr13 1.0
2. And how have we done?
Looks like we got about half of it done. Point by point:
- DONE: Woodstox 4.1 (with 4.1.1 patch release)
- Almost: Aalto 1.0 -- half-done; but significant progress, API is defined, about half of implementation work done
- DONE: Jackson 1.7 (with 1.7.1 and 1.7.2 patch releases)
- Almost: ClassMate 1.0 not completed; version 0.5.2 released, javadocs publisher, minor work remains
- Deferred: Externalized Mr Bean -- no work done (only some preliminary scoping)
- DONE? StaxMate 2.1 -- released 2.0.1 patch instead that contains fixes to found issues, but no new features, which would defined 2.1.
- Some work done: Tr13: incremental work, but no definite 1.0 release (did release 0.2.5 patch version with cleanup)
I guess it is less than half since only 2 things were fully completed (or 3 if StaxMate 2.0.1 counts). But then again, of remaining tasks only one did not progress at all; and many are close to being completed (in fact, I was hoping to wrap up Aalto before doing update). And ones referred were lower entries on the list.
On the other hand, I did work on a few things that were not on the list. For example:
- Started "jackson-xml-databinding" project (after Jackson 1.7.0), got first working version (0.5.0)
- Started multiple other Jackson extension projects (jackson-module-hibernate, jackson-module-scala), with working builds and somewhat usable code; these based on code contributed by other Jackson developers
- Started "java-cachemate" project, designed concept and implemented in-memory size-limited-LRU-cache (used already in a production system)
This just underlines how non-linear open source development can be; it is often opportunistic -- but necessarily in negative way -- and heavily influenced by feedback, as well as newly discovered inter-dependencies, and -opportunities.
3. Updated list
Let's try guestimating what to do going forward, then, shall we. Starting with leftovers, we could get something like:
- Aalto 1.0: complete async implementation; do some marketing
- ClassMate 1.0: relatively small amount of work (expose class annotations)
- Java CacheMate: complete functionality, ideally release 1.0 version
- Tr13: either complete 1.0, or augment with persistence options from cachemate (above)
- Externalized Mr Bean? This is heavily dependant on external interest
- Jackson 1.8: target most-wanted features (maybe external type id, multi-arg setters)
- Jackson-xml-databinding 1.0: more testing, fix couple known issues
Other potential work could include:
- StaxMate 2.1 with some new functionality
- Woodstox 5.0, if there is interest (raise JDK minimum to 1.5, maybe convert to Maven build)
- Jackson-module-scala: help drive 1.0 version, due to amount of interest in full Scala support
- Jackson-module-csv: support data-binding to/from CSV -- perhaps surprisingly, much of "big data" exists as plain old CSV files...
But chances are that above lists are also incomplete... let's check back in May, on our first "anniversary" retrospect.