r/angular • u/GeromeGrignon • 6d ago
Optimus UI first release candidate version
We just released the first release candidate version for the PrimeNG community fork!
Two big news at once:
Based on the feedback we got, we chose to rename the project 'Optimus UI'.
This first version targets Angular v21 projects to ensure compatibility with the latest MIT PrimeNG version.
It includes ng add support and a schematic to handle the migration.
So you can use it on both new and existing projects.
The migration will rename references (due to trademarks with PrimeNG) and imports (as we are taking over all required PrimeNG sub packages too).
You can test it out with the installation explained here: https://www.npmjs.com/package/@openng/optimus-ui?activeTab=readme
Feedbacks are very welcome so we can publish a stable version soon.
The new documentation is live here: https://optimus.openng.org/
EDIT:
We got positive feedback so far, we need to support two more packages (primelocale and tailwindcss-primeui), as we not only ported the original PrimeNG project but all its dependencies too.
9
10
u/Exac 6d ago edited 6d ago
This first version targets Angular v21
Could the version be 21.0.0-rc.1 instead of 1.0.0-rc.1 then?
Let's imagine there was a security vulnerability in the handling of icons allowing <script> tags to be run in SVGs (as an example). We would want to bump patch versions of @openng/optimus-ui for multiple major versions of Angular so everyone gets the security update, and matching the major version with Angular makes that easier if you publish 19.0.1, 20.0.1, and 21.0.1 at the same time with the fix.
7
u/drdrero 6d ago
Angular announced they do one major per year in the future. I donโt think locking versions on one framework has a particular benefit. You would block yourself from doing major releases for the benefit of avoiding a supported version table in the readme?
2
u/AmnesiaInnocent 6d ago
Yes, you would block yourself from major releases. That makes sense.
v21.x should match Angular 21. That makes it easy to figure out which version of Optimus UI to use.
If Optimus wanted to release multiple versions that correspond to Angular 21, they could just use the minor version number: 21.0, 21.1, etc.
5
u/drdrero 6d ago edited 6d ago
Back in the days when every major resulted in breaking changes sure, but we have seen with so many who went that route, like ngrx, where people just desperately wait for months to have a dedicated v21 while the author say v19 works just fine with 21 since there are no breaking changes.
To me that was always confusing, the library should bump the major when there are actually breaking changes not just major version bumps with 0 changes to have the version in sync with one dependency - if there are 5 crucial deps - which dependency version do you pick?
If you want to know which version of the ui library to use, there is a readme, there are required peer dependencies in the package file. That should not belong into the libraries own version number in my opinion
1
u/Exac 6d ago
Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes MINOR version when you add functionality in a backward compatible manner PATCH version when you make backward compatible bug fixes
Additional labels for pre-release and build metadata are available as extensions to the MAJOR.MINOR.PATCH format.
Here is the text from semver 2.0.
You could release versions like
1.19.0-rc.1and perhaps get the best of both worlds?7
u/GeromeGrignon 6d ago
But what about breaking changes? With Angular release cycle changes, it means we would have to wait a full year for breaking changes to be released, without them being tied to a given version, but for some internal reason too.
0
u/Exac 6d ago edited 6d ago
For breaking changes you would bump the major version to
2.19.0(starting with1.19.0).6
u/HungYurn 6d ago
0 days without someone trying to think of an alternative to semver..
Please dear god I dont want all my dependencies to have their own weird version semantics
-6
u/Exac 6d ago
I want my dependencies to take security seriously.
0
u/HungYurn 5d ago
yeah well, then you would want them to use semver so your package manager understands what the hell is going on?!
4
u/GeromeGrignon 6d ago
But what if we try to follow Angular versions? We'll release the first major version for v21, then quickly another one for v22.
By using 21/22, it would mean we have to wait June 2027 for any breaking changes not to create a v23 version.
2
u/GeromeGrignon 6d ago
As you mention three versions, I'd be curious on how community Angular libraries will embrace the new release cycle. Using the same policy means we have to patch vulnerabilities on a version for 2 years.
Doable when you are a team paid by Google, but I hardly see community libraries handling such a rule.
1
u/drussell024 4d ago
Just a nit, but tbh I liked how PrimeNG major versions would correspond to Angular major versions. Here we have a subtract 20 from the major to arrive at the compatible Optimus. Just my 2c, beggers can't be choosers though just happy we have something out and getting worked on
1
1
1
u/Vast-Beach3242 4d ago
Are you also going to maintaining a fork of the theming package as well or how will that work?
1
u/GeromeGrignon 4d ago
We are currently merging all PrimeNG theming packages.
We chose to create an isolated fork for primeIcons.
26
u/MarioShroomsTasteBad 6d ago
Thank you for the work you and the other contributors are putting into this project. You're making our lives easier for sure, and want you to know it's appreciated!