Sunday, 10 April 2011

JXTA/JXSE 2.7 is out, but what about the future?

The final release of JXTA/JXSE 2.7 finally came out in March 2011. Two releases in 9 months, this is epic considering JXTA's history.

The highlights of this release include:
  • Multiple peers in the same JVM - Yes, this long awaited feature is now available. It is possible to run multiple peers in the same JVM. Although most engineers won't use that possibility in their applications, it is key to implementing JUnit tests.
  • JUnit collocated tests - A set of JUnit collocated tests has been implemented, which is a huge improvement to guarantee Q&A. This has proven tremendously useful to make sure we did not introduce regressions when refactoring or implementing new code. Code coverage is not complete yet, but key features are.
  • Continuous  Integration - A continuous integration system has been implemented via http://mikeci.com. For more information, send an email to the development list.
  • HTTP2 - A new HTTP transport has been implemented. It is not compatible with the existing one, but it solves a key shutdown delay issue encountered with current HTTP implementation.
  • Routes & hints suggestions - Hints have been removed from the code, as they proved useless and misleading in most cases. Nevertheless, there is still a possibility of making suggestions in the endpoint service for those who want to.
  • JXTA Security Enhancements - An implementation of secured peergroups and communication between peers is now available, though it should be considered beta and experimental.
  • OSGi - The introduction of OSGi in 2.6 is a mitigated success. The 2.7 release makes it easier/possible to run JXTA within OSGi. However, a 'clean' implementation would require a redesign of the JXTA API, which itself requires major refactoring of the code.
On the up side, JXTA can be now considered as a stable P2P framework with a TURN implementation of NAT traversal. On the down side, the idea of loading services on peers is IMHO FUBAR and should probably be abandoned. A clean-up of the JXTA protocol specifications is also necessary, including deprecations. The framework is being used in production successfully by some companies, but has not been battle tested on a large scale.

Around October/November 2010, Oracle officially announced it was withdrawing from the project, via its representative on the JXTA board. This was no real surprise for the community, since Sun Microsystems had progressively withdrawn from the project since 2008. JXTA board elections should have been organized by its member in July 2010, but they did not perform their duties. No one, really complained too. Legally, the Oracle/Sun representative is still in charge and Oracle owns the JXTA brand.

Following this announcement, the community voted to move to the Apache Software Foundation (ASF). Since Oracle would not transfer the brand name, we voted for a new name too: Chaupal. ASF required us to move to the Apache License 2.0 to clear out potential intellectual property issues; we are under Apache License 1.1. We made a request to Oracle's representative who answered that Oracle needed time to review it's Intellectual Property. It has been nearly 6 months now. No follow-up or answers, even after reminders were sent. An email was sent to Mr. Edward Screven for clarification, no answer.

Yes, this confirms that Oracle's support for Open Source and Open Standard's is strictly limited to that serving their interest (dare I say void?). Indifference and isolation rules. Cannibalizing the brand value of Open Source products (Kenai, OpenOffice, MySQL, unbreakable Linux...) they have not developed themselves and ostracizing those who have developed it, is not an issue. I guess it becomes a need when developing healthy and nurturing relationships is not an option.

May be "Preferring to solve problems, rather than manage their consequences (...)" means substituting wealth and appearance for substance, while consequences of feeling dry inside are not felt. You can observe the world and yourself from a distance as much as you want, instead of really participating to the party, it won't ever give you what the open source community produces for free.

Oracle, stop biting the hand that is feeding you. It is not food and it does not make you lovable.

Back to JXTA, I have decided to put an end to the leadership of the JXTA project under current circumstances. With a couple of community members, I have started the Chaupal project on Google Code. The objective is to create a new P2P framework from scratch with a clean code base and a sound architecture based on experience acquired with JXTA, while guaranteeing a 'true' application of the Open Source spirit.

If anyone wants to take over the JXTA leadership, tell it to the user mailing list.

P.S.: I almost forgot. The Practical JXTA II book is now available online for reading at Scribd. Those looking for some information about NAT traversal will be delighted by the new chapter covering this topic.