ui5-tooling icon indicating copy to clipboard operation
ui5-tooling copied to clipboard

[DRAFT][ROADMAP] Specification Version 3.0 // UI5 Tooling 3.0

Open RandomByte opened this issue 4 years ago • 1 comments

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 specVersion 2.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 .library file
  • [ ] 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.json for 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)
    • Pass a ui5-logger log instance with the name of the extension for its use
  • [ ] 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)

RandomByte avatar Mar 04 '21 10:03 RandomByte

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.

pubmikeb avatar Dec 01 '22 16:12 pubmikeb

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 avatar Dec 02 '22 09:12 RandomByte

@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.

pubmikeb avatar Dec 02 '22 09:12 pubmikeb

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.

RandomByte avatar Dec 22 '22 15:12 RandomByte

Implemented with https://github.com/SAP/ui5-cli/releases/tag/v3.0.0

flovogt avatar Feb 10 '23 11:02 flovogt