Ruby Standard Library

Gemification for Ruby 2.5/3.0

Gemification for Ruby 2.5/3.0

by Shibata Hiroshi

The video titled "Gemification for Ruby 2.5/3.0" presented by Shibata Hiroshi at RubyConf 2017 discusses the significant project of gemification within the Ruby programming language. The primary theme centers around transitioning Ruby's standard libraries into default gems and bundled gems to enhance dependency management and improve the development ecosystem.

Key points discussed include:

- Introduction to Gamification and Ruby's Standard Libraries: Hiroshi outlines his involvement with the Arirang community and introduces sponsors supporting Ruby's development, establishing a context for the talk.

- Current Ruby Version and Libraries: At the time of the talk, Ruby 2.4 was the stable version, containing over 18 standard libraries. The gemification project aims to transition these libraries into default and bundled gems to simplify usage and updates.

- Difference Between Types of Gems: Default gems are integrated within the Ruby core repository, receiving updates alongside the Ruby interpreter. In contrast, bundled gems are managed separately on GitHub and provide challenges for updates and integration with various Ruby versions.

- Emerging Benefits of Gemification: The transition to default gems, like OpenSSL and Psyche, simplifies the update process and enhances security through faster responses to vulnerabilities.

- Challenges and Future Directions: Discussion includes the obstacles faced by bundled gems, such as limitations with C extensions, and the development of a test suite (‘test bundles’) to ensure compatibility with Ruby's evolving versions.

- Ecosystem Integration: Hiroshi emphasizes the necessity of fostering communication between Ruby developers and standard library maintainers to build a robust development environment.

In conclusion, the speaker asserts that gemification is crucial for the future of Ruby libraries, intending to develop a secure and maintainable framework that will benefit the community as a whole. The transformation of standard libraries into gems not only enhances their usability but also promotes a more dynamic development ecosystem conducive to ongoing improvement and maintenance.

00:00:10.720 Today, I want to talk about gamification for the Ruby standard library in Ruby 2.5 and Ruby 3.
00:00:18.110 I’m a member of the Arirang community, maintaining Ruby's standard libraries. I also maintain the Ruby website and various computer and network resources. In addition, I operate several sites related to Ruby gems and various related platforms.
00:00:36.800 Every Tuesday, if you come to Tokyo, Japan, please join our meetup organized by Matsuda Akira and me. We discuss programming and would love for you to participate.
00:00:50.430 I would like to introduce our Ruby language sponsors who have supported us significantly for development. These sponsors include Heroku, Fastly, the NSA, and Microsoft, who provide unlimited resources for our website, ruby.org. Heroku supports our website with its CDN capabilities. Meanwhile, the NSA provides network and computer resources for package distribution, and Microsoft offers a suitable environment that supports Windows.
00:01:19.250 A special thanks goes to the Ruby Association in Japan, Nihon Ruby no Kai, and the Ibaraki University Research Laboratory, who provide grant money for our diverse infrastructure. Nihon Ruby no Kai helps with the Mac OS support and ensures continuous operations.
00:01:52.660 Now, I would like to start by discussing the background of the Gamification project. The standard library is a bundle of libraries that are installed together with the Ruby interpreter. They include various functionalities like strings, arrays, and essential utilities. You can use the standard library without any additional dependencies. We categorize the standard libraries into three types, which I will elaborate on later.
00:02:24.660 Currently, the stable version is Ruby 2.4, which contains over 18 libraries in the standard library. The goal of the gemification project is to transition standard libraries into what we call default gems and bundled gems, which simplify dependency management.
00:03:02.470 To illustrate the differences in Ruby language and standard library, I want to highlight that the development of the standard library closely follows the evolution of the Ruby interpreter. Default gems are defined within the Ruby core repository, and their updates correspond with updates to the Ruby interpreter.
00:03:26.850 On the other hand, bundled gems, which are not developed directly in the Ruby core repository, are developed on GitHub and managed separately. This can lead to an increasing number of standard libraries transitioning towards gemification, bringing about benefits in security and maintainability.
00:03:47.590 For example, with Ruby 2.4, we have numerous libraries becoming standard gems, transitioning many existing libraries into default gems. The differences between default gems and standard libraries are mainly in how they are structured, with default gems having a gem specification file associated with them.
00:04:12.760 Default gems can have different location specifications from standard libraries; you cannot install them in the same way as you would traditional gems. However, they can be used more flexibly in certain projects.
00:04:34.620 The usage of default gems means that you can identify default gems utilized in your application easily. For example, the OpenSSL gem has transitioned well, providing significant updates and functionalities by using the gem installation process.
00:05:00.430 There are difficulties concerning security and maintaining functionality across differing Ruby versions, which we are addressing. Part of the transition towards gemification involves ensuring that libraries can be more quickly updated to address security vulnerabilities when necessary.
00:05:20.480 The Psyche gem is another example, where the upstream repository has transitioned to the Ruby organization on GitHub, allowing for more flexible management and rapid updates as necessary.
00:05:46.610 Next, I want to address bundled gems, which are entirely different from default gems. These have a particular infrastructure structure and are installed simultaneously as the Ruby environment with no separate installation required.
00:06:09.593 Bundled gems are installed alongside Ruby installations, relying on certain libraries and dependencies. This presents a better solution for library distribution without requiring network installations for certain setups.
00:06:32.760 However, bundled gems do come with some challenges, such as not being able to utilize C extensions and other functionalities. We are examining ways to integrate these into Ruby’s development environment to support all necessary features effectively.
00:07:00.430 There is also the challenge of ensuring that bundled gems work properly with all versions of Ruby. To address this, we are developing a test suite called 'test bundles' to guarantee that bundled gems integrate well with Ruby’s development effectively.
00:07:26.930 The overall aim of gemification has been to enable upgrades like the introduction of default gems such as OpenSSL and Psyche. These transitions provide developers the flexibility to install necessary updates without modifying the core Ruby interpreter directly.
00:08:02.230 In the past six years, we've seen significant transitions of libraries into the gem framework, with new specifications helping articulate how these libraries operate and integrate with Ruby’s main structure.
00:08:36.890 By transforming standard libraries into regular gems, we also enhance their releasability and improvement, fostering a healthier development ecosystem.
00:09:04.790 Finally, I believe that by focusing on the communication channels between Ruby developers and standard library maintainers, we can foster a more robust ecosystem that seamlessly integrates updates and maintenance.
00:09:29.390 In closing, gemification acts as a viable path forward for our Ruby libraries while ensuring aligned efforts among developers to build towards secure, maintainable solutions.
00:09:56.560 Thank you for your time, and I look forward to our discussion regarding the future of Ruby gems and the exciting changes on the horizon!