Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rewrite frontend in something else #68

Open
wsv-accidis opened this issue Oct 30, 2023 · 5 comments
Open

Rewrite frontend in something else #68

wsv-accidis opened this issue Oct 30, 2023 · 5 comments
Labels
gotland Only applies to Gotland project low-priority sjoslaget Only applies to Sjöslaget project technical-debt

Comments

@wsv-accidis
Copy link
Owner

wsv-accidis commented Oct 30, 2023

In true Google fashion, they abandoned support for AngularDart except for their own internal use. They said they would publish occasional updates externally but then walked back on that too. The community maintained fork has barely a twitch of life left in it and it's probably a PITA to migrate from AngularDart 6.x that I'm using now.

Thankfully there is no real issue with just keeping the current frontend forever. It's on the last major release which was intended to be LTS, it works well enough and there is no risk of security issues since all the important stuff happens on the backend and is running off .NET. And regardless of your opinion of Microsoft, they almost never abandon their developers.

However, writing a new frontend could be a fun exercise. What is the new hotness these days?

Caveat: Not Javascript. Just not going to happen.

@wsv-accidis wsv-accidis added low-priority gotland Only applies to Gotland project sjoslaget Only applies to Sjöslaget project technical-debt labels Oct 30, 2023
@wsv-accidis wsv-accidis changed the title Rewrite frontend in something that isn't AngularDart Rewrite frontend in something else Oct 30, 2023
@wsv-volvo
Copy link
Collaborator

Flutter Web

It's still Dart (good). More of an app framework than a web framework (also good). Apparently can use WebGL for rendering, very cool. This seems to be what AngularDart refugees are flocking to.

@wsv-volvo
Copy link
Collaborator

wsv-volvo commented Oct 31, 2023

Blazor or Razor Pages

It's C# and .NET but doesn't seem to be super popular. It's basically C# on WebAssembly. Might be more used in the corporate world. It's Microsoft so it will be supported forever. Blazor seems to be the more modern choice.

There is a good article comparing Blazor and Razor here.

@wsv-volvo
Copy link
Collaborator

AngularDart 8

Let's keep an eye out on their roadmap and see if it sputters back to life. At the time of this writing, there are spurious commits by only two developers.

@wsv-volvo
Copy link
Collaborator

wsv-volvo commented Oct 31, 2023

Egui or Yew or something

Why not use this as an excuse to learn Rust? Egui and Yew seem to be the most popular where Yew is more traditional HTML-with-code and egui goes full 60 fps immediate mode canvas. Is that practical for what I want to do? Who cares, it looks like fun.

Egui first impressions

Egui is in a very heavy state of development and breaking changes are to be expected, the author is very clear about this. It's also effectively a one-guy project, sponsored by his current employer, so the long term support is uncertain. Rust is very verbose compared to more high-level languages. These factors will slow down development and add friction. The documentation is very incomplete and there are few guides or tutorials online, so finding solutions to problems can take time.

On the plus side, the project has come very far already and has an active community. The tooling is very good and it was easy to get started. Rust is fun and building an immediate mode GUI is a refreshing change. While there are bugs and a long list of open issues, they do seem to be handled competently. The widget library is surprisingly rich already, and should have everything I need. The longer term goals of the project seem well aligned with my needs, as well.

Egui (and Rust) conclusions

As interesting as it was to explore a bit of Rust, it is no longer a candidate for this particular hobby project. Rust in general is far too verbose and the memory management approach takes far too much hand-holding; I'm sure it makes perfect sense for performance intensive work where you do not want the overhead of a GC, but for a line-of-business app, it's a hindrance.

Despite showing a lot of promise and being interesting to try, Egui is still very immature and would require extensive customization to reach the level of UX fidelity that I'm after (using Material Design as a reference). Even building a quick demo, I found bugs as well as areas where Egui is not offering simple or straightforward solutions to things that would be simple and straightforward in, say, Android or HTML.

To summarize, while interesting to explore, going with Egui or any other Rust-based framework would add considerable effort to the project and would feel like a regression in DX compared to what I already have with AngularDart.

@wsv-volvo
Copy link
Collaborator

wsv-volvo commented Oct 31, 2023

Phoenix or anything that uses custom hosting

Anything that can't be deployed to a traditional host serving static files is out, so we need something that doesn't need to be hosted in its own custom Docker container.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
gotland Only applies to Gotland project low-priority sjoslaget Only applies to Sjöslaget project technical-debt
Projects
None yet
Development

No branches or pull requests

2 participants