Originally I started out to update our next-gen-gui/README.md documentation. It mentions stuff from before the tech-ui was renamed to next-gen-gui and imported into the main repo. Its recommended install location contradicts what the build script actually does, though I think that should be fixed in the build script. And it points to an ancient repo for downloads of built versions.
Which brought me to the revelation that there are no automated builds of this code being done at all in our infrastructure. The original repo at https://github.com/kastelo/syncthing-tech-ui/
was moved to https://github.com/syncthing/tech-ui/, which in turn was archived after importing it into the main repo. The last built release can still be downloaded there at least. But the better thing to do would be integrating it into our main repo build actions. Maybe not by passing --with-next-gen-gui
on every build, but having a separate job to build the ZIP file at least, for separate downloading.
So I started trying to build it myself, from the v1.28.0 sources. Which kind of worked, but gave a lot of deprecation and vulnerability warnings. Therefore I expect the CI build environment to choke on this pretty soon if we tried to include this build step. So the first step should be getting the ânewâ GUI into a better shape than the old one, regarding updated dependencies and keeping up with the pace of Angular and other componentsâ development. It currently uses Angular 9, while version 18 is the latest. Which probably means it will never be a basis to attract new Web developers for further GUI development or modernization.
So after a furious round of endless ng update ...
and npm update --force ...
calls, I managed to supposedly migrate the dependencies to more modern versions, namely Angular 18. But some deps I had to remove completely from package.json
because they led to dependency conflicts. So in the end, the code does not build and I have little to no idea what the error messages mean or what all these dependencies actually do. Frankly, this whole Node.js world looks like the worst of all dependency hells to me, with so many packages and transitive dependencies accumulating even for the simplest development projects. I really wonder how professional JavaScript and Web developers can handle such things, with all dependencies being moving targets at a fast pace, and deprecations / incompatibilities being part of usual business.
Iâd like to find some help with this from someone more knowledgeable in the Node.js world, as I have roughly zero experience with it. The end goal would be providing up-to-date builds of the next-gen-gui from our GitHub CI.
It might even be beneficial to move it out into a separate repo again, and only integrating built GUI code as part of the main Syncthing build. I always wonder how we never need to âbuildâ anything related to AngularJS with the old GUI, but maybe that older framework just doesnât need it?
Thanks for any pointers or opinions on a way forward.