There was a discussion at Manchester Sprint 2022-10 about possibly replacing AngularJS as the technology implementing BuildKit and FormBuilder. It was seeded with ideas Tim and Coleman developed in conversation with Joe: https://gist.github.com/totten/5c34e3885a4fe7002f990e09395b4294
Some notable points in the discussion:
-
the storage format for searches from SearchKit is JSON
-
the storage format for forms from FormBuilder is mainly xml with a sprinkling of Angular that could be refactored out
-
the code that renders a search is pretty simple to reimplement (~1-2 weeks)
-
the code to render a form is relatively simple to reimplement
-
the code to build a Search would require significant effort to reimplement
-
the code to build a form would require significant effort to reimplement
-
Tim discussed loader/linker alternatives and some of their pros and cons (see https://gist.github.com/totten/5c34e3885a4fe7002f990e09395b4294 )
-
browser based approaches are currently at early adopter stage: risks are some technical challenges will be hard and perhaps insurmountable, it never becomes mainstream
-
bundlers are at late majority adoption stage
-
several shops/people have built frontend using various javascript frameworks including
- React frontend for decoupled Drupal/Civi backend
- vue.js
- svelte
-
A couple of developers experienced with Angular indicated very strong opposition to it.
-
one consideration in choosing between alternatives is migration effort
-
a core team member opined that it would be less work to move from AngularJS to Angular than to something else like React, but others were not convinced.
-
a planning effort by Tim and Coleman could help evaluate and potentially narrow ranges of the issues, risks, effort
-
adding experts in the technologies / frameworks to the evaluation and planning efforts would assist in avoiding errors and improving results
-
the migration effort for alternatives is not most important consideration. Where the migration leaves the community is more important. Differences in the sizes of the developer communities and the sentiment of developers towards tools will affect the number and quality of new developers to the community. Different tools will be easier and harder to learn initially and to use. AngularJS has an outstandingly negative reputation. React has consistently had the largest community and good sentiment.