Talks

RubyGems 3 & 4

Recorded in June 2018 during https://2018.rubyparis.org in Paris. More talks at https://goo.gl/8egyWi

Paris.rb Conf 2018

00:00:11.469 I have the honor to introduce you to Hiroshi Shibata, one of the main contributors to what Ruby looks like today. Thank you very much. Now, I will begin my talk by discussing our vision story and the revisions that have led us to this point. The vision focuses on package management for the Ruby language. I will show you the internal structure and the future direction of Ruby package management today.
00:00:35.630 To introduce myself, I am Hiroshi Shibata, and I maintain Ruby core and a variety of libraries. My main projects include Rake and Bundler, along with many other tasks. Additionally, I maintain a website for Ruby development and have worked on various Ruby implementations. I also participated in the Rails Girls events in Japan, where we have organized over 45 events. As part of the Ruby Committee, I have seen the ranking shift significantly over the years. From last Christmas to now, my question is whether our rank is seventh or sixth. Notably, the current rank is number four.
00:01:20.720 I am also a member of the Tokyo Ruby community. We meet every Tuesday, discussing the Ruby language, libraries, and upcoming conferences. If you are in Kyoto, Japan, I encourage you to join our meetup and connect with us on social media. Now, let's dive into the revisions. First, I’d like to introduce the stable version of Ruby, which is Ruby 2.7. I will explain the current situation regarding RubyGems 2.7.
00:02:29.240 The maintenance policy for RubyGems has shifted. With the release of RubyGems 2.7, it is crucial to understand that versions 2.5 and 2.6 have been deprecated or banned due to confusion with Ruby versions 2.3 and 2.2. This means that only security issues will be fixed, and these updates will be released alongside the Ruby core. If you are a RubyGems user, please consider upgrading your Ruby version quickly, as RubyGems 2.7 is now stable and includes important bug fixes without requiring an update to the Ruby language version itself.
00:03:49.430 One surprising feature of RubyGems 2.7 is that it still supports Ruby 1.8, allowing legacy users to maintain compatibility. However, extensive conditions apply to the methods. As a result, I have spent considerable time working on maintaining support for Ruby 1.8 while ensuring that newer features remain functional. The next topic I want to address is Bundler integration within RubyGems 2.7. The integration process has been substantial, from managing dependencies to the commitment of each team working on this project. If you are interested in this feature, I encourage you to try the integration with the independent installer for RubyGems.
00:05:02.990 The dependency resolver in RubyGems was invoked via the updated RubyGems command, initiated by setup.rb files and other scripts. The stable installation of RubyGems 2.7 is critical, and during its initial release, there were bugs that could break environments or CI systems. I sincerely apologize for the inconveniences caused by these issues. As we look ahead, it is essential that we carefully consider how we want RubyGems to evolve with future releases.
00:06:01.719 The upcoming RubyGems 3 is currently being developed alongside Ruby 3, which aims to enhance performance, concurrency, and type-checking systems. RubyGems 3 is designed to prepare the transition to the new RubyGems ecosystem. This transition introduces several changes, including the removal of deprecated methods and restructuring of internal functionalities. I believe that these improvements will enhance user experience and maintain the integrity of the Ruby ecosystem.
00:07:39.490 Moreover, RubyGems 3 will address critical issues surrounding methods duplication and defection within the Ruby language. Developers will need to be aware of how to effectively utilize new methods and adapt their code accordingly. For instance, if you're using RubyGems actively, you need to ensure that your application is updated to avoid any conflicts with the new parameters introduced in the latest versions.
00:09:02.830 Let's discuss a new feature we're introducing: a comprehensive dependency resolution library. This library aims to simplify the process of discovering and managing dependencies, ensuring that conflicts are minimized during the installation of gems. We have made substantial progress with our integration efforts, and I hope to present a well-developed plan that will enable smoother cooperation between RubyGems and Bundler installations.
00:10:51.390 Next, I would like to showcase the functionality of our application that connects various Ruby ecosystems utilizing dependencies from Rubygems.org and external libraries. This innovation will allow us to perform more complex queries and facilitate easier resolutions of issues developers face when integrating multiple libraries. With the RubyGems repository, you will be able to see the maintained versions and cross-reference with various libraries across different languages.
00:13:23.909 In addition to the improvements in version compatibility, there are exhaustive tests being performed to ensure that all new features work seamlessly. We will also provide developers with better tools to implement updates without hitting compatibility issues that plagued previous versions. RubyGems 3 will raise standards significantly and promote a more robust development environment for everyone involved in the Ruby community.
00:15:48.600 As we continue toward RubyGems 4, we must address several concerns regarding user experience, including how we handle dependencies and versioning. The adjustments being made aim to enhance usability—moving away from outdated practices and introducing powerful new functionalities. It's essential to identify where our weaknesses lie and address them directly; to ensure developers can continue to thrive and build brilliantly with Ruby.
00:18:46.260 To wrap up my talk, I want to reflect on the importance of these developments. I believe it is crucial for the Ruby community to come together not only to improve the language but also to make programming enjoyable and efficient as possible. I leave you with this thought: we design Ruby to make programmers happy, and thus, let's keep pushing innovations to celebrate this goal together. Thank you all for your attention!