With Solr and Lucene 3.6 soon becoming the last featureful 3.x release and the release of 4.0 slowly drawing near, I thought it might be useful just to recap what all the various versions mean to you the user and why two very different versions are soon going to be made available.
A Brief History of Time
Prior to Solr and Lucene 3.1 and the merger of the developments of both projects, both were developed using single paths. This meant that all development was done on trunk and all releases were made from trunk. Although a simple development model, there were two major problems:
- In order to establish a stable codebase to create a release from, trunk would need to go into a code freeze for several weeks. For fast paced projects like Solr and Lucene, this only served to stall development and frustrate contributors and users alike.
- With backwards compatibility between minor versions compulsory, it was near impossible for large backwards incompatible, but highly desirable, changes to be made. Any large scale changes generally got bogged down in attempts to provide a compatibility layer. One way round this was to make regular major version releases. However this often meant major releases were often rushed before they were ready in order to get some popular feature out to users.
The end result was that releases were very infrequent, sometimes rushed, and generally a mess.
With the merger of the development of Solr and Lucene and a reassessment of the development model, it was decided that the projects should follow other open source projects and use a multi-path model consisting of stable and development versions. Trunk at the stage was branched to create the stable 3.x branch and trunk was changed to be the development 4.x version.
This decision has had the following benefits:
- Development of the 3.x branch could focus on stable backwards compatible changes and bug fixes.
- Since 3.x is stable, releases could be made much more regularly and without having to stop the more wild development of trunk.
- Development of trunk can be unimpeded by stable releases and doesn’t need to focus on maintaining backwards compatibility.
So what does this mean for you the user?
Solr and Lucene 3.6 will be the last major release from the stable 3.x branch. This means it will be the last major release backwards compatible with all previous 3.x versions. Any future 3.x release will be merely a bug fix release and given how successful the 3.x versions have been, I doubt there will be many if any of those. Sometime after the release of 3.6, trunk will be branched to create the new stable 4.x branch and a stable 4.0 release will be made. Trunk will then move onto being the next development version 5.x.
Consequently, if you’re using a 3.x version I recommend that you take the opportunity to upgrade the 3.6 when it is released so that you can make the most of being able to just drop the libraries into your application. If however you’re either using a pre 3.x version and are looking to upgrade or using a 3.x version but needing one or many of the amazing new features currently in trunk, I recommend that you hold on a little while longer until 4.0 becomes the new stable release.
The change in development model has meant that Solr and Lucene are available to make more regular and clean releases. With the end of the 3.x era drawing near, users will soon be able to get their hands on the arguably more powerful 4.x stable releases. In preparation for the (hopefully) soon release of 4.0, I will be giving you an introduction to some of its new and exciting features.
If you’ve already begun upgrading to 4.x, share with us your experiences. Or if you’re thinking of upgrading and need some assistance, drop us a line and we’ll see how we can be of assistance.