What is most valuable?
The ability to control web content within a structured version system and its unique capability to receive extension modules and plugins. The extension power makes this software a great ally for building new systems.
I usually see this platform as a Swiss Army Knife for building new features. I also see it as a starting point for assembling new systems from modules and apps, just like we do when playing with Lego blocks.
Support for Java 8 and OSGi are also extremely attractive capabilities.
How has it helped my organization?
Information and content are the key elements. Using Liferay to control our web content allows us to have a centralized information hub.
We can discuss, contribute, and review pieces of content as it evolves with time. All this occurs while the platform enforces the correct workflow, and allows web content, media, and file distribution in a consistent manner.
The content management features are simple to understand and make collaboration easy.
On the development side, the platform acts as a great framework which makes engineering processes and projects faster.
Lots of common features are implemented in Liferay. Implementing new functionality might just be a matter of organizing services provided by the platform.
Building specific logic is also trivial. The ability to receive OSGi modules is natural in this version.
What needs improvement?
Although it has been improving, I cannot shake the feeling that it was released too early. It came with several problems, and new releases came extremely fast to correct the previous ones. Now, in its GA3, the differences are noticeable between the general release and the master source code.
The correction of issues take too long to arrive, unless a license is acquired, which seems a bit odd for an open-source project.
The bottom line is that it is too early for general adoption, as a GA4 is clearly needed.
A second issue would be around documentation. For some time, this has been one of my main complaints around Liferay. The learning curve seems to be high as the platform is immense and extremely flexible. Thus, it is only natural that some complexity is involved in using it to its full potential.
However, the documentation for developers is incomplete and there is a strong reliance on GitHub.
The previous version even had a great book to support developers. We can see that the development documentation in the web site is evolving, but it still has formatting issues and has a long way to go to reflect the greatness of the project.
Any developer familiar with the platform and with its source knows that there is a hidden power that is still to be documented.
For how long have I used the solution?
I have used this since its release in 2016 (Liferay 7), and for two additional years in its previous versions.
I have ten years of experience as a developer using the frameworks that come with Liferay and several of the supporting libraries.
What do I think about the stability of the solution?
We had some stability issues, but only in upgrades. However, I would say this is changing as the product matures.
Liferay 7 is changing a lot with time, and they put a lot of effort to avoid breaking code.
The last big change, from Liferay 6 to 7, was properly documented and migration was simple enough. Minor upgrades have caused issues though.
Nevertheless, I need to say that most issues I encountered were already corrected and I have never found stability problems in running servers.
What do I think about the scalability of the solution?
We have not had any scalability issues.
How are customer service and support?
Support definitely takes their time in looking into issues and helping users. Information about bugs is publicly available and engineers can see how the bug fixing process is going. The community is active in several open channels where advice can be found for development and for administration alike.
Which solution did I use previously and why did I switch?
Liferay brings with it several frameworks that are beautifully organized. (Hibernate, Struts, Spring.) That is why this is tricky to explain.
As an engineer, the ability to use the frameworks you like is a great plus. But after a while, one may notice that using Liferay, as an intermediary for some services, is much simpler. They do a great job in providing extension points and tools like the Blade CLI and Service Builder.
The simplicity of the overall development process is a major advantage that comes with consistency. The learning curve is quite high, but I would say it is definitely worth it.
How was the initial setup?
The setup is pretty simple and it is aligned with practices we see every day in web systems deployment.
What's my experience with pricing, setup cost, and licensing?
There are options around its licenses that are worth some evaluation, especially if you don’t have experts available to provide you with the due support.
Liferay can be quite complicated under all those great features and some projects require extensive customization that demands some degree of expertise.
However, if the project is simple and only composed by assembling and organizing apps, it might not be worth paying for a license, except in those cases when access to restricted apps is needed.
Which other solutions did I evaluate?
Several content management platforms are available in the market, such as Adobe and, in simpler scenarios, WordPress.
However, being open source is a great advantage if you are looking for extending the existing solution and customizing it for specific scenarios.
Furthermore, the solid stack of frameworks and modern UI technologies is something unique in Liferay.
Being based on OSGi and supporting extension through OSGi is almost too good to be true. With OSGi, we are even able to make hot deployable modules and patches without any significant effort while controlling the dependencies with Gradle in a way that only OSGi can support.
What other advice do I have?
If your goal is to develop a new system, start small and use the knowledge you already have to leverage the frameworks and libraries that come with Liferay.
Modularity is the key with Liferay, and small modules will build big systems. If you come from old versions, with time, start transitioning to OSGi instead of the old Liferay plugins. OSGi offers a greater flexibility with a consistency that is not seen in the old formats.
If you are new to Liferay, I would advise going straight to the modular approach and learn Liferay’s conventions to apply them to your code. They are simple and will help you when you have to compare your solution to some similar functionality in Liferay.
If you are looking for information, I would recommend having a copy of the book "Liferay in Action". It is definitely outdated, but the concepts are needed to understand Liferay.
If you are new to modularity, I would recommend the book "Java Application Architecture: Modularity Patterns with Examples Using OSGi".
Disclosure: I am a real user, and this review is based on my own experience and opinions.
I rewrote this review for GA4, as it came with lots of improvements we were waiting for, I hope it is useful for those who love Liferay as much as I do.
www.e-systems.tech