[ovirt-devel] Moving oVirt JavaScript application stack forward (short and long term)

Vojtech Szocs vszocs at redhat.com
Wed Nov 9 19:49:39 UTC 2016


Hello,

regarding oVirt JavaScript applications (like Dashboard), we'd like
to reach a point where we'll be using latest Node.js LTS runtime and
lock down all dependency versions, resulting in reproducible builds.

Please note that both Node.js and all JS dependencies are needed only
when building oVirt JavaScript applications & corresponding packages.

The near future items are following:

1, patch ovirt-engine-{nodejs,nodejs-modules} to use Node.js v6 (LTS),
   refer to https://github.com/nodejs/LTS for more details

2, patch ovirt-engine-nodejs-modules to use Node.js runtime provided
   by ovirt-engine-nodejs - revive https://gerrit.ovirt.org/#/c/59898/

3, lock down dependency versions in ovirt-engine-nodejs-modules
   via npm-shrinkwrap - finalize https://gerrit.ovirt.org/#/c/61957/

>From this point, we can proceed with long term items:

4, consolidate dependencies across projects:

   4a, update react-patternfly:
       - https://github.com/jtomasek/react-patternfly/
       - add common PatternFly components (e.g. out of Dashboard)

   4b, update ovirt-ui-components:
       - https://github.com/matobet/ovirt-ui-components/
       - depend on react-patternfly
       - add oVirt specific components (e.g. out of Dashboard)

   4c, update ovirt-engine-nodejs-modules:
       - depend on ovirt-ui-components

   4d, update all oVirt JS projects, like Dashboard
       - depend on ovirt-ui-components

   *all* oVirt JS projects should depend on ovirt-ui-components.

   react-patternfly exists separately to support non-oVirt cases.

5, develop "showcase" webapp as part of react-patternfly repo to
   ensure it's well-aligned with PatternFly look'n'feel

   - it would be nice to host the "showcase" webapp somewhere

6, address common problems that arise from using npm-shrinkwrap

   - deterministic (predictable) dependency resolution
   - checksum verification to ensure integrity of dependencies
   - dependency de-duplication (avoid multiple versions)

   Yarn [1][2] addresses all problems mentioned above. It's still
   in early development, so I'd wait a bit and see how it matures.

   Note: ManageIQ UI is already using Yarn [3].

   [1] https://code.facebook.com/posts/1840075619545360
   [2] https://github.com/yarnpkg/yarn
   [3] https://github.com/ManageIQ/manageiq-ui-service/pull/296/files

Feel free to share your thoughts or concerns.

Regards,
Vojtech



More information about the Devel mailing list