Wednesday, June 29, 2011

Why I'm stopping work on Reia

Some of you may have seen Elixir, a Ruby-inspired language for the Erlang VM, created by
José Valim. Whenever I see posts on HN or proggit about Elixir, I check out the comments, and almost every time someone asks about Reia, specifically how the two languages compare.

Reia and Elixir are extremely similar. If you check out their respective codebases, there's an almost bizarro world similarity between them. The project layout is almost identical, as is the build process and associated scripts to drive various parts of the language like the compiler and REPL. My impression of the code after looking over it was we were using largely the same mechanisms, and where they differed, José's solutions were something I had been thinking of changing, or something entirely new I hadn't thought of which seemed pretty cool.

At this point, in all respects Elixir is farther along than Reia and a better implementation. I think it's pretty bad to have two competing niche languages with nearly identical features.

So I'll be discontinuing work on Reia. The codebase and the web site will remain up on Github for however long Github wants to host them. Celluloid is Reia's spiritual successor. The main feature I always wanted out of Reia was a concurrent object system, and Celluloid implements that on top of Ruby.

6 comments:

José Valim said...

I have tried implemented a small language on Erlang before, but it never went public because I could barely get it working. Then someone pointed to me leex and Reia's lexer as an example. That was a huge help. I even added Reia's copyright notice at the top of the lexer because there are still some bits from Reia's lexer in there!

Another language that helped me was LFE. The REPL is based on their implementation and part of the build scripts (I have never written a Makefile before Elixir, but at that point, I was decided to use all tools Erlang developers usually use, respect the same project structure and so on).

I guess what I am trying to say is that having different languages (even if similar) is great to the ecosystem. More code to read, more places to try different ideas. So I am happy that you do like Elixir implementation but sad at the same time. I hope I will see some contributions or have some feedback from you in the Elixir side.

Tony said...

Hey José,

Glad to hear Reia helped you. I hope this post didn't come off wrong. I'm not saying Elixir copied Reia and I didn't want to cast Elixir in a negative light at all. I don't think Elixir copied Reia so much as it's a case of two people working on the same problem and producing similar results.

I might be interested in helping with Elixir. It might be fun to try porting what I've done with Celluloid back into Erlang and wrapping it in Elixir.

José Valim said...

Don't worry, I didn't get this impression. I was just acknowledging that if it was not Reia's and LFE's existence, I would still be struggling with Elixir basics. :)

phil pirj said...

José,

I hope you will adopt other Reia's good parts, e.g. PEG grammar.

Benedikt said...

Great work, both languages. I hope you two find together to work both on Elixir. It would be great if this language could get production ready in some time. You both know how two create great languages so work together!

Simon Redfern said...

Yeah and call it Reilexia :-)