Bozhidar Batsov

Ruby 4.0: To Infinity and Beyond

Ruby 4.0: To Infinity and Beyond

by Bozhidar Batsov

In the closing keynote titled 'Ruby 4.0: To Infinity and Beyond', Bozhidar Batsov addresses the future of the Ruby programming language and the Ruby community at the Euruko 2017 conference. He begins by playfully acknowledging the challenge of being the final speaker, heightening the anticipation that builds from the previous speakers' presentations.

Batsov expresses his excitement about the burgeoning Ruby community and announces a new traveling conference, Balkan Ruby, intending to bring more focus to Ruby development in the Balkan Peninsula. His passion for Ruby and open-source contributions is evident as he shares his mixed feelings toward Rails, stating his preference for the Ruby language itself.

Key points discussed during the talk include:
- Current State of Ruby: Batsov discusses Ruby’s maturity and challenges, as articulated by its creator, Matz. He emphasizes the balance Ruby maintains between innovation and compatibility.
- Ruby 2 Innovations: Significant changes in Ruby 2.x, such as keyword arguments, UTF-8 default encoding, and others that enhance the language but may still be overshadowed by performance issues compared to Java.
- Ruby 3.0 Prospects: Speculation around the anticipated features of Ruby 3.0, including challenges surrounding concurrent programming and static typing, which have not yet materialized.
- Community Involvement: Batsov advocates for greater engagement from the Ruby community to influence the language's evolution and improve its standard library, promoting feedback on bugs and feature requests.
- Future Directions: The potential for projects like JRuby and Opal to keep Ruby relevant across various platforms is highlighted, suggesting a way forward amidst current challenges.

As he concludes, Batsov urges the Ruby community to come together to shape the language's future and ensure it remains creative, efficient, and user-friendly. He emphasizes the importance of celebrating Ruby's past while strategically planning for its future, leaving the audience with a hopeful message about collaboration and growth in the Ruby ecosystem.

00:00:09.510 Hello everyone! It is really interesting to be the final speaker at any conference. On one hand, I'm kind of nervous because everyone before me was so amazing, which raises the bar very high. On the other hand, if I slightly mistime my two hundred and sixty slides, there’s nobody after me to complain, or at least I hope so.
00:00:17.200 My name is Bozhidar Batsov, but I realize that many of you probably cannot read it, and even worse, you probably cannot pronounce it. My friends call me Buck, and they have been doing so for many years, long before I became a software engineer. So presumably, that has nothing to do with the quality of my work—although, if you look at the issue trackers of my open-source projects, maybe that's not entirely true. I know I sound like a Russian hitman, but I'm actually from Sofia, Bulgaria. If you ever want to get a Russian accent, just spend 33 years in this magical city, which maybe some of you remember from last year’s conference.
00:00:54.879 I know that many of you might be feeling a bit melancholic that Euruko is ending, but I hope you have fond memories from your time in Sofia. With that, I'd like to announce a brand new Ruby conference. While Ruby might be perceived as dying, the community is growing. The very same team that brought you Euruko last year in Sofia is starting a new conference called Balkan Ruby. It is going to be a traveling conference on the Balkan Peninsula. We not only have wars, kidnappings, and mafia but also great Ruby developers. Join us again in Sofia next year; it’s going to be a lot of fun with great food!
00:01:29.109 I work at Opto, and for us, it is an honor to support this event once again. Opto is built on Ruby, and we are very grateful to the core team and all the open-source contributors because they made it possible for us to build a successful and useful business. We are proud to give back to the community.
00:01:46.190 I'm feeling a bit nervous right now; I planned to emulate Victor, who was the best speaker at the conference. But if I’m silent for 40 minutes, it will likely look a bit weird. So bear with me!
00:02:00.130 I might take a moment to mention that I contribute to open source. I'm very obsessed with writing good Ruby code, and since I go through Ruby on Rails applications, I have a mixed relationship with it—I sometimes despise Rails, but I love the Ruby language. I even wrote a very evil tool, and I know that a lot of people hate me for it. I'm on Team Extreme, and just to remind you, Emacs is the one true editor! It will restore balance to the force and appease the ever-complaining crew.
00:02:34.390 I wrote about another project for a different conference, but it doesn’t matter. What really matters is that I'm excited to be here for a multitude of reasons. Number one is that last year I was supposed to be here, but I ended up in a Bulgarian hospital—I got extremely sick on the day of the conference, so much so that I was told to sign a paper for an emergency surgery or I’d die. They asked if I wanted to skip the surgery; I replied, not really if I wanted to die.
00:03:17.000 This year, the organizers were kind enough to invite me again so I could share what I was supposed to share last year. Today, we are going to talk about the future of Ruby. Now, I realize some of you are thinking about what I might share as I'm not on Ruby's core team or on the Rails core team. In fact, I'm not part of any core team, which may seem like I lack competence to speak about Ruby's future.
00:05:40.990 At several conferences, Matz has mentioned the target date for Ruby 3.0 being the Summer Olympics in Tokyo in 2020. However, he later revised this estimate, stating it was overly optimistic. Currently, it’s hard to predict when Ruby 3 will happen, but I’m sure of one thing: it’s not going to happen anytime soon.
00:06:22.994 Recently at conferences, Matz has been saying that Ruby is now mature, which is great. He’s acknowledged the mistakes made but stated that because compatibility is essential, fixing those mistakes is challenging. While it sounds good to say Ruby has survived for 24 years, the word 'survived' carries a negative connotation. I’d rather say Ruby has strived for 24 years and will continue to strive for many more.
00:07:06.295 Matz has mentioned that very few tools survive so long, suggesting we should bet on them. I believe he was indirectly referring to editors, especially alternative ones. He also noted that people are still making a living with Ruby, perhaps implying they shouldn't complain if things aren’t perfect. However, I can point out that people are also still making a living with COBOL, and you know what? It pays very well to be a COBOL developer because nobody wants to deal with it.
00:07:51.063 Matz shared that we need to build what the users need instead of what they want, which he quotes like anyone else does. But I believe that making bold claims requires a proven track record of innovation. You really need to have delivered on things that we needed but didn’t know we needed. So let’s take a look at the recent Ruby innovations.
00:08:46.210 Let’s start with Ruby version 2. When we talk about Ruby, we are speaking of the language we all fell in love with due to its simplicity, beauty, and ability to express our thoughts in easily understandable ways, unlike Java. For me, this is the essence of Ruby. The performance of MRI (Matz's Ruby Interpreter) is a topic of debate; we want it fast, but personally, I prioritize the language itself.
00:09:27.080 In Ruby talk, we have seen some innovation such as keyword arguments, which was overdue by at least seven years. The literal syntax for an array of symbols was also a long-awaited addition. There were other changes like UTF-8 being the default source encoding, a change that was long overdue too. Experiments with refinements didn’t quite take off as they were not asked for by developers. The new addition of rational and complex literal syntax has seen limited use.
00:10:19.540 Ruby 2.0 to Ruby 2.3 brought several useful changes, including frozen string literals and safe navigation operators. Even though these changes are helpful, not everyone appreciates how under-documented some of these features were, leading to developers finding them out accidentally. We have also seen advancements like support for Unicode case mappings and significant library updates. Each Ruby version introduced features that seemed enticing but still seemed too slow in comparison.
00:11:36.006 As I see it, Java is innovating more than Ruby at this time, making significant changes and updates regularly—something Ruby struggles to achieve while focusing on compatibility. Java has been able to push forward at a rapid pace, releasing major versions every six months. It’s puzzling that Ruby has become so dominated by Rails; it feels abnormal for a single framework to control the fate of a programming language.
00:12:20.000 I believe everyone should look beyond just Rails. There are alternatives like Trailblazer and Hanami that we must consider.
00:12:42.100 Let’s talk about Ruby 3.0 and the future of Ruby, as I promise that this talk will also feature programming code—something uncommon for Ruby conferences. What do we know? Unfortunately, we don’t know anything concrete. For a while, there had been talks about Ruby 3 featuring optional static typing, but that idea was officially rejected.
00:13:06.809 Recently, there have been discussions about duck typing, which is promising, but clear communication about its implementation is vital. We also need better support for concurrent and parallel programming.
00:13:44.240 Currently, there are many excellent talks on concurrency, and I believe we need to learn from them. It seems that one promising method is called 'goes', particularly with GIL (Global Interpreter Lock). Achieving concurrency effectively without removing the GIL seems to be a compromise.
00:14:19.560 Matz has spoken about achieving three times faster performance, but to date, specifics haven't been shared. Luckily, it appears we will be getting creative with some quirky language features and ensuring unnecessary mistakes, as seen in JavaScript and PHP, aren’t repeated in Ruby.
00:15:08.320 Let’s not forget some of the less discussed but significant issues, like how Ruby has relied on Rails. The management of different features, like the introduction of optional static typing the following implementation, requires careful planning.
00:15:54.310 One particular issue that I think we should address is the overall state of the Ruby standard library, which is believed to be stuck in the past and influenced by legacy code. It's vital that we consider the latest feedback from the community to update and maintain relevance.
00:16:41.030 If we want Ruby to grow and adapt, we need better communication about the vision for the future, and that includes tracking change requests. The aim is to ensure that Ruby not only meets developer needs but can also evolve rapidly along with the demands of the industry.
00:17:16.469 The bottom line is that Ruby is your language as much as it is mine. Together, we can shape its future, starting from rigorous feedback on bugs and issues.
00:17:56.391 As I wrap up, I'm reminded of how much I would like to see Ruby not only survive but thrive—by encouraging community involvement in making sure Ruby sees the positive changes needed to walk into its next chapter together.
00:18:36.891 The question of whether Ruby has seen the last of its major updates arises as I try to envision the future. While it may be a long time before we see a new version, the excitement with initiatives like JRuby and Opal demonstrates a want to keep Ruby relevant across different platforms.
00:19:24.950 Ruby's challenges are not insurmountable, and if you care about the language, consider getting involved! There are various avenues available for contributing or improving features that fuel creative coding.
00:20:11.589 In line with that effort, celebrating Ruby’s history while planning strategically for its future is essential. But let’s not forget the excitement for what’s next as we think about how to balance innovation with stability.
00:20:58.760 I’d like to close with a thought that the future is here; it's just not evenly distributed. And if we, as a community, come together, we can make Ruby the language it should be, one that lives up to our expectations—creative, efficient, and user-friendly.
00:21:44.140 Thank you all for being here; it's an honor to share this moment with you. Enjoy the rest of the conference and the after-party!