<< Previous | Home

Spring's New Maintenance Policy

Just another vendor of a proprietary framework?

SpringSource, the company behind the popular Spring Framework has announced a new maintenance policy: SpringSource Enterprise Maintenance Policy, effective September 2008. After a lot of discussion in the community they have now added a Frequently Asked Questions document.

Spring Framework was originally created to overcome the limitations of Enterprise Java Beans (version 1 and 2) and make it easier to build J2EE applications. It has introduced dependency injection to a broad audience and changed the way many enterprise applications are built today. For many years it has been a vendor independant Open Source project available under the Apache Software License. Some time ago the creators of Spring Framework started their own company, received venture capital and things started to change. They've added new products like a new application server, bought Covalent and are looking for opportunities to gain some money.

In contrast to their new proprietary products which require a commercial license there has not been a real opportunity to make money from SpringFramework itself. Community support was fine, regular maintenance updates fixed the issues that were discovered and there was no need for commercial support. The recent announcement of their new maintenance policy seems to be their answer to that. They try to create a need for their support offerings. So the new policy basically states:

  • Free maintenance updates will only be available for three months after a major release
  • Maintenance releases will be available to paying customers under a commercial license for three years after a major release
  • Bug fixes will be commited to a maintenance branch but minor releases will not be tagged after the three month period so the community will not know which versions are stable

Though the major releases will remain Open Source the bug free minor versions (three months later) will not. Spring Framework 2.0 was released in October 2006, Spring Framework 2.5 in November 2007 which means that the community will be without minor releases for more than 9 months if the frequency of their releases remains similar.

Sure, you can always build from the sources but this looks like a bad idea given that SpringSource refuses to tag consistent and tested versions.

I can understand the desire to make cash from SpringFramework but I am not sure this way will be successful. For me the products of SpringSource have lost their strong advantage of being vendor independant and fully Open Source. Upcoming projects will have to consider this fact and investigate alternatives.

References

mvn deploy:deploy-file with WebDAV

Deploying third party artifacts to an internal Maven repo

Though most of the Java libraries are already in the official Maven repository you will from time to time encounter artifacts that are not available there. Reasons for this include licensing issues (e.g. Oracle JDBC drivers and some Sun Java APIs) and a lack of maintainers.
Most users of Maven run an internal repository for those artifacts and to distribute their own work products.

Recent versions of Maven support uploading artificats along with their sources directly into your internal repo through WebDAV:

mvn deploy:deploy-file \
        -DrepositoryId="internal" \
        -Durl="dav:https://server/repo" \
        -Dfile="oracle-jdbc.jar" \
        -DgroupId="com.oracle" \
        -DartifactId="oracle-jdbc" \
        -Dversion="1.2.3" \
        -Dpackaging=jar \
        -DgeneratePom=true

Read more...

Tags :

Estonia

A cool country with a warm heart

Estonia Estonia is a small country in the north east of Europe in the Baltic region. As a former Soviet republic it became independant in 1991 and is a member of NATO and the European Union since 2004.

Estonia has a strong information technology sector and plays a leading role in terms of eGovernment. It has declared internet access a basic human right and there are free wlan hotspots throughout the country. Over 90% of the population own a mobile device while in 1991, when Estonia regained its independence, only half of the country's 1.4 million people even had a telephone line. Being a very small country without much natural resources, Estonia has realized that it has to move fast and that innovative ideas are the way to future.

In terms of political and civil freedom Estonia quite ahead in Europe. Reporters sans frontières has ranked Estiona 3rd out of 169 countries in its press freedom index while Germany is only on rank 20.

Liberal economic policies, low taxes and a well-educated population build a solid ground for entrepreneurs.

Next week I'll have a look on my own.

Book: Openfire Administration

A step-by-step guide to managing Openfire

Packt has released a new book on Openfire a Java based Instant Messaging server.
Openfire Administration by Mayank Sharma is a step-by-step guide for everybody who wants to setup an internal IM server for private or corporate use. It walks you through the whole installation and configuration process including integration with external authentication sources like OpenLDAP and Active Directory and covers a bunch of useful plugins.

In contrast to other similar products Openfire is based on open standards as it uses the same XMPP protocol that is also used by Google Talk and Apple's iChat. Openfire is available under the GNU General Public License so there are no license fees and it's maintained by a vibrant community. There are a lot of free and commercial clients that you can use to connect to Openfire like Spark and the Flash based SparkWeb, Psi, iChat and many more.
Additional free plugins are available that cover a wide range of requirements like connection to other IM networks like MSN, ICQ/AIM and Yahoo!, server side archiving for compliance and integration with the Asterisk PBX.

If you are new to running IM infrastructure and interested in setting up a proven enterprise ready solution Mayank's book is for you and will provide you with the information required to install and run a professional IM solution.

References

Kuschelworkshop

Eindrücke vom MinD Camp 2008

Wenn ich von meiner Teilnahme am diesjährigen MinD Camp berichte, taucht eine Frage immer wieder auf: Was hat man sich eigentlich unter dem Programmpunkt "Kuschelworkshop" vorzustellen?

Read more...

Tags :

Using Namespaces in XSLT and XPath

Don't miss factory.setNamespaceAware(true)

You can use namespaces in XSLT and XPath like

<xsl:value-of select="//a:account/b:accountType"
  xmlns:a="http://example.com/accounts"
  xmlns:b="http://example.com/types"/>

For this to work in Java the document builder must be namespace aware otherwise namespaces are stripped when parsing the document and your transformation will fail for obvious reasons.

DocumentBuilderFactory f = DocumentBuilderFactory.newInstance();
f.setNamespaceAware(true);

At least in JDK 6 the default seems to be false.

Tags :

Dear Sir, Please Advise!

Those emails to mailing lists come even from well-known consulting companies like Accenture. Three emails with almost the same question within a few hours each time including the full 25 lines long company disclaimer.

I wonder if it is known to the companies that the cheap resources are actually sponsored by well educated and expensive employees often employed by the same companies who answer those questions in their office time.

Tags :

Amazon SimpleDB Performance

The n+1 problem you can't avoid

Amazon offers a few massivly scalable web services like Elastic Compute Cloud (EC2) and Simple Storage System (S3). EC2 delivers virtual Linux boxes and S3 offers fail-safe disk space. Those services can be used as building blocks for custom applications. They are well thought out and allow you to start small and grow fast while concentrating on your own business (application) and leaving the operational details to a third party.

A rather new service and still in limited beta is Amazon SimpleDB. It is "a web service for running queries on structured data in real time." While S3 stores unstructed data like files, SimpleDB stores items with attributes organized in domains. The concept is a similar to other databases where an item could roughly be described as a row, an attribute as a column and a domain as a table. There are no connections between the domains (i.e. no foreign keys or referential integrity) but you can run arbitrary queries on the attributes of the items in a domain.
Like all Amazon webservices SimpleDB is accessible through HTTP using either a SOAP or a REST-style API. You can GET, PUT or DELETE items in a domain along with their attributes and you can QUERY a domain with a simple set of operators: =, !=, <, >, <=, >=, STARTS-WITH, AND, OR, NOT, INTERSECTION AND UNION. A QUERY returns a list of item identifiers and is quite fast. If you also need the attributes of these items however you must execute an additional GET request for each item that has been returned.

What does that mean in practice?

Say you store a set of blog entries in SimpleDB and want to show a list of the ten least recently added entries with title, date and author. You would issues a QUERY request that returns the identifiers of the ten entries and then issue ten GET requests to retrieve the title, date and author attributes for each of them. That makes a total of 11 requests that have to be executed. In general you need n+1 requests for a query that returns n items.

Amazon explains that you can run these queries in parallel to improve the overall response time for a query but that means you are running 50 or 100 parallel requests for just 10 visitors looking at your list. Sure, you can also cache them or do some other fancy tricks but the problem remains: Any query to SimpleDB requires n+1 HTTP requests. The bigger your result sets the worse your performance. Interestingly enough the n+1 problem is well known (and dreaded) from O/R-mapping where it can hit you if relatated objects are loaded in an improper way. The difference is however that with SimpleDB you can't escape it and that an HTTP request to SimpleDB is more expensive than an additional SELECT to a conventional database.

So what's the point here?

In my opinion SimpleDB in its current shape can only be used for very few use cases if at least one of the following conditions is met:

  • Your application only uses PUT, GET and DELETE requests
  • Your application only uses queries that return very few items (10 or less)
  • Your application only uses queries very infrequently, for example if serving all data from a distributed cache and using SimpleDB only as a backup store for structured data

Maybe that's one of the reasons for Amazons to partner with Sun and provide support for MySQL on EC2.

Update 2008-08-27

Amazon has updated their API to include a Query Sort feature to sort result sets based on a single attribute and add to return all information associated with the items of a particular Query:

The QueryWithAttributes feature provides the ability for developers to retrieve all the information associated with items returned as a response to a particular query. This highly requested feature simplifies the application development process; instead of issuing a query followed by a series of read requests, application developers can now use a single API call to retrieve all information about items stored in Amazon SimpleDB. This is useful for developers who are not using parallel programming or who utilize programming languages that do not support parallel programming.

I didn't have a chance to test these two new features yet but from the spec it seems like they could make SDB an interesting alternative to traditional databases in a few more scenarios.

Alienating Users By Changing The License

Java Service Wrapper and Ext JS move to GPL

In the past days I've notices two Open Source projects that changed their license from a commercial friendly license (BSD/MIT, LGPL) to GPL. The motivation of Java Service Wrapper and Ext JS seems to be to offer commercial licenses for closed-source projects that cannot use GPLed libraries.

While I understand that these projects need resources to enhance their products this step will have an impact on the trust companies will have in Open Source projects. It seems both projects have used a commercial friendly license to attract people. Now that they have an established user base they try to monetize this asset. It remains to be seen if this will work as various groups are already discussing the options to fork these projects, nevertheless the overall damange remains. "A foundation you can build on" - the claim of Ext JS - leaves a bad taste. Not only that companies developing closed-source products will have to pay now (or switch or stick with the old soon unsupported version), Open Source projects with a more commercial friendly license will also have to look for alternatives.

Another interesting aspect is the current use of the GPL: Once designed to grant a maximum of freedom to the users of software it has become a means to restrict usage. Many projects that use the GPL choose to dual license their software and sell commercial licenses to those who can't use GPLed libraries in their products.

Tags :

Openfire Enterprise is becoming Open Source

The most complete Java-based XMPP server

The enterprise edition of the popular Java-based XMPP server Openfire is becoming Open Source. This also includes the Flex-based IM client Sparkweb.

As Matt points out the the clustering functionality in the enterprise edition will not be made Open Source: "Part of the reason for this is that it uses a third-party commercial library for clustering."
Nevertheless, due to the moduluar design of Openfire, the use of Coherence can quite easily be substituted by a free alternative like Terracotta.

This is really great news. Thanks to Jive for their commitment to the community.

Update 2008-04-07

Dombiak Gaston has followed up with a roadmap describing the two phases of the transition. The first phase with the majority of features is scheduled be finished by April, 27th.

Tags :