23 ms·
I moved from PHP/Laravel to Elixir/Phoenix about two years ago and I can't imagine using anything else these days.
by stanmancan 3y ago
I moved from PHP/Laravel to Elixir/Phoenix about two years ago and I can't imagine using anything else these days.
- stanislavb 3y agoDo you have experience with Ruby on Rails? I've built apps both with Elixir/Phoenix and with Rails. Yes, the Elixir/Phoenix stack is amazing and is definitely superior over Rails in several ways; however, with regards to Bootstrapping and releasing a real-world app/business (web based), Rails is still the king.
- dartos 3y agoWhat makes you say that? I think, once you learn both frameworks, they’re just about as productive as the other.
- throwawaymaths 3y agomaybe in the "writing code" dimension. I would much much rather maintain code in elixir.
- cpursley 3y agoI just don't understand this, the ergonomics are about the same. Phoenix was inspired by Rails and Elixir by Ruby, after all. I've also worked with both and I'd say it's a match in terms of productivity.
- dmix 3y agoI love Elixir and the productivity is probably real, but one big thing I've learned as a senior dev was reflected well in a recent HN post > Take the road most documented https://news.ycombinator.com/item?id=39165328 https://news.ycombinator.com/item?id=39165328 Rails likely has an advantage of documentation given its age and all the major mature businesses using it like Shopify. A lot of newer languages have documentation/blog posts that's heavily centered around starting out with a new project vs all the bugs with existing Github issues/stackoverflows and design considerations of the framework and 3rd party plugins being fully fleshed out.
- alberth 3y ago> Take the road most documented I don’t necessarily disagree with that statement. But it can also lead you to use Java or C, because they are also massively documented & mature. And I don’t imagine that’s the desired outcome either.
- gregors 3y agoWhen Shopify adopted Rails is was quite new technology though...So they literally didn't follow this advice. In fact the CEO was part of the Rails core team. Here's a talk in 2008 by the CEO about their caching issues https://www.infoq.com/presentations/lutke-rockstar-memcaching/ https://www.infoq.com/presentations/lutke-rockstar-memcachin...
- dmix 3y agoI've been using Rails since 2007 I'm familiar with what it was like back then. I'm talking about 2024. I have a large tolerance for risk, and I'd be a risk taker for my own new projects or for a very early startup. Or if a tech offered something significantly new and better than the alternatives, like Rails did in 2007 vs PHP. But now that I'm older, and I value getting things in front of customers with the minimum amount of bullshit. I'm not seeking out learning some fun tech purely for highs of a good fancy new language/framework (I've done that enough). I'd rather not chase down framework bugs. I want to google a bug and see 5 other people already had it.
- thibaut_barrere 3y agoI also started using Rails a long time ago (circa 2005), and I have become older too (46 years now). But I must say I think there is not much bullshit, and quite a bit of stability, in what Elixir / Phoenix bring to the table (saying this after maintaining a production French state-owned service running on top of Elixir for more than 3 years now). There are also not that much framework bugs, the level of retro-compatibility is huge compared to Ruby in particular (except for LiveView which is still a bit young, but the rest is ... quite stellar). I quite find that I could use exactly your last paragraph to describe _why_ I wouldn't pick anything else than Elixir these days. The TCO is great, the maintenance story is remarkably stable at the moment etc. Googling works decently well now with Elixir too, the community is mostly fairly responsive.
- gregors 3y agoI've got in-depth experience with many Rails apps and quite a few Phoenix apps (and many other stacks). I used to agree with your opinion, though I think Rails no longer holds a massive edge. Phoenix is now just as effective at releasing real-world products especially run-of-the-mill web apps. And when things get complex after a bit of time (usually due to business logic evolving) - much more effective. The place where I feel Rails still holds an edge is the massive amount of gems available, but hex is absolutely catching up and I'm only running into missing packages/libraries when I'm doing "weirder" things these days. The ecosystem continues to evolve for the better. On the other hand Phoenix destroys Rails in any realtime scenario. Maybe those edge cases matter to your particular project then again maybe not.
- ericb 3y ago> On the other hand Phoenix destroys Rails in any realtime scenario. The Rails realtime story is going to be radically improved in Rails 8! I've been using the Turbo beta, and it is magical. With 3 lines of code each, I made my index page, and show page live, and real-time updating. I think Phoenix has something similar--perhaps it was the inspiration?
- karmajunkie 3y agoyeah, elixir is still going to destroy it at runtime. the concurrent story is even more important with the features you’re talking about and especially in that segment, it’s not even close.
- cultofmetatron 3y ago> I think Phoenix has something similar/ phoenix's channels (for realtime) is the only multiclustered websocket solution with long polling fallback that I know of that will scale to thousands of users out of the box. My startup uses websockets and its never been a bottleneck vs the headaches I've deal with doing similar stuff in nodejs. its just an absolute unit for doing realtime. And now they have liveview which takes that and builds on it to accomplish magic. rails has done great things but comparing it to phoenix on realtime stuff is like comparing a moped to an f16
- unethical_ban 3y agoWhat took you away from Louisville (laravel as my tts heard it)?
- stanmancan 3y agoI used it for 5ish years and never felt like I really understood the framework; there way too much magic going on. What forced the switch was using Livewire; cool idea but horrible performance, poor documentation, no support, and constant rewrites. Knowing it was based off of Live View I looked into that and there was no going back.
- TheCapeGreek 3y agoLivewire was rewritten once for V2 -> V3 iirc? I'm glad you found something that works better for you, but I wouldn't say that not learning to use the framework (which you don't need to understand the internals for to use) automatically makes the other option better. It just means Elixir clicked for you better.
- stanmancan 3y agoLaravel really forces you to do things the "Laravel way" and as soon as you try to step outside that box you run into tons of headaches along the way, and upgrades become painful. I haven't found that to be the case with Phoenix at all. There's also lots of "magic" going in in Laravel behind the scenes and it can be pretty painful to try and figure out exactly why something happened. Livewire was a mess over all. It had a lot of breaking changes along the way and performance was terrible for anything but the most basic tasks. The support was poor; the docs were alright at best, the screencasts were paid, and Caleb never showed his face in his own Discord, which was troublesome because there weren't enough people using it for the community to support each other. The weird bugs and behaviour were all over the place and the errors you received when you ran into one of them did nothing to help you track it down. I guess to sum up my feelings: PHP was fine but Elixir did click better. Laravel is a black box and Phoenix is objectively a better framework.
- pier25 3y agoHow does LiveView compare to LiveWire?
- stanmancan 3y agoLive View is SO much better it’s not even close. It’s faster, more reliable, easier to use, way less weird gotchas.
- pier25 3y agoSince you left Laravel about two years ago you only used LiveWire v1, correct? I haven't used it myself but apparently v3 solved plenty of weird gotchas.
- stanmancan 3y agoThe last Laravel project I used was using Livewire V2. Not all of the problems were strictly "Livewire" problems, but also just the limitations of PHP. Having to send the state back and forward and rehydrate the state on the server on every request is just slow no matter what you do. Live View has an active process for every connected user that maintains state so you only have to send tiny little diff's back and forward.
- pier25 3y agoDo LiveWire responses get so big that the size becomes an issue? Haven't used either LiveWire or LiveViews seriously. Honestly trying to understand what you're saying. I was under the impression LiveWire only sent the data for the component being updated so realistically the main issue is latency (just as with LiveViews). I mean, sending 0.1kB vs 1kB is 10x worse but in practice this doesn't seem like it would have a real impact in UX for the majority of use cases.
- stanmancan 3y agoLivewire has to send the full state of the request for the component. Search results is a good example where the state can start to get big. Once it hits the server re-hydrates the models. They are also HTTP requests which have some handshaking. Live View only sends the diffs excuse the state lives in an active process on the server, and it uses web sockets which is much faster than http requests.