Is the Elixir ecosystem being shaped (too much) by Ruby?

I don’t mean this as a click-bait flame war post… I really don’t.

I really want to love Elixir, and in most ways I do. However, in checking out several projects over the last year or so, I have run into a way of thinking that I find puzzling and I wonder sometimes if I really belong in the Elixir community with my lack of interest, knowledge or experience with Ruby/Rails.

Just the other day, I asked a library author how to use something and was told “it’s like how you do it in Rails”. OK… so if I have never used Rails, what is my frame of reference then? Also, it was on a project that is a re-write of a Ruby project. So I guess that’s another trend I am not keen on, unless there is substantial benefit from having it written in Elixir.

How do you feel about this? I feel like if I went to Github and asked a question about a project written in, say, Scala, I wouldn’t get told “do it like you do in…” what? Java? I feel like this Ruby-backed basis of understanding in Elixir is somewhat unique due to the history of Elixir.

Again, not that it’s a necessarily bad thing… I just feel somewhat “out of touch” on some Elixir topics and conversations due to not having any background in Ruby/Rails.

Or I could be totally inventing this… :wink:

6 Likes

tldr; no. :slight_smile:

Slightly longer answer; a lot of folks enter the Elixir community from Ruby, so it’s natural for people to try to bring the same hammers they used from what they know. The semantics are entirely different, so most times trying to build “Ruby lib X, but for Elixir” ends up being a poor approach that we see often. This can frustrate seasoned Elixir programmers, but the key thing to realize is these newcomers are just tinkering with the only tools they know. Phoenix also borrows some ideas and conventions from Rails, so we see the same thing for Phoenix related libraries. So it’s partly on the community at large to help level-up folks and open their minds to everything the ecosystem has to offer. This goes for probably the majority of newcomers since Elixir is their first functional language. Initial efforts are doing with an OO/mutation mindset until they level-up. So Ruby isn’t shaping the ecosystem anymore than OO is.

The community’s proximity to Ruby is self evident, but we are treading our own path.

14 Likes

You are not alone in not knowing Ruby or Rails before. I haven’t used both that much (I don’t think I’ve even tried to setup a Rails project), and it hasn’t got me into any significant problem.

The only similarity of Ruby/Rails with Elixir/Phoenix as of now I think is just their syntax. And even then, the similarity is superficial, as they’re a different beast altogether.

Just as someone in this forum has said once: the sooner you separate Ruby and Elixir in your mind, the better (or something to that effect :slight_smile:).

I think this is a good trend if said project can help people developing in Elixir. Ruby excels in having overflowing Gems for almost anything you do, and if you can port some of them into Elixir, why not? I think Elixir devs can use extra useful libraries.

At least in this forum, I’ve been seeing less and less mentions of Rails as a source of thought/question. IIRC I haven’t encountered anyone that assumes my Ruby/Rails knowledge too. Perhaps encountering that Rails comment was just you having bad luck? :slight_smile:

So yeah, I think you have a valid concern but it is not too significant a problem. I think the Elixir community is one of the nicest group of people I know (with all the not-so-nice people in the world right now :wink:), so I hope this doesn’t stop you from joining in!

(However, if you’re a web developer, I do think it is recommended to take a look at the ideas behind Rails. Being one of the most popular web framework, there’s gotta be a number of things it got right. A little knowledge can’t hurt.)

4 Likes

I like the borrowing of terms and ideas. I find that when working with other Rubyists, there is a kind of verbal shorthand that you can use to accelerate discussions.

Student: “What’s Plug?” Instructor: “Plug is Elixir’s version of Rack.” Student: “Gotcha”.

Besides accelerating discussions, the Ruby ecosystem is IMHO a good model to follow! I think Rust also borrowed ideas from Ruby, esp the package manager, use of generators and test environment.

For non-Rubyists: perhaps learning Elixir will make it easier to pick up Ruby or Rust. :slight_smile:

2 Likes

There are a lot of people who have RoR background so this is not that surprising that someone could assume that you might be familiar with it. A bigger issue is 80%+ of Elixir jobs also require Ruby and RoR and that could be problematic.

2 Likes

Yeah this is irritating, not all of us come from such platforms… Ruby is one of the few languages I’ve never written a line of code in… Maybe that is why I hope that I’m fairly decent at explaining how things work in Elixir? :slight_smile:

5 Likes

I’m glad to see this thread here. I’m speaking here as one of the first ten Americans to learn Ruby.

At that time, many things in Ruby were explained to newbies “in terms of” Perl or Python (neither
of which I have ever learned, even today).

Certainly parts of Ruby are similar to those languages (probably even “inspired” or “borrowed”).
But Ruby needed to be its own language with its own culture.

Likewise, Elixir needs to be its own language.

I think it’s acceptable to describe Elixir in terms of Ruby… IF the speaker and the listener are
both Rubyists. That doesn’t bother me.

I even think it’s OK to use Rails as an analogy for Phoenix, so long as (again) the speaker and
listener are on the same page.

What does bother me more (and has been an annoyance for a decade) is the conflation of
Ruby with Ruby on Rails. The language isn’t the framework, and the framework isn’t the
language. I have wasted countless hours explaining to recruiters (and sometimes even people
who should know better) that while I am an expert in Ruby, I don’t know Ruby on Rails.

Naming, of course, is a big part of the issue. No one confuses Django with Python. And no one
will confuse Elixir with Phoenix. Though in a larger sense, Phoenix is “just more Elixir code”,
far more faithful (as I understand it) to Elixir than Rails is to Ruby.

In short: Comparing Elixir to Ruby is not so bad, depending on audience.

Comparing Phoenix to Rails is not so bad, depending on audience.

Comparing Elixir to Rails… Please don’t. I won’t flame you, and we can still be friends, but
please don’t. :slight_smile:

Hal

7 Likes

Like many others have stated, I think that if those that helped shape the Ruby ecosystem are also helping shape the Elixir ecosystem then it is much more likely than not a positive thing :slight_smile: (The Ruby ecosystem is one of the best around with many languages and frameworks taking inspiration from it and Rails.)

Please don’t feel like an outsider Andrew! Remember that Elixir is relatively young, and so most of us are actually quite new to it - in fact you have been on this forum since day one, so even though it might not feel it, you’ve actually been part of the community for a while, comparably in fact, with many of us.

Just jump in and remember, everyone brings something to the table - if you’re not from the Ruby world then you bring an insight that many of us may actually not have ourselves. From everything I’ve seen, Elixir embraces diversity.

2 Likes

as pointed out below, I think this is only helpful if both you and the instructor have established a common ground of both having a Ruby background. For me, this exchange doesn’t answer the question (as in I wouldn’t know what a Plug is) and actually adds confusion (because now I also don’t know what a Rack is).[quote=“chrismccord, post:2, topic:3196”]
The semantics are entirely different, so most times trying to build “Ruby lib X, but for Elixir” ends up being a poor approach that we see often.
[/quote]

I am in favor of having Elixir devs have more choices, for sure. I think the issue I have with porting projects is essentially what @chrismccord was getting at. If the semantics are quite different, I would think that all but the most trivial project would need to be re-designed to make use of these different semantics. I realize it’s a hard thing to “re-learn” how to deliver the same use cases of one project to another language and/or framework but I think that if you are going to then share this new project with community, it should probably be with an “Elixir first” approach rather than a “hey, Elixir doesn’t have this popular gem yet” approach.

Thanks @AstonJ - yes I have been around for a while, mostly lurking :wink: I want to be more active in the community and am looking for a project that I can contribute to (I am a Product Manager IRL and not a dev, so learning is top of my list) … I am still looking and I will be attracted to a project that is solving a use case in a way that Elixir excels.

1 Like

Have a look here :003:

1 Like

Don’t hesitate to say that you don’t know Ruby… After that explanation would be more verbose, but not assuming Ruby-knowledge. I agree with Andy, references to Ruby are just description shorthands.

2 Likes

Good point. I’m glad Chris didn’t name it Elixir on Escalators. :laughing:

11 Likes

good idea for releasing next April 1

I definitely think the answer is no. There have been clear decisions made in the Elixir ecosystem which explicitly go against Rails convention.

I definitely understand what you’re saying, though.

One thing I should mention is that I came to Elixir and Phoenix because of Ruby and Rails. I thought I was super happy in Ruby land, but then I took a peek over at what Elixir was doing… and well, here I am. There’s a whole heap of things that I love because they’re so different.

Yeah, @josevalim and company have been really wise to just bring the best parts of ruby and others into Elixir/Phoenix/Ecto. For example I love the way Elixir’s has improved the quality of documentation by making it first-class. I really feel confortable with a nice language, great tooling and blooming great-quality libraries on a superb fault-tolerant platform as erlang. Really glad to be following the steps of these smart people.

1 Like

Building an awesome community is not easy, and saying no to many feature requests that would just polute the language on the long time, and explaining nicely the reasons why is a such a cool thing about Elixir core team :). <3 Elixir for that.

So I’d say, Elixir people do have brains of their own, and Elixir, their frameworks and community is a relfection of that.

1 Like