Explaining the new versioning scheme for Liferay 6

Along with all the functional and architectural improvements of Liferay 6, we've also tried to improve our release process based on the feedback that we've received from the community and customers during the last releases.

Let's start with the basics, here are some simple rules to interpret the meaning of a version:

  • Versions consist of a three digit number. For example, 6.0.2. These numbers represent: Major.Minor.Maintenance
  • A change in the third digit (e.g, 6.0.5 to 6.0.6) is a maintenance release (aka Service Pack). This means that:
    • Each maintenance release provides higher security / reliability.
    • Customizations are generally safe but we recommend doing a review.
    • No new features are included (although the first few maintenance releases can contain some changes to existing features based on the feedback received). There were some exceptions to this rule in some 5.2 maintenance releases but we've decided to be much more strict for Liferay 6.
    • These rules are relaxed when the minor or major release is still in beta quality.
  • A change to the second digit (e.g., 6.0 to 6.1) is a minor release:
    • This will include new features plus bug fixes from prior releases.
    • Customizations may be affected when installing. Customers should leverage the upgrade tools and documentation.
  • A change in the first digit (e.g., 6.x to 7.x) is a major release:
    • This will include major changes in functionality or add high demand functionality.
    • This may include architectural changes, changes to API's (as part of deprecation process) and may change internal schema.

Now lets get into some details of what we've improved and why we've done it. First, it's worth mentioning that one of the goals for the release of Liferay 6 was to make it the community edition release with highest quality ever.

A second motivation we had is that in the past we had noticed that people were installing in production releases that didn't have enough quality to do so. For example, I've seen installations with Liferay 5.2.0 or 5.2.1. Also we've had plenty of requests from community members who volunteered to help doing beta testing.

So we've decided that with Liferay 6 each version will have a surname that specifies the expected quality of that release. The third version number is usually hidden, but it's still visible through the logs and administration UIs. Here is the evolution of versions:

  1. Preview and Beta (6 Preview 1, Beta 1, 6 Beta 2, ...): There can be zero or more of these types within each minor or major release. These releases are meant for testing and to provide us feedback through the beta testing category in the forums. There can be changes in features between beta releases but in general they won't be major.
  2. Release Candidates (6 RC1, 6 RC2): There can be 0, 1 or more of these right after the beta releases. This are more stable and are meant for those that prefer to wait a little to test the release.
  3. General Availability (6 GA1, 6 GA2, ....): There can be 1 or more of these releases. A General Availability version is released when our engineering team and the QA team based on our own testing and the feedback from the beta testers decide that the release has good quality and can be of general use for the community. Of course this doesn't mean that it's bug free so we keep an eye on the community since at this point many more people start using the version and find new bugs (usually minor). When this happens we fix the issues and release a new GA version. Several GA versions may be made available until the engineering team moves towards releasing an EE release.
  4. Service Packs (6 SP1, 6 SP2, ...): These are maintenance releases will keep coming out for 4 years after the original release date. These releases are only available to customers who have an update service that comes with every Enterprise Edition. To ensure this we have a team dedicated to keep testing and doing corrective improvements to this release to ensure the highest quality. All fixes done in the service packs are also done in svn and will be part also of the next minor or major release. This ensures that all the community benefits from the fact that we can have more people working on QA as more customers buy our Enterprise Edition services.

The following diagram represents this in a graphic form:

So you might be asking yourself, which version should I use? what if I was using a previous version? Will the update to a new maintenance release cost a lot? Here are some comments and recommendations to answer all these questions.

  • You are very welcome to use any preview, beta or release candidate version. In fact that's why they exist so that as many people as possible start using it and provide us their feedback. However, we do not recommend using beta releases in production or even during development if you have tight deadlines (since you may find road blocks).
  • You should always update to the latest maintainance release available for the minor or major version you are using. This means that at the time of writing you should be using Liferay 6 GA 2, but if we later decide to release GA 3, our recommendation is that you switch to it since it includes fixes for other bugs found by other Liferay users.
  • Updating to a new maintenance release should be a process that requires little effort from the first GA forward. That is, you should be able to upgrade from Liferay 6 GA 1 to any future Liferay 6 GA or any Liferay 6 SP within hours or days in the worst case scenarios.
  • To ensure that the updates are as easy as possible (and also ease upgrades to new minor or major versions) use the best development practices when extending Liferay. I'll write a blog post (or maybe a whitepaper) with more details but at the very least you should use plugins instead of the extension environment (or ext plugin) whenever possible. And always use APIs that are meant to be public (specially when using ext). Also avoid overriding JSPs that have a lot of logic or keep a very tight control of them (and review them when updating for changes to the originals).
  • Plugins that work in any GA or SP version will work in any later maintenance version. That is, a plugin developed for Liferay 6 GA1 will also work in Liferay 6 GA  or Liferay 6 SP3, or .... This is something that we've tried to guarantee in the past but hasn't always been possible. Starting with Liferay 6 we have a testing process in place to make sure this is really guaranteed.
  • Consider investing in the updates and support services of the Enterprise Edition. This will benefit you two-fold, first because you'll be getting quality services that will add value to your Liferay installation and second because it will help evolve the product with new features that you will be able to benefit from.

And that's about it. This new process along with all the work from the QA team and the great help from beta testing volunteers all around the world (thanks again!) makes me feel that this is certainly the best CE release of Liferay ever, and not only in terms of functionality :)

PS:I've created a wiki page with a summary of this post for future reference: Liferay Versioning Policy

Blogs
"[...]makes me feel that this is certainly the best CE release of Liferay ever" ++
New versioning is not enough. We (as in community) need to know release dates for any new version (no matter is it minor or major). I can't find any up-to-date article with roadmap for next release so I don't know should I wait a little bit longer with our projects or should I start developing them now an just apply patches from JIRA. Remember that the less project we done the less feedback and contributions will Liferay get from us emoticon
Hi Simon,

We release a new minor or major CE release every 12 months. This information can be found several places on our website, but here as well: http://www.liferay.com/downloads/liferay-portal/overview. As you may be aware, our Liferay 6 CE GA release was just made available, which means our next minor release will not be due out for probably another 12 months. We'll be posting up details of our next release in a Roadmap wiki page as soon as things have settled down a bit for this current 6 release.
Brian,

Problem is in word "probably" and "approximately". For us and our clients business there is a big difference between "it will be shipped in 1 month" and "it will be shipped in 3 months" and we need to know exact date. Look at roadmap articles on wiki (http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/RoadMap). You will see that previous shipping date for LR 6.0 CE was "2/16/2010". It was changed to "7/16/2010" FIVE months later and twelve days after the release.

Just a small change in your information process but big impact on how much we can involve ourselves in Liferay through community, testing and code development.
Simon,

We do our best to give an estimate on when we believe a release is going to be next made available. We are working to provide better estimates to our EE customers and the community. Thanks for your feedback.
Great to hear that Brian.

Also important is how fast you will inform about any change in dates.

Cheers,
Simon
Hey Simon,

Thanks for the feedback. We are completely aware that we need to keep improving in having more predictable release dates. In fact we've improved several issues that made us slip dates in the past but at the same time new challenges appeared that made those small successes invisible to the outside. In any case be sure that we are aware of this request and we will work hard to make it happen.

Also note that as a community member you can also help in several ways. One of them is participate in the beta testing process to help spot bugs in new releases so that we can get to GA status as soon as possible.
Great Explanations with cool combination's ....Thanks a lot
[...] A mai napon megjelent cégünk legfontosabb szoftverének legújabb változata: a Liferay Portal 6.1 CE! (Letöltés) (Lássuk!) A Liferay termékfejlesztő- és mérnökcsapata szoros együttműködésben a projekt... [...] Read More
[...] De acuerdo con el esquema de versiones de Liferay establecido en 2010, está versión se denominará Liferay 6.1 CE GA1 y el número de versión interno será el 6.1.0 (la primera versión de la 6.1). Las... [...] Read More
[...] A mai napon megjelent cégünk legfontosabb szoftverének legújabb változata: a Liferay Portal 6.1 CE! (Letöltés) (Lássuk!) A Liferay termékfejlesztő- és mérnökcsapata szoros együttműködésben a projekt... [...] Read More
[...] Following Liferay's versioning scheme established in 2010, this release is Liferay 6.1 CE GA1. The internal version number is6.1.0 (i.e. the first release of 6.1). Future CE releases of 6.1 will be... [...] Read More
[...] Liferay Portal 6.1 CE GA2 Release  (http://www.liferay.com/web/james.falkner/blog/-/blogs/14850038). Here is the evolution of versions... [...] Read More