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!