Euruko Keynote: Beyond Ruby 3.0 (Yukihiro Matsumoto)

A bit of a hater comment incoming:

On a more general note, I never did have anything against Ruby in general, let’s make that clear from the start. I liked working with it for quick scripting, actually a lot. I can see why Mac’s Homebrew is written in Ruby.

That being said, Matsumoto in general has been very disconnected with the real world programming. I watched many interviews and he always struck me as a shy guy writing manga slash-fiction for middle-schoolers. Kill me if you must but I trust in my experience with people. He’s one of these people that “plays with technology” and then people get crazy about what he invented. One of the people who’ll naively tell you “just follow your dreams, it’s that simple!” (while likely not having to think about bills and college funds :grinning_face_with_smiling_eyes:).

It took him like 10 years to admit that having first-class baked-in parallelism and concurrency that are painless and less likely for the devs to shoot themselves in the foot with, is a good thing to have. WTF? How is this guy’s opinion on technology relevant at all? Why should he be listened to? He’s not living here on Earth where we must work for money and maintain projects for years, that’s for damn sure. He’s likely handed money because of his reputation. In the evolutionary sense, his thinking likely stagnated in his privileged positive bubble.

I moved on from Ruby (mostly from Rails though) for good 5 years now and my opinion on the topic is likely worth nothing but then again, time and distance give you perspective which IMO shouldn’t be ignored either.

So here it comes:

Ruby is worthless apart from being a very nice scripting language. It’s NOT suited for web apps (yes, even with Rails in the picture) and it’s NOT suited for any data science or algorithm coding as well.

I’d only use Ruby just as far as not having to use bash/zsh for scripting.

Sorry if this is too negative but I had to get it off my chest. Strong personal opinion that need not be respected: Ruby should just be forgotten. :slight_smile: They can try hard emulating actors and JIT but it’s a waste of energy and a fanboyism taken to the extreme where people just forget that other technologies exist.

3 Likes

I agree with some of your points. But, Ruby should just be forgotten is just not possible at all.

There is so much stuff built with ruby, you could as well be saying PHP/Javascript should be forgotten.
Sure the language is not perfect (by a loooong shot), but since we are talking Real World/Planet Earth we both know the only way on the near future for languages like ruby is to move forward and accept it wont be perfect but can always be improved.

3 Likes

Yep, that’s true. We can’t eliminate it or anything, it’s just my opinion that continuing to work on Ruby is a meaningless waste of energy driven only by sentiment.

Rewriting the MRI’s core in Rust or Zig would be a more valiant effort, for example. But even that won’t help because the way Rails works just makes Ruby crawl to almost a halt so. Making a sub-set of Ruby that does away with mutability would probably have the maximum impact however.

But hey, I am getting a bit more realistic and somewhat jaded with the tribal nature of the programmers at large and I seriously am not impressed by most work these days. Especially with everyone and their dog inventing new languages left and right.

There’s creative chaos that helps us find good ideas… and then there’s this age where individualism trumps all other concerns because yeah, I am absolutely sure that person X is exactly the one who is going to figure out the perfect language exactly today. Sigh.

But yep, back on topic, I agree with your take. It’s just that what I said was partially influenced by emotion (but still stand behind what I said) – I am aware that Ruby won’t cease to be used just like that. There’s too much money and legacy involved for that to ever happen. My thesis is: Ruby is a lost cause at this point.

3 Likes

It’s your opinion and you are entitled to it :smiley: however I think a lot of people might disagree with you… me included :see_no_evil:

I love Ruby :heart: despite its faults, it is still one of the nicest languages around. I really can’t overstate the importance of how intuitive and natural feeling a language is for users like myself.

Again I wouldn’t agree with that, and if that was the case then nobody would be using it in a ‘real world/professional’ setting, yet, time and time again we see it being used on projects like Github, Shopify, etc

Some might argue that it’s actually very connected with ‘real world’ programmers - it has always intended to be a programmers best friend after all :nerd_face:

I don’t think following your dreams is a bad thing Dimi :wink:

Ruby has helped inspired some awesome languages - just look at Elixir, and others like Crystal and Coffeescript. If there was no Ruby, it’s possible we would never have seen Elixir…

He’s not alone there, few languages can match Erlang on that front :sunglasses: and Erlang is so ahead of the pack because they needed those features a lot more desperately in those sectors many decades ago.

A lot of people make a good living out of programming Ruby, and for the most part they enjoy it (I would say a lot more than a lot of other languages).

It’s good to know that you have some uses for it :smiley:

And I think that’s the beauty of having a number of viable languages - you can almost always find one for the task you have in mind. For you and Ruby that is scripting, for others it is web dev, for others it might be hybrid apps with RubyMotion, or frontend ones with Opal.

Ultimately everyone has different tastes and those tastes are not static - they change as we get to experience new things. I for one am very grateful to Matz and everyone involved in Ruby for making it possible for me to experience it :orange_heart:

1 Like

And I can’t overstate how little that matters when you have a job to do. :stuck_out_tongue:

Although I can’t deny, Elixir is a bit of both and that’s why it’s a very loved language.

No correlation between both. Matz just did a few things, other people liked it and picked Ruby up to where it’s at today. Matz himself has very little to do with Ruby’s success, he’s the “visionary” who started the whole thing. That is what I’ll give to him. A lot of much more serious and professionally oriented people made Ruby succeed – not him.

Fully agreed on that and IMO it should stay that way. “Hey, look at the language that could have been so much more but at least it inspired Elixir and a few others”. :grinning_face_with_smiling_eyes: That’s its role.

Yep, I concede this, although Rust is fairly close lately, and OCaml are poised to do the same after their 5.0 release in eight or so months.

Which in our real world has zero correlation with actual merit. I know at least 10 programmers who curse their lives for having to write Python but (a) they don’t have the political clout in their company to change this technical decision and (b) don’t have passion for the profession, they are just regular folks who are attracted to a lucrative profession.

Let’s not forget the adoption phases of stuff, Aston. Most people simply hop on a bandwagon. Merits were a criteria only at the start.

As a slight tangent, Rails was undeniably much better than the state of the art at the time. The world has moved on though (and I don’t only mean Phoenix; modern PHP Laravel is also quite good even if PHP itself is total meh).

Sure, I agree. But IMO (a) there’s now too many of them and (b) people hold on to nostalgia and/or the “but I don’t want to learn new language!” sentiment for far too long.

Nothing I can do about that of course, I can only point it out.

2 Likes

I guess we will just have to agree to disagree :slight_smile:

But, back on topic. I’m really excited to see the core team focus on tooling.

Language server integration with RBS is a must. All tooling arround RBS in general needs a lot of love.

The “packaging” problem he mentioned is something that always bothered me too, sure global require is convinient but I think we could have import/export semantics like ES6.

Where I agree with @dimitarvp is that I dont have high hopes on huge performance improvements, unless async stuff like GitHub - socketry/db-postgres (https://www.youtube.com/watch?v=Y29SSOS4UOc) becomes mainstream.

3 Likes

Never say never Cassio - remb Java used to be a hog and look at it now :joy:

But it does matter to a lot of people, particularly evident when choice is involved - such as when a project decides to use Ruby over another language. Maybe it matters little to you, but from conversations I’ve had and witnessed, I know it matters to a lot of people :smiley:

In languages, one person alone can’t do it all themselves - this is true for pretty much every language out there :upside_down_face:

When I think about what helped get Ruby off the ground and what might have helped make it popular/successful, a few key things come to mind:

  • Ruby and its creators choices/design itself
  • Dave Thomas writing the pickaxe book (thus making Ruby accessible to more English speakers)
  • DHH creating Rails (thus proving a ‘killer app’ that allowed people to use Ruby in a substantial way in projects)
  • Key players spear-heading a friendly community - eg MINSWAN (and on community platforms like the Ruby Forum - which was around long before Stack Overflow, and through conferences like Ruby Conf, which people felt part of even when not present)
  • Ryan Bates and Railscasts (which made Rails very accessible)
  • All the other authors, content creators, bloggers, gem-makers, newsletter-creators, etc

That’s an oversimplification, but the story is probably not too different for numerous other similar languages. I don’t think it’s fair to say Matz had little to do with Ruby’s success tho, he created it after all, and was the person that inspired most of the people that went on to do the other important key points above :blush:

That’s cool… and, Erlang (and Elixir) will keep moving forward too - perhaps the Erlang team are already working on something that we’ll need more and more a couple of decades from now :joy: :nerd:

Standing still in tech is very dangerous - as our understanding and experience increases, newer/better ways of doing things are always emerging and in this space I think you really do have to keep evolving and progressing otherwise you might find you get left behind…

I was like that at one stage - and I think part of it was because I still had loads to learn and being able to do it all (web/mobile/desktop) via one language would just have made things easier. I still like the idea, but am more open and inclined to try and reach for the best tool for the job (depending on the job - some projects allow more of a compromise in some areas than others).

Wanted to end on this quote because I just wanted to highlight that what you think has merit may not be the same as what others might think, and for me at least, I think the important thing is that if something or some tool can enable people to make cool things, or better still, make the world a better place, then that’s gotta be a great thing :blush:

Hopefully we can agree on that :orange_heart:

2 Likes

I’m not going to try and shift the meaning of “merit”, that’s not what I was saying.

I was saying only that actual merit, no matter what it is, plays a role only in the first phases of an innovative technology. After that, hype sets in and most people adopt the said technology due to network effects.

That was my point. Do you disagree with it?

We agree on 99% of all of this anyway, Aston. :heart: We’re only discussing opinions as far as I’m concerned and there’s no ill will.

2 Likes

:orange_heart:

If we say merit equals perceived ‘plus points’ or benefits, then yes :smiley: but it’s important to note that these ‘merits’ are the driving force or ammunition that those ‘network effects’ rely on - so usually, in this space at least, the hype has to be grounded in some sort of reality or in some way that is meaningful to the prospective adoptee.

For tech like Erlang that could be very much about the technical aspects, for other tech, say something like React, Go, or Swift, things like who made it could compensate or mitigate them maybe being not so technically good. There are of course other reasons too, such as language design, type of tooling available, etc, but whatever it is it’s usually something that can be capitalised on to drive adoption.

For some people a language backed by a tech giant may be enough. For others it could be one that has technical prowess and powers huge systems like Whatsapp :wink: and for others it could just be that the language is ‘fun’ or nice to use - whatever it is, it’s usually something that draws that person to it or could draw that person to it.

I think groundless hype can only get you so far in the dev space because most people are at least somewhat technically minded - probably why we see so many ‘next big things’ in JS… they seem like a good idea at the time but on closer inspection or after some experience it transpires that they weren’t all that after all :rofl:

2 Likes

We agree on this. Where I think we kind of are passing each other along the way is this: when is merit important. I am saying that it’s only important during the initial adoption phase, you are saying that it matters all the time. It’s OK to disagree on that. :slight_smile:

But I’ll allow myself the liberty to point out that you are very positively biased. By your sound, you never “worked” in your life and always picked jobs that you liked/loved and which piqued your interest. I would also like to point out that most programmers are NOT in this group of yours.

I am mentioning this simply to draw attention to the myriad of miserable teams I knew who were struggling with legacy Rails mastodons. They didn’t seem to think Ruby or Rails have any magic in them. :smiley:

So you know, we can concede that we’re both right… in our own bubbles. More often than not, I’ve seen the very ugly side of commercial programming where people started out wide-eyed optimistic and ended up jaded cynics who hate every minute of their work at no older than 25-26. :frowning:

That’s correct but where we seem to have a differing assessments here is how long it takes. People eventually got sick of C++ and made Rust but it tooks DECADES. People got sick of Angular.JS and made React, but it took no less than 5-6 years.

So even though you are right – devs get tired of inefficiency and iterate further – it sadly is a very slow process.

2 Likes

I completely understand where you’re coming from, and it sounds like the distinction you are making is between developers who are ‘told’ what to do/work on (most hired developers) as opposed to developers who choose what to work on (most business owners/startup CTOs etc).

The second group includes people like DHH (Basecamp) and other startup entrepreneurs (like the team who created GitHub) all the way to independents who work on projects ranging from small to large (resulting in varying revenue that can, and often is, in 6 digits or more). I certainly wouldn’t say these people have ‘never worked’, hence me coming to the conclusion in the paragraph above.

I think if you fall in the first group (hired devs) you are unfortunately almost always not going to be entirely happy - because you’re not getting to decide what tech to use, how/what methodologies to use or how to architect the system, what exactly to work on etc, and you’re probably also going to be maintaining or working on stuff that someone else has made - and while it may have been put together to their exacting tastes or preferred workflow, it may not (probably will not) be to yours.

So the problem isn’t whether you are a working dev or not, it’s what type of dev you are - one that is hired to work on something (which they prob won’t completely like) to one that can choose exactly what they work on and how they work on it. There’s no surprise the latter are going to be happier and I think my best advice to anyone who falls in the initial group is to either keep looking for a job that better suits your style/tastes, or, try to move into the second group - i.e. work for yourself or try to find a position or company which better reflects your own practices or where you can work on what you want.

I really do sympathise with anyone who anyone who falls in the initial group and who is deeply unhappy with their situation, I sincerely hope things get better for you whoever you are, HUG. Life’s too short to spend on things that make you unhappy, and so I would strongly encourage you to find something that makes you happy and helps you live a more fulfilling and content life.

I think it’s inevitable that as we become more knowledgeable about stuff, people will spot problems earlier - so hopefully we won’t be stuck with bad tech for as long. Here’s hoping anyway! :joy:

2 Likes

I happen to agree with almost everything @dimitarvp has stated about ruby, and I’d also apply it to Python. There are older languages that did what both of those did, but significantly better, and fits in the same type of work as both of those as well, for example OCaml is a HUGE one. OCaml easily should have been what python and ruby became as it is succinct, it ‘can be’ just as magical (though thankfully the ecosystem tries to not do that stuff), it’s strongly typed so you get errors at compile-time instead of run-time, it compiles even faster than python and ruby (which yes they do compile before executing) and it can be used as a scripting language, and at worst running in its interpreter it’s still faster than python and ruby and when fully optimized compiled makes fully standalone self-running binaries of native code that is about C speed.

I don’t like python and ruby, they are both very very poorly designed, and I don’t know how they got popular when every single positive thing I’ve heard said about them also applies to OCaml and a great deal more, and yes I say this knowing python (though not ruby) very very well.

There are just so so very many design and productivity issues in python and ruby, and their users don’t see it, mainly just because they don’t seem to know any better languages in that same field. Whenever the only tool you have is a Hammer, then everything starts to look like a nail…

The amount of times I’ve experienced exceptions of code that just shouldn’t exception except purely by language faults that shouldn’t exist in python still bugs me to this day, and yes this is so fresh because I just hit another python one in a root system package on debian that bugged the tar out of me this morning… >.<

2 Likes

Well, after 10 years working with ruby I can assure you that I am very painfuly aware of almost everything that can go wrong on a ruby project (and, for all the good its done in the past, Rails is the number one cause of bad things happening in a project in my opinion):sweat_smile:

But… my friends, I totally understand the dislike for ruby, or python, or js, or rust. Everyone knows the tecnical shortcommings dynamic scripting languages have, I cant simply choose to not use ruby anymore and dont care for the language future.

Given the oportunity would I rewrite everything in Elixir or F#? Absolutely!
Can I realistically expect to do so? Absolutely not !

3 Likes

Why not though? I’ve changed main language focus in my career like 5 times at least.

It’s tough of course, but very doable still.

2 Likes

Well, now I’m not sure I follow you dimi :smiley:

You just pointed out that most programmers are NOT in the position to pick what they work with, and you are absolutely right.

I’m not saying that I choose ruby and wont switch because its hard for me.
Its hard for the company, we are a very small startup and have a ton of “legacy” code.

2 Likes

Ah, I am mostly saying it’s hard, not impossible, you know?

But I get it, most people are after stability and don’t want to change jobs. Not judging.

3 Likes

Think of Matz as the “CEO” of Ruby. He’s not the one writing all the code. He’s not the one coming up with all the ideas. But he is the one, who have to be responsible for everything. He’s the face of Ruby. To that, yes, he’s playing with technology. He has to. He’s looking for what’s next for Ruby to pursue. That’s how we got Ractors. Matz started that project many years ago, by experimenting with different actor libraries and such.

You’ll see that the world disagrees with you here. Take a look at for example Shopify and GitHub. Both use Ruby extensively and both drive it forward, with for example Sorbet.

Why are people still using C? C was released almost 50 years ago. It doesn’t have garbage collection. You need to manage memory references yourself. There’s no classes or objects or anything. Different programming languages meet different needs. You want speed? Go for C. You want human-programmable? Go for Ruby.

If you go to your local grocery store, you’ll probably see a bunch of different brands of orange juice. Why do you think that is? I assume it’s because they each seek to fulfil a different need in their customers. Some are organic, some are with pulp, some without. Some are with sugar, some without. I see the different programming languages the same way. I would never use Ruby for making a stock trader, it’s not what the language is meant to be doing. A web app? Sure! I can even write one pretty fast with the current libraries and offerings.

Rewriting something just for the sake of having it written in some other language is, in my opinion, just as much a waste of time and energy. What’s wrong with MRI being written in C? Do you see many type errors or mutability errors in the interpreter itself?

That seem to be where we are headed. Especially with the # frozen_string_literal: true magic comments. However, as Matz discussed in the video, you can’t just say “From tomorrow all strings will be immutable” That would split the community in the same way we saw with Python2 and Python3.

I don’t think there’s such a thing as a “perfect language”. There’s no “one size fits all” solution to programming.

Yup. And still, we don’t see any other languages being so massively concurrent at its core. Why is that?

That’s exactly where it becomes important! If the language you use is unintuitive and unnatural, you’ll be making a ton more mistakes than if it wasn’t. Sure, if you want a job, where you have to write a thesis before you can start coding, you shouldn’t use Ruby, but Ruby is so intuitive that I believe I could have even my mom write most basic programs and understand what’s going on.

The beauty of civilised online debates. :heart: :tada:

Oh yes, indeed. I haven’t had the chance to fiddle with RBS or even Sorbet yet, but I am overjoyed that they exist and help make the world a (type) safer place :laughing:

I want in on the heart situation here: :black_heart::purple_heart::green_heart:And I hope that everybody reading this knows, that no ill intensions have ever been made. The internet and thus written communication can often be difficult, because you can’t convey tone and mimic. It gets even worse when the language you’re communicating in isn’t your own. (I tend to write more formel in English than I would in Danish)

4 Likes

No worries.

Speaking of stability, I started on this company less than 3 months ago. I was working with nodejs and go for about 4 years on my previous company.

This is the first time working on a foreign startup, so things are quite a bit unstable on my end :smile_cat:

3 Likes

Fully agreed, that’s why I feel it’s a bit unjust for him to always take all the credit in many online discussions I’ve seen in the past. Matz is the leader but he has a ton of hard-working people behind his back who make Ruby happen.

I am quite okay with that, just want to point out that popularity doesn’t equal quality. They are only loosely correlated.

Good question, I have the same one. :smiley: A lot of people are moving to Rust, myself included.

For all the reasons you enumerated plus one more: they all want a slice of the pie. We shouldn’t forget that one. A lot of programmers are very vain and popularity and using their stuff is important to them. That’s a character weakness in many situations. My point with part of the post was: too much individualism! We should all collectively read code some more and write code a bit less.

Not disagreeing with you here, will just add one nuance: memory-safe languages and Rust in particular protect you against the biggest class of security bug fiascos that we’ve seen in the last several years: non-safe memory access. I won’t go full zealot here but I believe “should we rewrite $EXTREMELY_IMPORTANT_SOFTWARE that’s used every day by millions, in a memory-safe language?” is a very worthy discussion to have.

Almost everybody has moved to cloud where Docker / VMs are used. Maybe it’s high-time to have things like docker, kvm, qemu et. al. be rewritten in memory-safe languages because not doing so is a continuous business risk of private data leaks.

Yep, I was still around when it was introduced and I approve of it but IMO the migrating is moving way too slow and the core team is paralyzed by fear of another Python 2 vs. 3 showdown which might, ahem, freeze these efforts indefinitely. Time will tell. I like the trend – but not the speed with which it’s happening.

Agreed. But wouldn’t you agree that picking particular 5-10 languages would cover everything that people need in commercial programming? I am leaning towards that opinion lately.

F.ex. there’s a number of tasks for which I’d unequivocally reach for Elixir but I know its weaknesses and where I don’t feel it’s a good fit I’ll just use Rust. And if both would be too much trouble (and too slow to develop) I can and have made fully functioning programs written in bash or zsh scripts as well.

My theory: in most technology, if you don’t bake something in from the beginning, adding it post factum is 100x harder. Hence people either never do it or it takes them years and years (Rust and OCaml both come to mind; they are trying really hard and are moving forward towards OTP-like guarantees but even with their insanely talented teams it takes a long time).

I concede I was a bit dismissive here and I apologize. Yes, having joy while programming is essential. Absolutely. That’s what brought me both to Elixir and to some extent, Rust (joy there doesn’t come from syntax because it’s kind of bad, but from its guarantees and uber-powerful dev tooling that literally gets better every week).

Absolutely! :heart:

3 Likes

Very well put Ohm! I agree with pretty much everything you said :nerd_face:

I think ultimately it boils down to preferences - some people like some languages or certain types of languages over others, and that’s totally fine. The important thing I feel is that people are making cool stuff with whatever they decide to use :blush:

2 Likes