Liferay 7 Milestone 5 - Get involved while it’s hot

Here at Liferay we don’t stop and we just took out of the oven the fifth Milestone of the upcoming Liferay 7 release. If the previous milestone marked the beginning of the Community Expedition program which had a great success, with this one we would like to encourage even more people to get involved and provide their ideas as we get closer to the beta cycle. Just follow the link above, become an explorer and choose the areas you would like to try out.


This milestone includes +210 stories finished since M4 was released. This entry will explore some of the most relevants features and improvements.


One of our main areas of focus has once again been in modularization. This effort is turning Liferay from being a monolithic web application to a set of highly coordinated modules (think, microservices within a JVM). As we make progress we can’t avoid being excited by the opportunities this is going to bring to Liferay and anyone using it.


This milestone release already contains 150+ modules, which can be updated independently and deployed and undeployed on their own (as long as their declared dependencies are met). When you download the milestone, check the osgi directory within ${liferay.home}. You can undeploy features directly just by moving a JAR file out of there (which will cause all other modules depending on it to stop nicely as well). You should also try doing a “telnet localhost 11311” when Liferay is running to connect to the GOGO shell which allows performing all short of management operations on the modules and its components. This is one of the really nice things of following standards, even though we are building nice UI tools for the most common operations, we can also rely on 3rd party tools for advanced operations as well :)


Web Content Management

Most of the work regarding Liferay’s WCM capabilities for this milestone have been under the hood, with many portlets and transversal features extracted out as modules. Some examples of this are asset publisher, recycle bin, content search, web content admin, search, site templates, page templates, roles selector, sites admin and sites settings. But the team wasn’t happy just modularizing, they also threw in improvements in configurability, added friendly URLs to all portlets and put a big emphasis on exploratory testing and test automation for each new module to ensure the highest quality.


The team taking care of WCM has big plans to improve the experience for building modern web sites so you will also see UI improvements here and there as the underlying improvements start to surface.


Staging is one of the most powerful features of Liferay, used in some of the largest sites out there, but it’s also by its very nature one of the most complex ones. The main focus for Liferay 7 is being in making it rock solid even in the most extreme scenarios.

Related to this, we have realized that because there are currently so many options when using Staging (even if we reduced them for 6.2), it’s sometimes easy to get in trouble. Because of this we have started a process to simplify the UI for the most common operation. The first step is related to the “Publish to live” operation. From now on, the default screen will just offer one option, which publishes *all* changes since the last publication to live.


Basic Publication.png

If you are wondering where the previously existing options went, don’t worry, they are still available under an “Advanced Publication” option:



These UIs are still not final, but already show our goal of provide an interface that guides the user towards making the right decisions at all times. when using staging.


Alloy Editor


If you have already enjoyed the wonders of AlloyEditor in previous milestones you will be happy with the new version (0.2.6) included in Milestone 5. And if you haven’t seen it yet prepare to be blown away by a much better experience in online authoring.


This version includes some under the hood changes (it’s now powered by React, removing the YUI3 dependency and has a new Ocean skin), but my favorite improvement is the really nice support for creating and managing tables. You can use it to build tables of any type, including complex combination of cell merging, adding or removing rows/columns on the fly, etc.


Click on the table icon, select the number of rows and columns and get an initial table inserted which you can then continue manipulating with inline options to adapt it to your needs:

Another feature that I really like is being able to style the table (for example using the styles that Bootstrap or some defined in a custom theme). That’s not available in this milestone yet (it just lacks some configuration) but you can check it out in AlloyEditor’s site.

You can however already see the support for configurable styles in any regular text. Just double click on any text and you will see a dropdown similar to this:

Blogs_-_Liferay (1).jpg

But that’s not all, here are some other really cool new features of this version:

  • Automatic link detection

  • Adding images directly from the camera

  • Image redimension

  • New developer APIs:

    • Selections have been exposed via AlloyEditor.Selections.

    • On adding buttons and toolbars, the developers have full access to the same API which the internal buttons and toolbars use.


Oh, and I almost forgot, we have also put in place a mechanism that allows configuring AlloyEditor (and other WYSIWYG editors) just by dropping a module with the desired configuration. Documentation is coming soon, but it’s easy as pie :)

Collaboration Suite

Several improvements were done to the Knowledge Base portlet which is now being used to host Liferay’s official documentation within the Liferay Developer Network. The most relevant is the ability to import many articles at once with a ZIP file. These improvements are being made available through a new version of the Marketplace App that was just released, although you can also deploy it from sources into Milestone 5.


The user experience of the comments system has been improved by leveraging Alloy Editor which lets the user focus on what he wants to write while visualizing the final style. Comments now automatically detect links and support bold and italics for advanced users (who know the key combination to apply them). Here is what the user sees at the top of all comments:


And here is the result after typing a few words:


In addition to this, the two previous visualization styles (tree and flat) for the list of comments have been merged into a single one that displays nested conversations but deals with scalability in an smart way.

A final cool feature that has been in the oven for a while is the ability to mention other registered users using the typical @ sign which will start an autocomplete dialog. When there is a mention within a comment it will be automatically translated to a link to the user profile of the mentioned user. This behavior is extensible (has been implemented as a module) so that you can choose different sources of users or change where the link points to.

Web Services

A new infrastructure has been included in this milestone that simplifies building SOAP based or RESTful web services on top of Liferay with strong security and using the latest JavaEE standards such as JAX-RS and JAX-WS.


Wrapping up

Of course there are many more small improvements that will make Liferay 7 the most extensible and easy to develop on top of ever. Get involved now to see it for yourself by downloading Milestone 5 now from sourceforge. And remember that you can get directly in touch with the developers of each of the features listed above (and many more) by enrolling in the Liferay 7 Community Expedition and providing your feedback there.


Jorge Ferrer & Esther Sanz


Wow, what a time to be alive!

<iframe width="420" height="315" src="" frameborder="0" allowfullscreen></iframe>
I want to join Liferay 7 Communinity Expedition, but I get 'The app is currently unreachable.' while going to signup forum.
Hey Dhrutika - I think it was a temporary problem with the Google app platform on which the signup form is hosted. It should be working now!