Ruby Community

Saving Ruby from the Apocalypse

Saving Ruby from the Apocalypse

by Jason Charnes

In his talk titled "Saving Ruby from the Apocalypse," presented at RubyConf 2017, Jason Charnes addresses the current state and challenges facing the Ruby programming language amidst a fictional apocalypse scenario. The presentation uses a compelling narrative where developers, after waking from a coma, realize that the programming landscape is overrun by confusion and competition, leading to a stark decline in Ruby's popularity. Charnes emphasizes the need for Ruby developers to unite and fight for the language's relevance. Throughout the talk, key points include:

- The Historical Context: Echoing a previous discussion on Ruby's history, Charnes establishes a connection to the language's foundations, linking to its present and future.

- The Apocalyptic Narrative: A vivid storyline where developers awaken in a post-apocalyptic world reveals Ruby as a camp of thriving developers, contrasting with other programming languages that have become overwhelming.

- Challenges Identified: Charnes notes several critical issues:
- The perception of Ruby as "boring" and not keeping up with new languages.

- Abandonment of libraries leading to a decrease in productivity and innovation.

- The overwhelming number of programming languages diluting Ruby's community and relevance.

- Call to Action: The presentation then shifts to solutions, urging developers to:
- Engage more positively with Ruby's advantages, focusing on problem-solving rather than negativity.

- Collaborate on maintaining outdated libraries and creating new ones using Ruby, thus revitalizing the ecosystem.

- Learn from other programming languages and share knowledge to foster growth.

- Conclusion: Charnes confidently asserts that Ruby is not dead, but it requires concerted effort from its community to maintain relevance and excitement in its usage. The journey presented serves as both a metaphor and a guide, reminding developers of the enduring value of Ruby and the necessity for collective action to secure its future.

00:00:11.100 So today we're going to talk about saving Ruby from the apocalypse. This is the second part of the future of Ruby, the present.
00:00:14.770 If you were just in the last talk, you heard Justin and Josh take us through the history of the language. This talk will continue that story.
00:00:18.550 Hello, my name is Jason. You can find me on Twitter, where I sometimes ramble about useless things on my blog. And because I live the dad life now, here’s an obligatory family photo.
00:00:30.099 I also want to give a shout-out to my family for being super supportive and letting me do things like this. By day, I'm a senior engineer at a company called Linds Reynolds.
00:00:42.129 I'm just curious who in here has heard of Linds Reynolds? Awesome! For the rest of you, I have a question.
00:00:48.550 You picked up that I probably work for a rental company, but you're probably confused about what we do, as that's always the question I get.
00:00:58.170 So, I’m going to poll you: who thinks we might be in eyeglasses? Anyone think we’re a camera rental company?
00:01:10.120 If you ever hear me say Linds Reynolds, that's what I'm referring to.
00:01:19.080 Okay, so I just told you we're going to be looking at Ruby in the present, but today I need your help. Because to safely look at the present, we’ve got to go to the future. I've been to the future; I just returned from the year 2020, and things are rough.
00:01:44.950 Specifically, I checked on how you were doing, and honestly, I think it's just better if I tell you your story. So, you've just woken up. You're not sure where you are; you think you're in a hospital room. You’ve got an IV attached to you, your throat's all dry, so you try and call out for a nurse.
00:02:09.190 No one makes a sound. You scream, "Nurse!" but to no avail; no one comes into the room. You pull out the remote and hit that call button. You keep hitting it, but nobody ever comes. In fact, nothing happens.
00:02:25.390 You slowly wipe your eyes and, as your sight comes back, you see across the room a couch and on that couch is your backpack. Right now it feels like a mile away. Your body’s weak, but you're excited because, well, that’s your backpack. The only problem is that now you've got to get out of bed and get to the couch.
00:02:57.560 You decide, "Okay, I'm going to do this: one, two, three!" and you fall back onto the bed, discouraged. You say, "Okay, I'm going to do this one more time: one, two, three!" and you're up.
00:03:24.849 You start the slow walk from the bed to the couch. Every step is a little stronger than the last, and you finally make it over there.
00:03:27.850 You grab a seat on the couch and start going through your bag. You see all the clothes you're wearing, last you see your shirt, your pants, then you find your cell phone.
00:03:38.350 Yes, your cell phone! This will have all the answers. You go to turn it on, and it's dead. Naturally frustrated, you throw it back in the bag and get dressed.
00:03:47.500 You walk out into the hall; you look to the left, you look to the right, and you're in a ghost town. As you start to make your way down the hall, you hear boom, boom, and the noises get louder.
00:04:05.470 As you reach the end of the hall, you see an elevator with the doors open, and the booms keep getting louder; the noise is coming from inside the elevator. You take a peek down into the elevator shaft, scared, but you do it anyway.
00:04:31.280 You’re greeted by zombies—a container of dead-looking creatures slapping their lifeless bodies against the metal walls of this elevator. That's okay until one tries to reach for you; it scares you, and you fall over.
00:05:01.300 You pull yourself off the ground and take off running to the exit sign. At this point, you don’t know where you are, but it's not where you remember being.
00:05:22.970 So, you make your way outside, and in fact, it's just a normal sunny day—except everything's different. The world seems empty now.
00:05:40.370 About a quarter mile away, you see a road, and you think, "Okay, I'm going to make my way to that road." As you get closer, you start to hear a car coming; it's loud, so you walk out into the street.
00:06:02.230 A car suddenly slams on its brakes, and smoke clears. It’s DHH, and he tells you to hop in. You say okay, you get in the car, and you both take off.
00:06:35.310 Now you're in a car with DHH, and naturally you're filled with questions, like what are your thoughts on single-page applications? Why should I still use Rails? Do you still think TDD is dead? But instead, you decide to ask the most burning question: what's going on here? Where am I?
00:07:01.490 He explains that for the most part, the rest of the world hasn't changed at all, but an epidemic of software developers has broken out. There were too many languages, too many tools, and too many libraries.
00:07:36.330 Decision fatigue became so overwhelming that developers were unable to cope with selecting the right tool for the job. They began to slowly lose their minds and turned into zombies. Once this happened, there was no choice but to isolate all developers to protect society.
00:08:10.810 Rightfully confused, you're taken by DHH to the only thing you have left. As you get closer to your destination, he explains that developers decided to form camps. But all the camps ended up as silos: PHP camp, Java camp, and obviously, there's a Ruby camp, and that's where DHH is taking you.
00:08:49.890 He explains that actually very few Ruby developers turned into zombies during the outbreak. In the distance, you see a shiny diamond-shaped object that begins to beautifully reflect the sun.
00:09:06.570 As you get closer, you realize it’s the Ruby camp, or a base camp if you will. You see some smiling faces writing code, embracing the expressive, beautiful language that you know and love. Hooray!
00:09:30.550 As you exit the car, DHH wishes you farewell. You close the door, stand up, take a good stretch, turn around, and you're greeted by another familiar face—it's Matt!
00:10:10.700 He shows you around, and you get to connect with old friends, meet new ones, and learn to embrace this post-apocalyptic world that you're now part of.
00:10:56.080 Everyone is so friendly, and it turns out that Matt's motto, "be nice," applies in the post-apocalyptic world too. You think at this point, well, Hacker News finally got it right. Ruby's dead.
00:11:49.070 But just like every time in the past you've heard this statement, you're confused. You look around and see tons of people using Ruby. Either way, you're confused but happy to be safe.
00:12:18.890 You grab a bunk and get a good night's sleep. The next morning, over breakfast, you start hearing frightening stories about how we've made software so complex and isolated.
00:12:36.750 There’s just no hope anymore. Every time we think we’ve solved a problem, a new language comes out that’s shinier and promises something better.
00:13:13.350 So, that leaves you with one burning question: who’s going to fix this? Weeks start to go by, and you start to become despondent, maybe a little sad. You miss life as it was before. You ask yourself, how can life return to normal?
00:13:42.240 You put on your thinking face: what can Ruby do to prevent more developers from turning into zombies? Ruby itself is already a pretty powerful language. What seems to be the problem? You're not really sure, but maybe it's time to talk to others in the group.
00:14:56.590 So, over dinner that night, you start sketching your plan with a few of your close friends. You ask, can we reverse this? They say: well, we’ve tried, but no one can hear or see us through all the noise that all the other programming languages are making. Everyone is promising the best, and we just can't do it.
00:15:58.330 Disappointed, you let the conversation turn to something else, eventually calling it a night and deciding you'll try again tomorrow.
00:16:24.320 The next morning, you ask Matt to go on a walk, and he agrees. As you stroll around the camp, he explains that ever since the outbreak, he has been trying to keep Ruby alive.
00:17:01.480 He emphasizes that while he doesn't believe Ruby's dead, he tells you that he can't keep it alive alone—neither he nor the core team. It requires more than that!
00:17:38.170 You ask, how can I help? But before you can finish your question, he's called away. How frustrating! You love Ruby and all you want to do is fight for its survival.
00:17:47.400 Others have tried, and while some are still trying, it just feels like a wasted effort. You try to go to sleep that night, tossing and turning.
00:18:09.680 Finally, you say to hell with it. You get up, head to the campfire, and dream of a simpler, happier time in Ruby—a time much like the one you saw in the previous song.
00:18:38.590 It hits you: you’ve got to step up! You've got to be the one to save Ruby! Excited to save Ruby, you decide to take some time to problem-solve.
00:19:05.420 I mean, after all, you're a software developer. You start thinking about the problems at hand. Well, Ruby isn't necessarily the shiniest language anymore, other programming languages are coming out, and they’re so popular!
00:19:39.830 People are being jerks about Ruby on the internet now, and developers are moving on, just abandoning the libraries we rely on.
00:20:21.780 You think, okay, before I try to figure out more problems or dig into solutions, I want to reach out to other people. I want to go to these other camps and learn what other programming languages have done, as they've all been in this situation.
00:20:56.160 So, without changing Ruby the language, are there any ideas I can bring back? Anything that could be introduced? Anything I can learn from other languages?
00:21:21.550 You spend weeks traveling around to find these developers—anyone who will talk to you. You visit the Python camp, PHP developers, Java developers, even .NET developers, Elixir developers, and JavaScript developers.
00:21:54.680 You take some time at each camp to understand the problems they’re trying to solve and the different approaches they take.
00:22:18.350 The thing that you learn is that they're actually all trying to do good, however skewed some of the approaches may be to you. They’re taking what they think is the best approach. After your time at camp, you try to make your way back home, feeling good from the amazing conversations.
00:24:02.180 But on your way back, you hit a JavaScript zombie who’s trying to turn you with all his frameworks and tools. You get past him safely, but then you're met by the PHP zombie of the past: "MySQL connects, it’s so easy to deploy, we don’t even have object-oriented!" This is our early 2000s PHP zombie.
00:25:08.430 Finally, you let out a sigh of relief as you safely return to camp. You’re re-energized by everything you’ve learned.
00:25:39.180 You sit down, focusing intently on the problems at hand—keeping Ruby alive. You think deeper and realize that Ruby isn't dead, but rather we need to keep Ruby relevant.
00:26:03.560 That seems more accurate. So you identify five specific problems.
00:26:33.170 First, people are talking about Ruby rather than celebrating its pros. People are shouting its cons instead of taking action or being the change they want to see. They’re just ranting online and bailing.
00:27:08.730 You see that familiarity breeds contempt; several people using Ruby before the apocalypse are starting to find it boring and are no longer excited to use it. They've just given up.
00:27:52.280 You also observe that libraries are going unmaintained. A scroll through GitHub reveals that many once-thriving libraries are now abandoned, racking up GitHub issues and making all of our applications forced to become legacy.
00:28:10.249 There are no new ideas coming in; people decide it’s just best to chase these new languages. This leads to fewer products being built with Ruby, and unless people are building products with Ruby, less relevant Ruby becomes.
00:29:07.420 So now that you've identified the problems, it's time to talk to the camp. You say, okay, let’s look at some ideas on how we can keep Ruby relevant. You suggest that we talk about Ruby more.
00:29:44.390 Years ago, the internet was filled with articles discussing the problems people solved with Ruby. Now, many of those articles collect dust while people talk about leaving Ruby for X. Those discussions, whether fair or not, don’t help. That’s how we ended up in this mess.
00:30:35.430 You challenge everyone to share and learn any new tricks they come across, even if they think the ideas are silly. Just because you're excited about them doesn’t mean they won't help.
00:30:54.420 You challenge people to learn new ideas and explore other programming languages. Learn them, understand what they’re useful for, and see if there are concepts you can bring back to your own code.
00:31:19.100 You’re sure there’s a lot we can learn from each other, even outside our own community. Continuing through your solutions, you bring up once-popular libraries that are now abandoned.
00:31:37.890 You encourage people to start digging into them and building new libraries. Things change, we have new ideas, new ways to do things.
00:32:05.020 You encourage everyone to do this: if you don’t like the way something is done, write it the way you think it should be done.
00:32:51.320 Encourage some of the teams to start building new applications with Ruby—even if they don’t succeed, some will. The successful ones create jobs for Ruby.
00:33:10.740 Armed and ready for battle, your team gets to work writing blog posts about everything they’ve learned.
00:34:01.400 People are blogging about the problems they're solving with Ruby, sharing new tricks they’ve learned. Teams are forming, going out to other camps and learning how they can solve problems, eager to learn from others.
00:34:53.760 They’ve made their way out to unfamiliar terrain in search of growth and new ideas.
00:35:03.490 Libraries once abandoned are finding new life from everyday developers like you. Issues are being closed, pull requests are being merged, and people are upgrading their applications.
00:35:51.580 Instead of painful tears, there are tears of joy. Tired of complaining, people started to build new libraries with Ruby, solving problems with code and improving the ecosystem as a whole.
00:36:43.740 The more entrepreneurial types are building products and systems to solve problems.
00:37:20.320 Others who have preached Ruby’s demise are now witnessing a renaissance of a language that, while never dead, had seemed stale. Other communities have taken notice, now recognizing Ruby as a relevant language.
00:38:01.820 The world begins to find balance; developers stop turning into zombies and instead become normal people solving problems with the language they love.
00:39:50.320 Our silos and camps begin to disperse, making it safe for Ruby developers to enter the world again. Pieces are banded together, and software, though as usual, won't be the same.
00:40:43.330 So, with that absurdly ridiculous story in place, I want to talk about the present state of Ruby and pose this question: Is Ruby dead?
00:41:52.640 I am always the first to admit that when I see articles like this, I start to believe them because I think, "Oh, they’re right. I need to abandon ship. I start looking for a new job and thinking it’s time to learn Elixir. It’s over."
00:42:42.320 But I started reading those articles years ago and I still have a Ruby job. I still attend conferences with many other Ruby developers.
00:43:48.860 So, I don't think Ruby's dead, but I do want to examine something I’m not ashamed to admit I may not know as much about as I should.
00:44:23.030 Is there anybody familiar with the hype cycle? If you're not familiar, I’ll give you a very non-official JSON definition of it.
00:44:55.830 According to this model, successful technologies go through these five phases. The first is a technology trigger; this is when a technological idea, maybe a proof of concept, enters the world.
00:45:29.440 The second is the peak of inflated expectations. That’s the point where people start to believe, whether they're right or wrong, that this new technology will solve all their problems.
00:46:02.410 The third phase is called the trough of disillusionment. This happens when the expectations aren't met, and people realize, "Oh, this technology did not solve my problem."
00:46:48.370 Fourth is the slope of enlightenment; this is the moment when people start to actually weigh the pros and cons and make a more justified decision on using a technology.
00:47:39.050 And finally, there’s the plateau of productivity. This is when things start to balance out, and people that know they need to use this technology are effectively using it.
00:48:04.140 So now that we have that wild definition, let's look at that in terms of Ruby. The technology trigger? I like to think it falls somewhere between when Matt released Ruby in '93 and the mid-2000s when Rails came out.
00:49:14.330 I consider this the technology trigger for Ruby. The peak of inflated expectations? Ruby was the object-oriented language that would rule above all. It was shiny—it made developers happy! Everyone was talking about it.
00:50:01.080 Next, disillusionment. "Oh, Ruby's too slow; it's just a toy language!" The language didn’t claim to solve those problems, but people expected it to.
00:50:21.190 The slope of enlightenment—what do we know we can get from Ruby? We know its weaknesses and businesses are building all kinds of apps with it.
00:50:52.730 It has been adopted. Finally, Ruby is mature. And that’s where I think we are today: on this plateau.
00:51:28.790 Many of us—well, probably all of us—use Ruby every day. It's one of my main tools. There’s not much to talk about Ruby per se anymore, but I still love to share about it.
00:52:25.220 So with that said, is Ruby dead? No! I feel so strongly about this that I even made a website for it: IsRubyDead.com. Next time you're unsure, check it out!
00:52:41.400 Just because Ruby isn't dead doesn't mean we don’t have to fight for relevancy. So what are some ways we can keep Ruby relevant?
00:53:20.240 Well, you already know how to do that because you saved the world earlier! Talk about Ruby more. Learn some new ideas.
00:54:04.200 Help maintain abandoned libraries! I have two specific examples I can share with you right now. The first one is a talk online by Richard Schneeman at RailsConf 2016, talking about how he became the maintainer of Sprockets.
00:54:41.590 It was a wild first three minutes, and you did not know what was going on, but it’s very good!
00:54:57.160 The next is an article that was just published in Wired Magazine about Justin Searls, who was just up here talking about how he took responsibility for RSpec after the passing of Jim Wyrick.
00:55:24.920 We know where these libraries are; we can see when they start to feel stale or haven’t been updated in a while.
00:55:59.450 Anytime we introduce one at work, I always check when was the last commit? Build new libraries when you learn new ideas.
00:56:25.120 If you think you have a better way to solve a problem, just make it a gem! Even if it doesn't become the next big thing, it might help someone else, and that helps keep Ruby relevant.
00:56:53.840 Also, build the next Rails if you feel like it! You might be thinking you're not the type to build a product and sell it, but if you do build a successful product, this is hard to do.
00:57:26.610 If you build a successful product, you create more jobs with Ruby. More Ruby jobs mean that this influx of junior developers can start getting jobs.
00:58:01.370 Ruby can stay relevant and continue to grow. And I’d like to add one more thing: teach people Ruby!
00:58:36.100 There are a lot of times I have friends who ask me how I got into programming, and I tell them my story: I stumbled upon it. I’m a college dropout because I’m really bad at math. Ruby means a lot to me; it helped me develop my skills.
00:59:36.710 So, I want to share Ruby with my friends who want to learn it. You might ask, Jason, why do you care so much?
01:00:00.000 Well, share some time with me, and you'll learn that I really love this language. There are many reasons, but mostly it's because it literally changed my life.
01:00:20.590 Like I said, I was a college dropout, but it wasn't until I was studying computer science that I knew I wanted to be a programmer.
01:00:54.340 Ruby helped me bridge that gap from being a college dropout to a full-time employed senior software developer. It made complex things more approachable for me.
01:01:25.160 And the thing is, I know I'm not alone. I've talked to many people in this community, and they have similar experiences to mine.
01:01:51.250 It's not perfect, but I’d be lying if I said it doesn’t bring me joy to use every day. It turns complex problems into fun challenges.
01:02:17.440 It’s at a point now where it’s mature, battle-tested, stable. It may not be the shiny, hip tool, but that doesn’t mean it’s irrelevant.
01:02:39.950 At the end of the day, a programming language is more than just the language itself; it’s the entire ecosystem around it.
01:03:28.470 So when I say ecosystem, I mean it includes the community, the tools we build, and the libraries—the types of problems we’re trying to solve.
01:04:10.330 Even if we don’t have commit access to Ruby, or at least I don't, it doesn't mean we can't make a difference.
01:04:46.940 So next time you think Ruby is dying, see if there's a way you can do your part. Find me on the internet; I have stickers for GoRails that my buddy Chris Oliver sent me with, and stickers for Prompt.
01:05:39.620 If you don't know what either of those two things are, come see me. I'm super shy; if you talk to me, I'll not stop talking to you, and thank you.
01:06:25.180 And also, thank you for clapping so I didn't have to use this slide.