ui5-tooling
ui5-tooling copied to clipboard
[DRAFT][ROADMAP] Specification Version 3.0 // UI5 Tooling 3.0
This is a draft, likely to contain more topics than we will actually be able to work on. We appreciate your feedback.
UI5 Tooling 3.0
UI5 Tooling 3.0 might become the official, feature complete successor of grunt-openui5. This would allow us to deprecate grunt-openui5.
🔮 Update: Starting January 2022, UI5 Tooling 3.0 development is done on dedicated next branches in the UI5 Tooling repositories.
Pre-releases are available via npm and tagged as next. For example: npm install @ui5/cli@next. See also: https://sap.github.io/ui5-tooling/updates/migrate-v3/
Breaking changes
- [x] Drop support for Node.js Version < 16
- Version 15 is already EOL
- Go with Node 16.13.2, the latest LTS release as of today (January 25, 2022)
- Upgrade npm lockfiles to version 2
- [x] Require projects to use
specVersion2.0 or later- This would allow us to fully rely on the schema validation and to remove additional validation code from various places
- This also eases the implementation of RFC 0009
- We attempt to upgrade old specVersions automatically. If a specVersion 1.0 project passes the validation for specVersion 2, it is used as-is.
- [x] Implement [RFC] 0009 UI5 Project Refactoring (https://github.com/SAP/ui5-tooling/pull/501)
- Depending on how far we get it, this might incompatibly change the signatures of many UI5 Tooling modules
- [ ] Deprecate, remove or noop the manifestBundler task
- [ ] ui5-fs: Clone resource on write (https://github.com/SAP/ui5-fs/pull/259)
- [ ] ui5-builder: jsdoc exit code 1 should fail the build (see https://github.com/SAP/ui5-builder/pull/617#pullrequestreview-684499820)
Features
- [x] Source Maps for bundles (https://github.com/SAP/ui5-tooling/issues/472)
- ~Maybe already in a 2.x release, depending on compatibility of the changes~
- [ ] New type
component(https://github.com/SAP/ui5-tooling/issues/45)- ~Somewhat likely to already be part of a 2.x release~
- [ ] Support for flat (i.e. no namespace directory structure) library projects (https://github.com/SAP/ui5-tooling/issues/505)
- [ ] Support for flat build output of the root project (https://github.com/SAP/ui5-tooling/issues/507)
- [x] ~Option to only build certain dependencies (https://github.com/SAP/ui5-tooling/issues/494)~ (Already released with v2.12.0)
- [ ] Allow theme build and version info generation for libraries without
.libraryfile - [ ] CDN proxy or adapter as an alternative to downloading UI5 dependencies in environments with slow I/O
- Possible a server-only setting or CLI flag
- Would also pose a workaround for https://github.com/SAP/ui5-tooling/issues/265
- [ ] [RFC] 0006 Local Dependency Resolution (https://github.com/SAP/ui5-tooling/pull/157)
- [x] Upgrade Espree to support ES2021 syntax features (see https://github.com/SAP/ui5-builder/pull/615 / https://github.com/SAP/ui5-builder/pull/692)
Specification Version 3.0
Breaking changes
- [ ] Require a
manifest.jsonfor components and libraries
Features
- [ ] Enhance custom task helper
taskUtil:- Allow access to Projects and Project Graph API from RFC 0009
- Via Projects, access to metadata (like the project version) as well as root resources (like
package.json) would be possible while still using the ui5-fs abstraction layer (https://github.com/SAP/ui5-tooling/issues/360)
- Via Projects, access to metadata (like the project version) as well as root resources (like
- Pass a ui5-logger
loginstance with the name of the extension for its use
- Allow access to Projects and Project Graph API from RFC 0009
- [ ] New extension
deployment-task(name to be decided) (https://github.com/SAP/ui5-tooling/issues/490) - [ ] New project type
project-expansion(name to be decided) which allows to add resources from a different module to an existing project (https://github.com/SAP/ui5-tooling/issues/500)- For example the resources of a polyfill module will then become part of an application project's resources (i.e. included in preloads and with the same flattening on build/serve)
- [ ] bundleOptions changes (https://sap.github.io/ui5-tooling/pages/Configuration/#properties)
- New option 'sourceMap', defaults to
true(see https://github.com/SAP/ui5-builder/pull/695) - Default of option 'optimize' changed to
true(API change is done via https://github.com/SAP/ui5-builder/pull/685)
- New option 'sourceMap', defaults to
Regarding:
Drop support for Node.js Version < 16
As of now, Node.js 18.12.1 is the current LTS, while Node.js 16.x is relatively old version with end of life already in September 2023, and in coming April there will be already Node.js 20.x.
Perhaps, does it's worth dropping support of Node.js version < 18 with the upcoming major release of UI5 Tooling 3.0? Less legacy, less constraints, easier to maintain.
Thank you for your input Mike! That part of the roadmap was slightly outdated, so I updated it with our latest decisions:
- [x] Drop support for Node.js Version < 16
- Do not support Node 14, due to lack of features and upcoming end-of-life in April 2023
- Do not support Node 15 as it is already EOL
- Support Node 16.18.0, the latest maintenance release for 16.x as of October 2022
- Do not support Node 17 as it is already EOL
- Support Node 18.0.0 and all later versions
- Upgrade npm lockfiles to version 2
We think this could be a good balance. While Node 16 will be EOL in September 2023, Node 18 was only released earlier this year and might not have the same adoption yet. By requiring a recent patch-level for Node 16 though, we have an almost identical set of features available: https://node.green/
Nevertheless, more time has past now. So we'll pick up your input and discuss it in the team 👍 Thanks!
@RandomByte, thanks a lot for the detailed explanation, Merlin!
Just as an additional input for the upcoming discussion:
If UI5 Tooling 3.0 release is planned somewhere in the end of Q1 2023, then by that time the adoption level of Node.js 18.x should be already mature enough.
We are currently in the process of publishing a first Release Candidate for UI5 Tooling v3.
As of the latest discussions, we stick to a minimum Node.js requirement of version 16.18.0, which contains the necessary support for chaining loaders (https://nodejs.org/api/esm.html#loaders), which is required by our test setup.
Unfortunately, SAP Business Application Studio currently uses Node v16.16.0. This means that the latest UI5 Tooling v3 pre-releases can not be used in this environment. We are already in contact with the responsible team and hope to resolve this before the final release of UI5 Tooling v3. Based on the outcome of that discussion, we might even lift the final Node.js version requirement.
Implemented with https://github.com/SAP/ui5-cli/releases/tag/v3.0.0