Migrate RevMan Web to a supported development platform

Owner: Rasmus Moustgaard

Updated Spetember 2022.

What business value does this roadmap item create? / Which problem is this roadmap item trying to solve?

The current platform, AngularJS, has end of life June 30, 2021 after having existed for about 10 years. It is not going to disappear from one day to another, and RevMan Web will still be working in the foreseeable future. However, if we don't keep the platform up to date, RevMan Web will eventually end up outdated in the same way as Archie. It will gradually become more difficult to hire and maintain developers, it will become more difficult to find 3rd party components for new developments, and incompatibilities with modern browsers will start to appear. In the long run the investment in RevMan Web will be lost and Cochrane will have to start over.

The next generation of the Angular platform, which is now called Angular without the JS, was released in 2016 - a few years after the development on RevMan Web started. The latest version at the time of writing is Angular 11, which was released 11 November 2020. Unfortunately an update from AngularJS to Angular requires a substantial amount of work since the platforms are quite different and the RevMan Web code base is large. The longer we wait, the bigger the task will become. However, once the main update is done, further updates to Angular 12, 13 etc. will only require little work.

How can the value delivered be measured?

We are using the latest version of Angular instead of AngularJS. The updated version of RevMan Web should work at least as well as the old version.

Which assumptions are made in relation to the value?

  • That Cochrane wishes to continue maintaining RevMan Web.
  • That Angular is the right option. Other popular platforms, including React and Vue, could be investigated. Note that Porto is developed using Angular, so essentially this choice has already been made.

What are the dependencies for fulfilling the business value?

  • We cannot use the CKEditor 4.7.3 with Angular (done, with the move the CKEditor 5).
  • Capacity in the team: we need at least one more developer (not done, the team is still looking for one more developer)
  • Team needs more knowledge about moving from AngularJS to Angular (partly done)
  • Preparatory work that can be done in AngularJS (steps copied from https://angular.io/guide/upgrade):
    • Follow the AngularJS Style Guide (done)
    • Using a Module Loader (done, with the introduction of WebPack and move to Angular CLI)
    • Migrating to TypeScript (done)
    • Using Component Directives (done)
  • Updating the UI from Bootstrap/Homer to AngularJS Material would potentially make the later transition to Angular Material a lot easier (not done).
  • Ensure that replacements for essential 3rd party components exist for the Angular platform (not done).

Even if we never updated to Angular, the AngularJS code base would benefit from the preparatory work and the update of the UI, because it would modernise the code and make it easier to develop and maintain.

What are the risks related to this roadmap item?

  • We underestimate the work.
  • Unexpected incompatibilities.

Open questions

  • Should we look at other options than Angular? At this point, no.
  • Which automated tests can we transfer from AngularJS to Angular? Units tests need reworking. E2E tests could probably still be used.
  • What level of unit test coverage do we want in Angular? Not discussed.
  • Can we/should we use ngUpgrade to run AngularJS and Angular side by side (see https://angular.io/guide/upgrade-performance) or do we want to move away from AngularJS completely? The former. We have completed the move to a hybrid application where AngularJS and Angular live side by side.

What is included in the scope of this solution?

  • Conversion of all code (model classes, services, components and helpers) to Angular. Progress September 2022: We have converted all model classes and services to Angular.
  • Remake of UI using Angular Material and Angular compatible templates.
  • Conversion of existing unit tests to work with Angular.

T Key Summary Assignee Reporter P Status Resolution Created Updated Due
Loading...
Refresh

Follow-up tasks to make this item ready

  • Start hiring process (ongoing).
  • Discuss upgrade options and other open questions (done).
  • Estimate work on components (done).

How much time do we estimate to implement this roadmap item?


This is a guesstimate made by the Review Production Team based on known information about the roadmap item and the capacity of the team at the time of estimation (June 2020).

Need at least 1 quarter of dedicated work. [to be updated]