Krzysztof Gołębiowski 3 Years Ago Hi David, Thanks for your blog post, it's great to know what is Liferay frontend strategy for the next version. I think it's great you don't push for Soy + Metal.js any more. These are very good technologies indeed, but nowadays it seems that "market adoption" is much more important for developers than any technical argument (even if very rational). I wouldn't like to end up with pushing people to use some technology they don't know and don't like, as I used to do with YUI/AUI (and finally someone always included jQuery :D ). Please sign in to reply. Reply as... Cancel David Truong Krzysztof Gołębiowski 3 Years Ago - Edited Krysztof, Great hearing from you again, We've seen that even within our own internal engineering teams. It is much easier to hire experienced developers who is familiar with React.js than Soy.... and it is much easier to get a young developer to join our company knowing they will be learning React.js than Soy. Also we gain much greater value as a product creating new features for Liferay DXP than building new dev tools (as much fun as it can be to sometimes)... Cheers, Dave Please sign in to reply. Reply as... Cancel
David Truong Krzysztof Gołębiowski 3 Years Ago - Edited Krysztof, Great hearing from you again, We've seen that even within our own internal engineering teams. It is much easier to hire experienced developers who is familiar with React.js than Soy.... and it is much easier to get a young developer to join our company knowing they will be learning React.js than Soy. Also we gain much greater value as a product creating new features for Liferay DXP than building new dev tools (as much fun as it can be to sometimes)... Cheers, Dave Please sign in to reply. Reply as... Cancel
Lee Jordan 3 Years Ago One of the barriers to front end devs with Liferay is deprecation. By the time you've understood and got something working it's gone. For that reason I tried to avoid getting tangled in anything other than Lexicon. Choose a technology and stick with it. Stability is vastly underrated. We can't form a community of helpers if you google a Liferay problem and the solution is already deprecated! Please sign in to reply. Reply as... Cancel David Truong Lee Jordan 3 Years Ago Lee You are absolutely correct. Unfortunately everything in tech has depreciation and frontend dev seems to be hit the hardest. It feels like everyday there is a new "in" framework and many of us get caught up in the hype. Internally we are trying to switch our mindsets to determine how we can prevent our end users from getting caught up in these waves. One new feature we are working on is the idea of a style guide instead of having to create a new theme. Where as themes are subjected to following along with the underlying tech, Bootstrap, style guides will be focused on giving total developer control without losing the value of providing proper branding, look, and feel a company. Thanks, Dave Please sign in to reply. Reply as... Cancel
David Truong Lee Jordan 3 Years Ago Lee You are absolutely correct. Unfortunately everything in tech has depreciation and frontend dev seems to be hit the hardest. It feels like everyday there is a new "in" framework and many of us get caught up in the hype. Internally we are trying to switch our mindsets to determine how we can prevent our end users from getting caught up in these waves. One new feature we are working on is the idea of a style guide instead of having to create a new theme. Where as themes are subjected to following along with the underlying tech, Bootstrap, style guides will be focused on giving total developer control without losing the value of providing proper branding, look, and feel a company. Thanks, Dave Please sign in to reply. Reply as... Cancel
Fernando Fernandez 3 Years Ago - Edited Thanks for the excellent post, David. I wonder if you can clarify one point, though: you start by writing "one change we've managed to make was to migrate off Soy + Metal.js and fully onto React.js" but, later, you write "Internally we’ve settled on the use MVCPortlet for simple UIs". Can you explain what was converted to React and what wasn't? Thanks! Please sign in to reply. Reply as... Cancel David Truong Fernando Fernandez 3 Years Ago - Edited Hi Fernando, The answer isn't super easy to answer with words so instead I will show you an example with one of our newest applications App Builder: https://github.com/liferay/liferay-portal/tree/master/modules/apps/app-builder/app-builder-web/src/main/resources/META-INF/resources If you look at the different jsps, it is a standard MVCPortlet and the layout is created using JSPs. But throughout the app we sprinkle react components in areas we feel we would benefit. I hope this helps provide a better understanding, Dave Please sign in to reply. Reply as... Cancel
David Truong Fernando Fernandez 3 Years Ago - Edited Hi Fernando, The answer isn't super easy to answer with words so instead I will show you an example with one of our newest applications App Builder: https://github.com/liferay/liferay-portal/tree/master/modules/apps/app-builder/app-builder-web/src/main/resources/META-INF/resources If you look at the different jsps, it is a standard MVCPortlet and the layout is created using JSPs. But throughout the app we sprinkle react components in areas we feel we would benefit. I hope this helps provide a better understanding, Dave Please sign in to reply. Reply as... Cancel
Jack Bakker 3 Years Ago - Edited I am hot on the trail of using web components and LitElement to develop decoupled front-end js apps, while kicking the tires of Liferay's GraphQL api (very exciting). OIDC /w PKCE is taking shape too. open-wc tooling /w rollup is very useful. I am surprised there isn't more discussion on the future of web components and lit-element here in the Liferay community. I hope to share more about 'stuff' I am building (PoC currently), and you can find me lurking mostly in Slack random channel. Please sign in to reply. Reply as... Cancel David Truong Jack Bakker 3 Years Ago - Edited Hey Jack, I've never heard of LitElement and will need to check it out! As for web components, I've played with it a bit to see if we could use it for encapsulation but I think our teams have found we often need a full blown react component from their work but maybe we haven't scratched the full potential of web components. I believe GraphQL is essential for the next generation of Liferay development so I am also very excited that we are finally providing support for it. I've definitely seen you around in the Slack channels and look forward to interacting with you more! Thanks, Dave Please sign in to reply. Reply as... Cancel
David Truong Jack Bakker 3 Years Ago - Edited Hey Jack, I've never heard of LitElement and will need to check it out! As for web components, I've played with it a bit to see if we could use it for encapsulation but I think our teams have found we often need a full blown react component from their work but maybe we haven't scratched the full potential of web components. I believe GraphQL is essential for the next generation of Liferay development so I am also very excited that we are finally providing support for it. I've definitely seen you around in the Slack channels and look forward to interacting with you more! Thanks, Dave Please sign in to reply. Reply as... Cancel
Nader Jafari 3 Years Ago - Edited Hi David Is there any solution in liferay to improve SEO problems in Guest pages when we use React or other JS frameworks? In pure React apps we can use SSR but in liferay SSR is not available. And another Question is that does liferay Core portlets ,UI components and Control panel will switch to JS frameworks like React? As you know better than me JSP and JSF is dead in java applications. Please sign in to reply. Reply as... Cancel David Truong Nader Jafari 3 Years Ago Hi Nader, We are still looking at different possibilities to achieve SSR and it is on the roadmap to try and tackle this issue. One idea I had recently was to use something like prerender.io to output something during compile time. Another idea we had was to use either GraalVM or j2v8 to achieve SSR during runtime. Let me know if you have attempted anything that might be viable. Thanks, Dave Please sign in to reply. Reply as... Cancel
David Truong Nader Jafari 3 Years Ago Hi Nader, We are still looking at different possibilities to achieve SSR and it is on the roadmap to try and tackle this issue. One idea I had recently was to use something like prerender.io to output something during compile time. Another idea we had was to use either GraalVM or j2v8 to achieve SSR during runtime. Let me know if you have attempted anything that might be viable. Thanks, Dave Please sign in to reply. Reply as... Cancel
Yogesh Sharma 3 Years Ago - Edited Hi David, Very information details, though wanted to understand your view on multi-instance portlet and handling of view in reach. With recent uses of AppBuilder table view and placing two table view portlet in one page, both portlets start rendering same result if sorting/searching being performed in one. Both portlets do not have namespace specific parameters. Please sign in to reply. Reply as... Cancel Matheus Xavier Xavier Yogesh Sharma 2 Years Ago Hi Yogesh, I'm App Builder's Product Manager and I would like to thank you for pointing out this issue to us. I have already checked with our engineers and this bug was already mapped in our backlog and we'll try fix this by the GA4 of 7.3. Please sign in to reply. Reply as... Cancel
Matheus Xavier Xavier Yogesh Sharma 2 Years Ago Hi Yogesh, I'm App Builder's Product Manager and I would like to thank you for pointing out this issue to us. I have already checked with our engineers and this bug was already mapped in our backlog and we'll try fix this by the GA4 of 7.3. Please sign in to reply. Reply as... Cancel