Talks

Lotus and the future of Ruby

Lotus and the future of Ruby

by Luca Guidi

In the closing keynote of RubyDay 2015 titled "Lotus and the Future of Ruby," Luca Guidi discusses the evolving landscape of programming languages and the future implications for Ruby. He reflects on the community's commitment to Ruby despite its perceived decline in popularity compared to newer languages. Guidi highlights that while Ruby remains strong in web application development, there is a noticeable trend of companies moving towards more performance-oriented languages like Go, particularly for performance-critical applications. He emphasizes the importance of understanding why developers may be leaving the Ruby community to maintain its relevance over the next decade.

Key Points Discussed:

  • Ruby's Current Standing: Ruby is ranked ninth among programming languages, maintaining a significant presence despite competition from newer, more appealing languages.
  • Polyglot Programming: Future programming landscapes will include various languages better suited for specific tasks, thus reducing Ruby's all-encompassing development role.
  • Ruby's Strengths: The language excels in developing web applications that require frequent updates and dynamic features, leveraging its expressive syntax.
  • Concerns About Concurrency: Ruby struggles with modern concurrency needs and must evolve in this area, especially with upcoming versions like 3.0.
  • Lotus Framework: Guidi discusses his work on Lotus, a lightweight framework aiming to improve performance and reduce complexity while retaining functional strengths from Rails.
  • Fostering Community: Highlighting the importance of welcoming newcomers and simplifying development processes to enhance Ruby's ecosystem.

Conclusively, Luca Gudii stresses the necessity to refine Ruby's unique strengths and embrace contributions from the community to ensure the language's longevity and relevance. By nurturing new developers while enhancing the ecosystem for experienced engineers, Ruby could face the future with confidence.

00:00:00.000 Hello, everyone. My name is Luca Guidi, and you can find me on Twitter as '@LucaGuidi'. I would love to continue the conversation after this talk, so feel free to reach out.
00:00:18.359 This edition of RubyDay has been wonderful, and I truly enjoyed all the talks I attended. I hope you did as well. We have seen a lot of interesting use cases for Ruby, and we discussed various algorithms this morning. It's exciting how Ruby can serve as a bridge to other systems, such as what we saw with the Opal lightning talk.
00:00:38.820 During this conference, we talked about different fields where Ruby is applicable. Of course, you are all aware of these topics, but today I want to focus on the future of the Ruby language. Thank you for being here and for being part of this community.
00:01:09.960 Even though we may not be seen as the 'cool' language anymore, I appreciate your continued support. I understand that there are newer languages out there that are gaining popularity due to their performance and features. Thank you for remaining part of this community despite the allure of those other languages.
00:01:40.020 Some developers are considering migrating to these new languages that have intriguing features. It's important for us to learn why people are leaving our community, especially when other languages are being viewed as 'cool' again. Even Java has adopted functional programming concepts and is regaining its popularity.
00:02:08.670 From here on, let's consider if Ruby can still be the language we use to build serious applications in our companies for the next decade. I want to ask—how many of you have ever wondered if Ruby might die? I'm relieved to see that I'm not the only one thinking pessimistically. I have asked myself this question many times.
00:02:54.590 First, this concern stems from my career, as most of my professional work has revolved around Ruby. I wanted to make sure that my skills would still be relevant in the coming years. The second reason is related to my work on Lotus, which is a significant commitment of time and resources. I want to contribute to open source in a language that remains meaningful for the future.
00:03:38.810 I believe that a language doesn't die—at least not completely. Think of languages like COBOL; they may no longer inspire many developers. We want to avoid Ruby becoming like COBOL, and it's crucial that we think seriously about what we can do today to ensure our language continues to thrive.
00:04:06.739 Before we leave this room today, I encourage you to look at the most recent programming language rankings. As of November 2015, Ruby is in ninth place among programming languages. While we may feel under attack from newer languages, it's important to acknowledge that we still hold a dominant position.
00:04:53.240 Now, envision the future of Ruby over the next five years. I see a polyglot landscape. Thanks to improved developer tools, we can choose the right language for each task. In the past, we relied heavily on Ruby for all development work, primarily because we had a Ruby development team.
00:05:34.220 The landscape has changed. Modern languages such as Go are becoming more developer-friendly with features resembling dynamic languages and efficient memory management, unlike the manual management required in C or C++. Additionally, as we shift towards cloud computing and containers, the relevance of comprehensive systems languages lessens.
00:06:55.060 I've seen companies, including the ones I work with, moving away from Ruby for performance-critical tasks. Increasingly, Go is the preferred choice due to its simplicity and performance. We might find that Ruby's adoption will decline in performance-sensitive sectors.
00:07:31.320 However, Ruby has a stronghold in building web applications. In fact, Ruby is particularly suitable for developing large web applications, as they often require frequent updates and dynamic features. Companies still need to deliver new capabilities quickly, and this is where Ruby excels.
00:08:02.950 In summary, I believe Ruby is here to stay. Don't be intimidated by new languages. However, we need to be careful not to pursue features where we may struggle to compete with these languages.
00:08:39.930 For instance, consider concurrency; Ruby was created during a time when single-CPU computing was the norm. Unfortunately, the modern landscape poses significant challenges for Ruby in this area, as newer languages have been developed with concurrency as a fundamental principle from the start.
00:09:05.950 When it comes to upcoming versions of Ruby, like version 3.0, there are initiatives being explored to update Ruby's concurrency model. However, such changes must be approached cautiously since they might disrupt existing applications and investments.
00:09:51.160 Instead of trying to replicate what other languages are doing, we should concentrate on refining Ruby's unique strengths and carving out a defined purpose. For example, if I were to create a command line application today, I would likely choose Go due to its speed and convenience compared to Ruby.
00:10:30.100 The challenge is to find scenarios where Ruby excels. For instance, we can look at current compelling uses of Ruby such as Homebrew, which is a package manager for macOS. Many might assume that the next version of Homebrew should be built in a low-level language like Go, but Ruby has proven effective and accessible.
00:11:11.200 What makes Homebrew successful is its ability to make contributions easy. The syntax of its formulas is so readable that even those unfamiliar with programming can contribute with minimal addressing of syntax.
00:12:34.430 Similarly, I want to emphasize that Ruby's expressive syntax allows us to build bridges across complex systems, such as the various libraries we see being developed today.
00:13:00.020 Through its expressiveness, Ruby can continue to fill niches in various domains. We should strive to make Ruby more approachable and encourage contributions to ensure our community continues to thrive.
00:13:40.570 Now, speaking of newcomers, it's vital that we welcome them into our community. Teaching tools such as 'Hello Ruby' can effectively introduce children to programming concepts using Ruby as the medium.
00:14:02.550 We're at a critical moment in shaping the future of Ruby. By fostering a welcoming environment for newcomers, we can help build a community that is robust and inclusive.
00:15:01.990 While we invest effort in nurturing fledgling developers, we also need to focus on enhancing our ecosystem to attract experienced engineers who can tackle the challenges that arise as our applications grow.
00:15:50.390 Next, let's discuss Rails. I've used Rails throughout my career and seen countless applications face similar challenges.
00:16:28.530 Particularly, I've observed that many applications fall prey to bloated controllers and models. With the historical growth of Rails, the framework itself hasn't adapted well to its evolution, which can discourage newer engineers from adopting it.
00:17:01.210 In modern education, we've observed a shift away from Rails towards lighter alternatives, such as Sinatra or Lotus. Many teachers have reported that with these simpler frameworks, students can progress more quickly and enjoyably.
00:17:46.900 In my work on Lotus, I wanted to create a framework that retains the best parts of Rails while being significantly more lightweight and efficient. I started it as an experiment three years ago, and through continued iterations, I've been able to develop a robust community around it.
00:18:40.510 Lotus aims to provide a powerful but minimal set of features, ensuring we strike the right balance between functionality and performance without overwhelming users.
00:19:20.590 I intend for Lotus to be both lightweight and capable of handling the various complexities encountered in real-world applications. Before launching Lotus 1.0 in a few months, I will focus on improving the API and simplifying the model.
00:20:05.640 The upcoming features will focus on including static assets while also supporting third-party gem integrations, ensuring the development processes are user-friendly.
00:20:50.380 Our development philosophy emphasizes making deployment simple and rapid without compromising performance. We recognize the importance of reducing deployment time while catering to modern HTTP standards.
00:21:35.510 As part of improving Lotus, experimental support for HTTP/2 will also be integrated, enhancing performance significantly. I have shared a few repositories related to these experiments for your feedback.
00:22:22.510 Moreover, as we consider future plans, I intend to simplify the processes further to promote Lotus within the Ruby community. Contributions are always welcome as we collectively improve this framework.
00:23:13.430 Finally, I'd like to invite each of you to try out Lotus, share your experiences, and participate in refining this project. Collaboration is welcome to help shape a vibrant ecosystem surrounding Ruby.
00:24:00.320 Thank you for your attention. Please feel free to reach out with questions, thoughts, or ideas as we work together to advance Ruby and its community.