I became so disillusioned with how many decisions seemed to be made about Ruby over the last few years. I was ready to abandon the language and although I wouldnāt say Iāve found peace with how things are now, itās more like Iāve come to a point of resignation. I still make most of my income from Ruby and Iām still productive in it. Most of the bitter feelings I had have passed, but not really because anything Iāve seen has changed, just because time has passed and Iāve had to accept it one way or another.
All that to say that Iām very interested to read Part 3 and how your perspective changed.
Iām curious here. Just some background: Iāve been heavily involved in the Ruby community from 1.6 to 2.0, co-running a lot of the German Ruby community services (rubyforen.de and its blog, the eurucamp conference, forming my first company around it, etc.) before moving to Rust.
I still look at Ruby frequently and actually like the language evolution. Especially 3.0 with ractor and async is a really good way to keep the language fresh and modern. Ruby 1.8 to 1.9 to 2.0 was a really well managed transition, especially compared to how Perl and Python worked out. Ruby is a rich language with many features - it was already at 1.6. It really isnāt a good spot for language conservatism.
What I observe in the Ruby community is a bit of an emotional self-sabotage. I still literally get asked to be on panels about āIs Ruby dead?ā. No, Ruby is more alive then ever! Much more alive! I know Ruby developers, especially new ones, left and right. All companies I work for accept it as a reliable workhorse. But still, everyone is looking at its death and people give talks at Ruby conferences about how they would manage Ruby if they were let.
I appreciate that thereās an issue in the Ruby community around development communication: A lot of the design is done and discussed in Japanese and as such inaccessible to the English speaking community until it is close to done. I appreciate that breeds frustration, but thereās an under-appreciated other side of the coin: Ruby is one of the few globally used free software projects from Asia that is a space for people who have a hard time contributing to the English speaking world.
Ruby has an ambitious and diverse and kind community that a lot of people identify with. Thereās a reason why I always wear a Ruby shirt when giving a Rust talk and still frequent Ruby user groups - remember where you came from.
I do like some things about the recent direction too. I do love the async stuff. Initially I was more excited for ractors, and I do like how the API for that has turned out, although I wonder if the Ruby community will really adopt them. If not they could end up just another feature that exists but no one really uses. It looks like there is a lot more activity around async, which is nice to see at least.
On the other hand, RBS feels bolted on and I donāt see it gaining much traction. I think it even needs a third party type checker? It felt to me like when faced with pressure to add types to Ruby, rather than making a firm decision either way, they decided to try and please everyone with a solution that probably wonāt really satisfy anyone (and I think the answer they really wanted to give was ānoā), and again, just end up another little used feature of the language. Personally I would have loved to see inline type annotations, as Iām tired of relying on YARD for every method I write just to make my API clear. But Iād rather they just abandoned the whole idea rather than go about it this way. Iām not a Ruby developer so I may be wrong here, but after 3.0 it feels like interest in RBS has dropped off and Iām not at all surprised as I think it was only added begrudgingly in the first place.
Ruby has a real documentation problem. Many popular gems donāt see fit to document their parameter or return types (and good luck figuring out which exceptions could be raised for any given call). Half the time you just have to guess and figure things out through trial and error. This is a cultural problem and I had hoped that adding types would have a kind of TypeScript effect on the community here, but that ship has sailed with RBS being added.
I canāt remember all that influenced my current feelings, but I do recall a few things which frustrated me.
For a long time I added the magic comment at the top of every source file:
# frozen_string_literal: true
I hated this. In the early days, the plan was to make this the default in Ruby 3, and I was really looking forward to that day. But Matz turned it down eventually due to compatibility concerns. Perhaps thatās fair, but there are already breaking changes, and some older code is still unusable on Ruby 3 (notably for me, Hanami 1.x). Would the situation really have been so much worse with this change? Honestly I donāt know, but it feels like another missed opportunity when youāre already breaking compatibility with old code anyway.
One feature that thankfully didnāt make it into the language was the pipe operator |> from Elixir. Except, it wasnāt the pipe operator from Elixir, and it didnāt really do anything new at all. It probably seems silly to complain about something that never made it in, but the fact that something so clearly useless got as far as it did really didnāt leave me with a good impression.
Itās just little things like these that have started to pop up more and more frequently.
Iām certainly not a language conservative. Iām actually a sucker for new features ā when they are well thought out, consistent with the language as it exists, and likely to see actual real world use. Ruby gives me a lot to like too, and I hope I donāt come across as entitled. Iām not going around making demands on anyone, but I canāt help but feel that I should start looking elsewhere for what I want (Rust has been top of that list).
I want to clarify that by no means do I think that Ruby is dead or dying. I am thankful for it, and make use of it nearly every day, Iāve just found myself questioning whether itās still right for me.
Ah, this reminds me I was so excited about the method references syntax, too š
I became so disillusioned with how many decisions seemed to be made about Ruby over the last few years. I was ready to abandon the language and although I wouldnāt say Iāve found peace with how things are now, itās more like Iāve come to a point of resignation. I still make most of my income from Ruby and Iām still productive in it. Most of the bitter feelings I had have passed, but not really because anything Iāve seen has changed, just because time has passed and Iāve had to accept it one way or another.
All that to say that Iām very interested to read Part 3 and how your perspective changed.
Iām curious here. Just some background: Iāve been heavily involved in the Ruby community from 1.6 to 2.0, co-running a lot of the German Ruby community services (rubyforen.de and its blog, the eurucamp conference, forming my first company around it, etc.) before moving to Rust.
I still look at Ruby frequently and actually like the language evolution. Especially 3.0 with ractor and async is a really good way to keep the language fresh and modern. Ruby 1.8 to 1.9 to 2.0 was a really well managed transition, especially compared to how Perl and Python worked out. Ruby is a rich language with many features - it was already at 1.6. It really isnāt a good spot for language conservatism.
What I observe in the Ruby community is a bit of an emotional self-sabotage. I still literally get asked to be on panels about āIs Ruby dead?ā. No, Ruby is more alive then ever! Much more alive! I know Ruby developers, especially new ones, left and right. All companies I work for accept it as a reliable workhorse. But still, everyone is looking at its death and people give talks at Ruby conferences about how they would manage Ruby if they were let.
I appreciate that thereās an issue in the Ruby community around development communication: A lot of the design is done and discussed in Japanese and as such inaccessible to the English speaking community until it is close to done. I appreciate that breeds frustration, but thereās an under-appreciated other side of the coin: Ruby is one of the few globally used free software projects from Asia that is a space for people who have a hard time contributing to the English speaking world.
Ruby has an ambitious and diverse and kind community that a lot of people identify with. Thereās a reason why I always wear a Ruby shirt when giving a Rust talk and still frequent Ruby user groups - remember where you came from.
I do like some things about the recent direction too. I do love the async stuff. Initially I was more excited for ractors, and I do like how the API for that has turned out, although I wonder if the Ruby community will really adopt them. If not they could end up just another feature that exists but no one really uses. It looks like there is a lot more activity around async, which is nice to see at least.
On the other hand, RBS feels bolted on and I donāt see it gaining much traction. I think it even needs a third party type checker? It felt to me like when faced with pressure to add types to Ruby, rather than making a firm decision either way, they decided to try and please everyone with a solution that probably wonāt really satisfy anyone (and I think the answer they really wanted to give was ānoā), and again, just end up another little used feature of the language. Personally I would have loved to see inline type annotations, as Iām tired of relying on YARD for every method I write just to make my API clear. But Iād rather they just abandoned the whole idea rather than go about it this way. Iām not a Ruby developer so I may be wrong here, but after 3.0 it feels like interest in RBS has dropped off and Iām not at all surprised as I think it was only added begrudgingly in the first place.
Ruby has a real documentation problem. Many popular gems donāt see fit to document their parameter or return types (and good luck figuring out which exceptions could be raised for any given call). Half the time you just have to guess and figure things out through trial and error. This is a cultural problem and I had hoped that adding types would have a kind of TypeScript effect on the community here, but that ship has sailed with RBS being added.
I canāt remember all that influenced my current feelings, but I do recall a few things which frustrated me.
For a long time I added the magic comment at the top of every source file:
I hated this. In the early days, the plan was to make this the default in Ruby 3, and I was really looking forward to that day. But Matz turned it down eventually due to compatibility concerns. Perhaps thatās fair, but there are already breaking changes, and some older code is still unusable on Ruby 3 (notably for me, Hanami 1.x). Would the situation really have been so much worse with this change? Honestly I donāt know, but it feels like another missed opportunity when youāre already breaking compatibility with old code anyway.
One feature that thankfully didnāt make it into the language was the pipe operator
|>
from Elixir. Except, it wasnāt the pipe operator from Elixir, and it didnāt really do anything new at all. It probably seems silly to complain about something that never made it in, but the fact that something so clearly useless got as far as it did really didnāt leave me with a good impression.Itās just little things like these that have started to pop up more and more frequently.
Iām certainly not a language conservative. Iām actually a sucker for new features ā when they are well thought out, consistent with the language as it exists, and likely to see actual real world use. Ruby gives me a lot to like too, and I hope I donāt come across as entitled. Iām not going around making demands on anyone, but I canāt help but feel that I should start looking elsewhere for what I want (Rust has been top of that list).
I want to clarify that by no means do I think that Ruby is dead or dying. I am thankful for it, and make use of it nearly every day, Iāve just found myself questioning whether itās still right for me.
Warning: this story ends on a cliffhanger. I recommend waiting to read this until Part 3 is posted ānext weekā.
My bad :ā-( Really wanted to tell entire story in one go, but got carried away!
donāt sweat it, all good second acts end on a cliffhanger