
Moving on from Rails and What’s Next - Perceptes
https://blog.seantheprogrammer.com/moving-on-from-rails-and-whats-next
======
freehunter
I’ve seen a number of people move from Rails to Rust... is that really a
common move? Seems like they’re very different and designed for very different
things. Are people commonly building web applications in Rust? I know it’s
possible but C++ has web frameworks too and that seems like a more apt
comparison.

I guess I’m just baffled by the number of people on here that I see pointing
to Rust as the next project they tackle after Rails when I don’t see them
overlapping at all.

~~~
cocochanel
Correct, they are for completely different purposes. I have the feeling that a
lot of people (particularly the bloggers/more vocal types) jump into newer
languages for no other reason than to position themselves as experts in said
language/stack, right when it's getting more popular. I've seen this happen
with Ruby/Rails, JavaScript/Node, and now Rust. In this case, it would have
made a lot more sense to move to something like Elixir/Phoenix.

~~~
inferiorhuman
I cut my teeth on Ruby and Rails, I've screwed around with Phoenix, and I'm
currently infatuated with Rust. Earlier on I thought that, yeah, Rust is a
great replacement for C and not something want to write a web app in. So,
sure, I've got a bunch of little doodads written in Rust (mostly CLI tools).
Now? The fluff I've written in Elixir is getting ported to Rust.

The Rust tooling and community are just that good. I'd rather have to work on
some extra verbosity and maybe even maintain my own helper library in Rust
than deal with with Elixir/Phoenix at this point. The number one reason is
that Elixir deployments are nothing short of a nightmare. I've found the
community not particularly helpful or knowledgeable about how things work (and
given how many moving pieces are in an Elixir deployment, and how brittle
Elixir deployments are, this is a terrible thing). And you're definitely not
going to write CLI tools in Elixir (it straight doesn't work with escript in
the first place).

Compiling down into a single "static" binary like Rust (and Go) do by default
is a huge win for things like this. The quick startup time of a Rust or Go app
compared to Ruby or anything JVM based is great for rapid iteration and
testing. The tooling around Rust is, in general, fantastic. Being that much of
a pleasure to use really makes up for how inappropriate it is to use Rust for
most high level web app things.

Phoenix had a lot of promise, but these days I'd much rather go back to Rails
or Django (with an eye towards how to migrate to a compiled language) if I
needed to churn something out quickly.

~~~
uxcolumbo
I'm currently looking into learning Elixir, but your comment sprinkled some
doubts on that.

If deployment was easier in the Elixir world, would you have stuck with it?

~~~
robotmay
Honestly Elixir has been one of the most enjoyable learning experiences I've
had in years. Deployment is fine, but there are a few different things to
consider (because you can do some really cool stuff using BEAM). But you can
just chuck it on Heroku if you want something easy.

I also like Rust a lot, but I find Elixir pretty much frictionless to work in.
Rust is basically you vs the compiler for quite a while. I've been using Rust
for IoT work but I vastly prefer Elixir for web. And since I've been enjoying
it so much I'm gonna start looking at Nerves ([https://github.com/nerves-
project/nerves](https://github.com/nerves-project/nerves)) for IoT work as
well.

------
pjmlp
> The problem is that working on MIT/Apache licensed software doesn’t exactly
> help pay the bills. That’s why I’m asking for your help. I’ve spent the last
> 5 years having a single company sponsor my open source work. This time I’m
> going to try something different. Right now my goal is to get a handful of
> medium sized grants from larger companies to support my work on crates.io.
> If you work for a company that might be interested in helping sponsor me,
> please reach out.

This is the crux of the problem which seems left unadressed in the comments.

If it feels nice to enjoy those consulting rates, give something back.

~~~
kbenson
Honestly, my initial thought when reading the article was whether anyone is
using Patreon for helping them focus on open source projects, or if there's a
popular competitor for that. Patreon seems to have all the controls to handle
this well though. I would happily give a buck or two to someone monthly, and
an additional few dollars per release capped at once a month or quarter (and
Patreon supports both those, but I'm not sure it supports them at the same
time). Although something that worked at the project and/or individual+project
level might be better in this case.

------
BilalBudhani
I believe Sean's decision of moving to Rust has very little to do with
Ruby/Rails. I think all of us have a point where we just simply want to move
on to new things in life.

I really appreciate all the contributions done by Sean in Ruby On Rails and
wish him all the best.

~~~
mooreds
Sounds like some philosophical differences too.

I hope he can make a living doing open source.

------
gigatexal
I would have thought rails to golang so I too am surprised.

I wish I had millions and could be a patron saint of sorts for people like the
author. Open source funding is so broken as the companies that build upon the
vast open source and often free software don’t do much in the way of donating
or otherwise supporting the companies or individuals behind the projects.

~~~
ajmurmann
Ruby has developer happiness as one of its main goals. Go on the other hand
seems to have a lot of narratives around keeping the language small even if
it's inconvenient. Add to that that Rust with Cargo has a package manager that
will fell just like home to Ruby devs, whereas Go brought package managing
back to the dark ages. => All this makes it hard to get excited about Go. Rust
on the other hand comes with a bunch of new and exciting language features.

~~~
zik
I don't think the "lot of narratives" you're talking about actually exist.
I've never heard anyone from the Go camp say that they want to make the
language "small even if it's inconvenient". From a language design point of
view I think they're trying to make it small to maximise convenience. Yes,
it's a different philosophy to "kitchen sink" languages but that doesn't make
it wrong. In fact it's considered a gold standard of language design.
Wikipedia says:

> Orthogonality in a programming language means that a relatively small set of
> primitive constructs can be combined in a relatively small number of ways to
> build the control and data structures of the language[2]. It is associated
> with simplicity; the more orthogonal the design, the fewer exceptions. This
> makes it easier to learn, read and write programs in a programming language.
> The meaning of an orthogonal feature is independent of context; the key
> parameters are symmetry and consistency (for example, a pointer is an
> orthogonal concept).

Go modules are a fairly new feature which addresses past criticisms of Go
dependency management so I don't think that's a valid criticism any more.

~~~
ajmurmann
I don't disagree that making the language small is a great goal and makes the
language better. I just think that such a language will not appeal to everyone
who enjoyed a large language full of syntactic sugar like Ruby. In fact I very
much agree with Go's design goals and see lots of problems with Rust's design
choices, at least when considering it for "mondain" work like web dev.
However, I cannot get myself excited about Go at all, while I am very excited
about Rust. I think it's that Rust, especially coming from Ruby, has
interesting new concepts that lead to many rewarding learnings where you
change how you reason about some things. When I read about Go, there are no
surprises, everything immediately makes sense. All of this is good. It's also
boring (in a good way). If I somehow got forced to use one of these languages
for a new startup, I'd go with Go. If I had to pick one for playing around
with on the weekend, I'd definitely go with Rust.

~~~
spellingbee
Mundane... Not mondain

------
chvid
I am curious to what drives the next thing? Just wanting to use a new fresh
language?

I saw the rise of Ruby on Rails; the driver was the ability to deliver
wellstructured web applications fast. The language was a secondary thing.

------
MagicPropmaker
Is it even possible? Or do you basically have to relearn what you missed in
Computer Science over the last 6 years.

It reminds me of what Dijkstra said about people raised on BASIC in the 70s:

> It is practically impossible to teach good programming to students that have
> had a prior exposure to BASIC: as potential programmers they are mentally
> mutilated beyond hope of regeneration.

~~~
pmarreck
My progression was BASIC > Pascal > (insert a bunch of procedural/OO langs and
scripting langs)> .NET > Ruby > coding Ruby in a FP style > Elixir.

So basically procedural > OO > functional.

I will say the hardest transitions (where "hard" is still less hard than, say,
understanding everything about how a SQL join works) were from .NET to Ruby
(and even THAT transition was mostly hard because I was going from "Microsoft
ecosystem" to "open-source ecosystem" without having Java on my resume), and
from Ruby to Elixir (syntactically similar, semantically night-and-day). But
clearly it's possible... and I'm a Dijkstra fan!

