I’ve been using Elixir and Phoenix recently. Although the syntax looks fine to me (and Phoenix is amazing), there’s some truth to the imperative, clean syntax of C#, which I’ve been using for many years.
And that’s why I immediately fell in love with Gleam. The language is a joy to write and read. The community and Maintainer (Louis Pilfold) have a fantastic mindset, trying to make an ecosystem that develops and enjoys using.
My primary programming is working on web applications and web APIs. I know that Gleam has Wisp, but I’m not sure whether it is as stable and feature-rich as Phoenix. For those who have tried both, what’s your opinion about Wisp? Is it an okay alternative to Phoenix?
I would personally describe this as gravitating towards imperative syntax, it’s not even about type safety in a lot of cases, especially since typechecking by the compiler improves with every new elixir release. This is completely understandable and it takes some time to shift the mindset.
Obviously not, for example only liveview that is a newer part of phoenix took 6 years of active development to get to version 1.0 .
From the looks of it wisp behaves a lot in the manner which Plug does, but overall doesn’t try to build an entire framework on top of that, so it’s up to you to build the abstractions you need.
Wisp is definitely lower-level, which I personally enjoy, but have in mind that you’ll have to roll your own stuff for various tasks. Of course that equation will become more and more favorable with time for Wisp as its ecosystem and community matures.
I would recommend you to check Lustre if you haven’t yet.
Being able to share types between the backend and the frontend, and using the same code in a SPA, a web component or a server component is a game changer IMO.
Using gleam for both domain logic and the frontend is nuts. LiveView is an amazing library but it really lacks when it comes to pure frontend interactivity.
I envison a future in which complex domain logic is written in gleam and embedded in Phoenix apps, sometimes also using gleam for the frontend (with the guarantees that shared types bring).