Talks

The state of the Rubyverse

The state of the Rubyverse

by Lucian Ghindă

In the presentation titled "The State of the Rubyverse," Lucian Ghindă, an enthusiastic Ruby developer and the author of the Short Ruby Newsletter, outlines the current landscape of the Ruby programming language at the Friendly.rb 2023 conference. The discussion revolves around the various projects and developments within the Ruby community, aiming to spark conversations about the future of Ruby and its implementation.

Key Points Discussed:

- Ruby Implementations: Lucian explains what 'Rubies' refers to, highlighting different Ruby interpreters, compilers, and virtual machines. He particularly focuses on CRuby and its recent features included in the preview release.

- New Features and Developer Engagement: Since Ruby 2.7, a variety of new features like Data Classes, Hash Literal Omission, and pattern matching have been introduced, enhancing Ruby's capabilities while also influencing developer experience. Lucian emphasizes the importance of adopting these changes for better coding practices.

- Web Frameworks: The talk covers several web frameworks beyond Ruby on Rails, including Hotwire (for real-time updates), Hanami 2, and Sinatra. Lucian introduces lesser-known frameworks like Roda and Grape, showcasing their applications in modern web development.

- Innovative Projects: Lucian highlights exciting projects utilizing Ruby such as M Ruby for embedded systems, Scarpe for GUI applications, and Ronin for security research, which illustrate Ruby’s growing versatility.

- Integration with AI: The integration of Ruby with modern AI technologies is touched upon, mentioning tools like OpenAI and Langchain that expand Ruby's utility in artificial intelligence and machine learning.

- Developer Experience Improvements: The presentation concludes with a look at ongoing enhancements in Ruby's developer experience, including debugging tools and syntax improvements which contribute to making Ruby user-friendly.

Conclusions and Takeaways:

Lucian encourages the Ruby community to explore new tools, engage in discussions, and share insights to contribute to the evolving landscape of Ruby. The presentation showcases that Ruby is not just a programming language but a growing community full of possibilities, innovation, and collaborative spirit.

00:00:20.439 If you don’t know what it does, Lucian goes on Twitter, Mastodon, and other sources to compile a summary of what happened during the past week in the Ruby community. It’s incredible because, you know how on Twitter everything is ephemeral? Everything goes away after you read it and forget it. Well, you can find it in his newsletter, so it’s amazing. Therefore, I think he’s the best person to speak about the state of the Rubyverse. So, please give it up for Lucian!
00:01:13.759 Hello. I mean, I’m still doing the newsletter for myself, and I’m glad that you enjoyed it. I’m not sure I’m the absolute best at this; probably there are people with more experience than I have. I just want to lower expectations a bit regarding this presentation.
00:01:34.079 So, who am I? This is me. I look pretty much the same; I always wear the same kind of cut. You can find me on various social media platforms, and that’s my email there. I will pass through this quickly but want to set the stage about what I’m going to present and provide some disclaimers or notes beforehand.
00:01:57.320 The thing is that I’m compiling a variety of items happening in the community, which I will categorize. However, there may be things I missed, and there are certainly projects that should be here but I didn’t include. This is not a top list, nor is it based on popularity or the number of downloads. I want to share what excites me about the Rubyverse. I aim to spark conversation and encourage discussions on future directions we might explore. Additionally, I want to clarify that my criteria for inclusion was that each project has at least one commit this year. This does not mean that projects with no recent commits are not actively maintained; it may just indicate that they are stable.
00:02:59.239 Lastly, I want to make it clear upfront that I don’t intend to convince you to change anything, nor will I make judgment calls about which projects are better. I will simply state what is happening differently. Now, what I’m going to talk about includes Ruby implementations, web frameworks, the Gems category, developer experience, and artificial intelligence encompassing large language models and machine learning.
00:03:45.159 Let’s start with the multiverse of Rubies. I want to give a brief definition of what I mean by 'Rubies.' This term refers to interpreters, compilers, or virtual machines that work with Ruby syntax in some manner. I will mostly focus on compilers, interpreters, and virtual machines. Before diving into this, let’s engage a bit. Raise your hands if you know at least one Ruby implementation. Okay, so I see at least one. Now, who knows more than two? More than three? More than four? More than five? More than six? Wow! I see some hands there—this talk is definitely not for you; you already know these.
00:04:41.039 However, for those who might not be familiar, when you work with Ruby and use web frameworks, I assume you’re mostly working with CRuby. It’s the standard implementation. Initially known as MRI, the term we commonly use now is CRuby because it’s written in C. The 3.3 preview release recently included some new features.
00:05:40.200 I’m not going to explain everything here. My goal is to show some interesting developments that are happening. My sense is that we are evolving; things are moving forward in this universe.
00:06:07.999 I want to briefly touch on the developer engagement aspect because I might show you code you may or may not agree with. The purpose of this isn't to convince you but to share my passion for adopting new features, libraries, and developments. I learned Ruby back in 2007, and at the time, it felt strange. It challenged how I wrote code, which introduced emotions and discussions about Ruby not scaling effectively.
00:06:55.560 This emotional connection remains. Some people still claim that Ruby doesn't scale, often based on personal experiences. You may also have noticed that learning a new programming language influences how you perceive problems. The language we learn reflects and shapes our thought process, influencing how we code.
00:08:07.580 Since Ruby 2.7, numerous new features have been ongoing. However, some organizations are slow to adopt them despite having rules in place to enforce their use. We must embrace these changes; otherwise, we cannot establish better practices concerning them.
00:09:13.360 A recent and notable feature is 'Data Classes'—immutable objects similar to structs but without setters. Additionally, we have features like 'Hash Literal Omission' that allow for cleaner code by omitting redundancy. I noticed some debate around this topic. Some developers are still hesitant about using new methods, but I encourage experimentation.
00:10:15.520 We have also seen developments surrounding pattern matching, enabling more complex coding techniques. As you can see, there is a focus on speed, especially since Ruby 3.0 introduced significant performance improvements. Another exciting development includes new Just-In-Time (JIT) compilers that promise faster execution times.
00:11:12.760 Now, what else is present in the Ruby ecosystem? We see implementations like CRuby, Fullstack Ruby, JRuby (which runs on the Java Virtual Machine), and Truffle Ruby, which emphasizes performance. Not to mention M Ruby, aimed at embedded systems; this brings an entirely new worldview to how we can utilize Ruby.
00:12:12.240 I found some fascinating projects utilizing M Ruby for real-world applications, stretch far beyond web apps into various sectors like POS systems and robotics.
00:12:49.880 Now shifting to web frameworks, let’s see how many of you know more than one web framework in Ruby? Let me see some hands again. If you’re familiar with Ruby on Rails, I won’t delve into it much today; it has an overwhelming amount of documentation covering its advancements.
00:13:53.680 However, I want to mention some significant updates, such as Hotwire, which has been a game-changer in creating web applications, improving our ability to make real-time updates with little overhead. Another exciting release is Hanami 2, which offers a simpler structure and has gained popularity among companies.
00:14:50.440 Sinatra is also worth mentioning, an older framework known for its elegant DSL. Sinatra maintains relevance with smaller releases that keep up with modern web development practices.
00:15:52.560 To explore other frameworks, we have Roda which offers complex routing patterns. This veteran still stands strong and has been recognized for its performance in benchmarks. Meanwhile, we have grown interesting projects such as Bridgetown, a site generator that now offers server-side rendering capabilities as well.
00:16:54.320 Grape stands out as a REST API framework, fulfilling common needs like versioning and different formats pre-configured. Companies like GitLab are utilizing it effectively in production.
00:17:33.960 There are also unique and fun frameworks like Camping, created by why the lucky stiff—a nostalgic return to simplicity and alignment with core Ruby principles. Cuba is another micro-framework focused on providing minimalism and flexibility.
00:18:28.880 Among the lesser-known is Ruby on Jets, which aims to simplify Ruby usage on AWS, showcasing how Ruby continues to expand its horizons.
00:19:24.040 As we explore projects beyond web frameworks, artistically creative efforts are making strides in desktop applications with tools like Shoes, rebuilt as Scarpe, reinforcing Ruby's position in building GUI-based applications.
00:20:26.160 Moreover, Ruby is also venturing into the security space with Ronin—a versatile toolkit for security researchers. Experience with Ruby continues to blossom with various explorative projects, fostering an evolving narrative surrounding its capabilities.
00:21:12.880 When discussing database technologies, the integration with SQLite has garnered interest. The effort to optimize Rails for SQLite is ongoing, which raises intriguing possibilities for production use cases.
00:22:28.960 I encourage all of you to explore newer gems and tools emerging in the Ruby space, especially around AI and machine learning. OpenAI and Langchain are recent examples showcasing how Ruby can effectively interface with modern AI technology.
00:23:11.840 Tools like AI Reflector, which allow the translation of scripts to different test frameworks, represent just a fraction of the innovations occurring with Ruby integration into modern AI.
00:24:00.440 Finally, I’d like to highlight how Ruby continues to move forward amidst the evolving landscape in developer experience. Effective debugging tools and syntax improvements are coming to light, making Ruby increasingly user-friendly and adaptable.
00:25:02.880 In summary, the landscape of Ruby is vast and full of possibilities, from implementing new frameworks and AI integrations to enhancing developer experience. I hope I've provided insight into the richness of what makes Ruby more than just a language, but a community.
00:26:14.640 I invite each of you to engage with the Ruby community by sharing your experience and insights, whether through blog posts, discussions, or even presentations. Your unique perspectives contribute significantly to the evolution of our community.
00:27:28.120 Thank you for listening to my presentation on the state of the Rubyverse. If you have any questions or remarks, I’d be happy to discussion and hear your thoughts. Let's continue promoting and advocating for our wonderful Ruby language.