Liferay DEVCON: Top 5 Innovaties
Introductie
Afgelopen week was het weer tijd voor DEVCON. De jaarlijkse Liferay developer conferentie, trots gesponsord door Finalist.
Ook dit jaar was het weer online, wat altijd een dubbel gevoel geeft. Aan de ene kant is het voor een introverte developer heel fijn als alles te volgen is vanaf je eigen bank. Maar aan de andere kant mis je toch het spektakel van alle ontwikkelaars in een grote conferentiezaal, de connectie met Liferay en de real-life gesprekken met de deelnemers.
Gelukkig kan ik er altijd op rekenen dat ik tijdens DEVCON veel zal leren. Elk jaar zijn er interessante sessies waarin Liferay medewerkers vertellen wat de focus en roadmap zal zijn voor de komende periode. Graag deel ik mijn ervaring van het evenement en geef ik antwoord op de vraag: wat waren de meest interessante ontwikkelingen die gepresenteerd werden tijdens Liferay DEVCON 2022?
1. Elke week nieuwe functionaliteit
Toen Liferay DXP op basis van het OSGGi framework werd gelanceerd waren de beloftes groot: een snelle lichtgewicht omgeving met veel modulariteit en de mogelijkheid om snelle updates te leveren. Waar een aantal jaren terug nog over werd gedroomd is nu de realiteit.
Voor Liferay DXP 7.4 komt elke week een nieuwe update van Liferay. Sterker nog, dit gebeurt al! Sinds eind vorig jaar zijn er al 19 updates geweest voor DXP 7.4. In vorige Liferay-versies zat je elke maand te wachten op fixpacks die zich voornamelijk richten op het oplossen van bugs. Bij DXP 7.4 krijg je daarentegen elke week, naast bugfixes, gave nieuwe functionaliteit.
Liferay heeft gelukkig ook nagedacht over achterwaartse compatibiliteit. Nieuwe functionaliteiten staan standaard uit en kunnen naar keuze aangezet worden.
Dit betekent een omslag voor developers en het beheer van Liferay omgevingen.
Bij een volledige ingerichte ontwikkelstraat zal er meer tijd gestopt moeten worden in het bijhouden van de laatste versie op alle omgevingen. Ook betekent dit dat het toevoegen van veel maatwerkcode in een Liferay omgeving extra risico's met zich meebrengt. Immers, elke update kan een incompatibiliteit veroorzaken bij de maatwerkcode die ontwikkeld is voor een eerdere versie.
Dit is een mooie brug naar de nummer 2 ontwikkeling.
2. Minder code-aanpassingen
In de oudere Liferay versies was het vaak nodig om via maatwerkcode Liferay aan te passen om aan de wensen en doelen van de klant te voldoen. Liferay biedt al heel lang de mogelijkheid om de Liferay code uit te breiden. Dit kon door gebruik te maken van de "extension points" die Liferay zelf aanbiedt. Hoewel deze mogelijkheid nog steeds bestaat (en bij sommige klanten nog steeds nodig is), biedt Liferay meer mogelijkheden om Liferay te kunnen aanpassen vanuit de interface i.p.v. vanuit maatwerkcode.
Liferay DXP biedt vanuit zichzelf al veel functionaliteit, een rijk CMS, uitgebreide zoekfunctionaliteit en veel standaard widgets. Dit is niet alleen functionaliteit om een publieke website te maken, maar bijvoorbeeld ook functionaliteit voor een webshop, een self-service portaal en digitale werkomgevingen. Met de juiste kennis van html, css, javascript en/of Freemarker is het mogelijk om zelf via de interface nog functionaliteit en vormgeving toe te voegen.
Het is duidelijk dat Liferay met deze aanpak op het juiste pad zit. Dit past volledig bij het doel van Liferay om organisaties met één 'Digital Experience platform' in staat te stellen snel en met weinig moeite een volledige digitale ervaring te bieden voor hun klanten. De maatwerkmogelijkheden vanuit de interface worden de komende tijd nog meer uitgebreid. Het zwaartepunt van het 'op maat maken' van een Liferay implementatie ligt dus steeds meer bij het ontwikkelen via de interface dan via 'deployable' maatwerkcode.
Maar wat nou als er iets gemaakt moet worden wat verder gaat dan content? Een applicatie waarin data-invoer van gebruikers en businesslogica verwerkt moeten worden bijvoorbeeld. De derde interessante ontwikkeling kan hierbij helpen.
3. Low-code
Als we kijken naar wat Liferay als low-code ontwikkelplatform biedt, kunnen we eigenlijk concluderen dat Liferay al een tijd voldoet aan de definitie:
Een low-code ontwikkelplatform biedt een ontwikkelomgeving die wordt gebruikt om applicatiesoftware te maken via een grafische gebruikersinterface
Bron: Wikipedia - Low-code development platform
In Liferay DXP 7.4 zijn de low-code mogelijkheden nog meer uitgebreid door middel van 'Liferay objects'. Met Liferay objects is het mogelijk om applicaties te bouwen zonder code te schrijven. Je kunt een volledige datamodel toevoegen via de interface (met complexe relaties met andere datamodellen). Dit datamodel krijgt dan een eigen plek in de database en wordt volledig geïntegreerd met Liferay-functionaliteit. Liferay objects is namelijk gebouwd op, en geïntegreerd met, de kernframeworks van Liferay. Het is om die reden mogelijk om workflow-processen te maken, te integreren met de sterke zoekfunctionaliteit en het uitgebreide rollen & rechten-systeem.
Alles wat in Liferay mogelijk is met bestaande datamodellen is dus ook mogelijk met je eigen gemaakte 'object'. Ook is het mogelijk om aangepaste lay-outs en weergaven te maken voor invoerschermen als ook voor weergaveschermen. Liferay gaat hierin mee in de verwachting dat steeds meer organisaties applicaties gaan bouwen via low-code functionaliteit.
Als kers op de taart wordt het zelfgemaakte datamodel toegevoegd aan de headless api van Liferay. Het is hierdoor mogelijk om een eigen applicatie te ontwikkelen in een front-end framework zoals React of Next.js. Daarbij stimuleert Liferay het ontwikkelen van deze apps zonder deployment.
4. Liferay-agnostisch ontwikkelen
In Liferay DXP werd het mogelijk om naast de welbekende portlets ook nieuwe widgets te ontwikkelen. Dit gaat door middel van een zelfgekozen front-end framework. Denk hierbij aan populaire frameworks zoals React, Vue.js of Angular. Het nadeel hiervan was dat dit nog in een vorm gegoten moest worden zodat het geïntegreerd kon worden in het bestaande OSGi framework en herkend werd als Liferay widget.
In Liferay 7.4 is iets nieuws geïntroduceerd: Remote apps. Met remote apps is het mogelijk om los van Liferay een applicatie te kunnen ontwikkelen en hosten. Vervolgens kan deze applicatie via de interface geregistreerd worden in Liferay en kan als een standaard widget worden gebruikt op het platform. Deze widgets kunnen gebruik maken van Liferay 'utilities' om data uit Liferay te halen/ in te voeren. Ze kunnen ook gebruik maken van authenticatie in Liferay en communiceren met andere widgets op de pagina. Remote apps bieden dus de mogelijkheid om los van de liferay-development-cyclus te ontwikkelen.
Het is mogelijk om verschillende micro-frontends te ontwikkelen in een zelfgekozen front-end framework, zonder dat een ontwikkelaar kennis hoeft te hebben van Liferay. Hierbij heb je de keuze een eigen API aan te roepen of toch de API's van Liferay gebruiken. De API's van Liferay zijn gebaseerd op een bekende open standaard (OpenAPI) en zijn aan te roepen via de populaire open-source querytaal graphQL. Doordat deze bekende standaarden gebruikt worden is het verbinden met de API door ontwikkelaars erg makkelijk. Er is hierbij natuurlijk nog wel kennis nodig van Liferay om de juiste API's aan te roepen met de juiste parameters.
5. Hernieuwde focus op marketplace
De laatste interessante ontwikkeling die ik graag wil benoemen is de hernieuwde focus op de Liferay Marketplace. Liferay erkent dat de marketplace niet meer zo actief is. Het plan is de marketplace nieuw leven in te blazen en de Liferay community te stimuleren om via de marketplace weer mooie dingen beschikbaar te maken voor andere gebruikers.
Ook Liferay zelf is van plan om extra content en modules beschikbaar te maken via de marketplace. Een voorbeeld is een Salesforce connector for Liferay commerce om je webshop-voorraad automatisch te koppelen met Salesforce. Een ander voorbeeld is site-initializers zodat je een self-service portaal snel op kan zetten.
Conclusie
Als we kijken naar de ontwikkelingen van Liferay DXP kunnen we een belangrijke conclusie trekken: Waar je in eerdere versies veel tijd kwijt was om de Liferay code aan te passen, kan je tegenwoordig sneller (en met minder frustratie) Liferay toe spitsen op de wensen van de klant.
Ontwikkelen voor Liferay betekent steeds meer een combinatie van het slim gebruik maken van de standaardfunctionaliteiten en Liferay agnostisch maatwerk. Het klassieke model van deploybare modules zal steeds minder nodig zijn, maatwerk zal eerder een "headless" variant zijn waarbij de maatwerkapplicaties niet deployed worden op Liferay en dus in een losse development cyclus komen.
Liferay wordt elke week flexibeler, krachtiger en rijker aan functionaliteit.