In my quest for scaling up my java-based server I ran into the open source Quickserver framework (http://www.quickserver.org).
QuickServer is an open source Java library/framework for quick creation of robust multi-client TCP server applications. Basically the framework takes care of the multiple socket connections/threads (pooling) while one can just focus on the application logic.
Recently the java nio stuff has been included with support for non-blocking io i.e. multiple clients per thread instead of 1 thread per client (which is also still possible with the framework) which provides a high level of scaling.
Maybe the quickserver framework could be used for upscaling jive messenger.
I might as well throw my 2c into the pot. I was looking at JCyclone (www.jcyclone.org) which was built of the SEDA architecture. It’'s a project that was started by Matt Welsh, a member of the expert group for NIO.
EmberIO is also another candidate for references. Mike Spille put a lot of work into research the topic and made some provides some very good analysis of the problem.
The api is low level enough that you could do just about anything you want. What’'s nice is that they already provide a TLS server.
As for writing a NIO base library…that should be a last resort. Instead we should pick an API that exists and customize it to our needs.
LGPL. If it’‘s something else, I’‘m sure we could ask Mike to change it. It’'s a dormant project so anything that would breath life into it would most likely be welcome.
That topic may be too weighty for this forum… The basic gist is that they work better with commercial software efforts. For example, Smack uses the Apache 2 license so that commercial software can use the library as part of their applications. LGPL is similar. Full applications are a different story – in that case, GPL can make more sense.
I agree with Matt, this is topic better suited for another forum. I’'d recommend googling for GPL vs BSD or more recently GPL vs CDDL. Also, check slashdot.org for some very fun and heated debate on the matter.