00:00:19.699
Welcome to the MountainWest RubyConf 2013 keynote. It's great to be here. One of the good things about this conference is the MountainWest community. I find it interesting that many of you are also members of this community. As a Matz, someone from Japan, I find it peculiar to see so many familiar faces here since Japan has very few people in the Ruby community that look like me. However, I appreciate the hospitality at this conference and I would like to acknowledge Mike Moore for his efforts.
00:01:17.189
On the downside, I've been having issues with my Galaxy Note 2. This morning, it broke and strangely, my micro SD card died at the beginning of this journey, taking all my backups with it. Even shortly after that, my phone experienced issues as well, prompting me to buy a new one. My previous phone, the Galaxy Nexus, lasted just six months, and now it seems that the Galaxy Note 2 shared the same fate. It's a shame, but on the brighter side, I hope this keynote will be well received despite the challenges I've faced.
00:02:29.850
I want to start by informing you that Ruby 1.8 will die soon, so I encourage everyone to move to Ruby 2.0 right now. Over the years, we have released several versions of Ruby, starting with version 0.95. While some of those releases were well-received, others had significant issues. For example, the 1.8.7 release faced criticism due to a method named 'symbol to proc' that conflicted with the one defined in ActiveRecord, which caused problems in Ruby on Rails. Many community members boycotted it as a result.
00:03:09.310
Another release that caused issues was 1.0, which introduced severe incompatibilities with the transition from 1.8 to 1.9. We introduced a new virtual machine, known as Nick, along with multilingual support that can handle almost every character encoding globally. This was a significant advantage because other languages required conversions to Unicode for processing any strings. While this was a beneficial shift, the changes also introduced some incompatibilities, and it took five years for the community to fully adopt Ruby 1.9. Now, Ruby 2.0 has been released, and I am excited to share information about its features.
00:04:40.810
I can proudly declare Ruby 2.0 as the happiest release ever! There has been virtually no criticism regarding Ruby 2.0 since its launch. I recently attended a conference hosted by Heroku, where everyone celebrated Ruby 2.0 and its significance on the 20th anniversary of the Ruby language. Therefore, I am pleased to announce Ruby 2.0 as the happiest release ever; it is faster and more stable than Ruby 1.9, and we have strived for maximum compatibility, despite minor incompatibilities that arose from necessary bug fixes.
00:05:58.259
I have been developing Ruby since February 2014, which was 20 years ago. It was crucial to choose a significant date for naming the language, marking its inception. Two years later, on December 21, 1995, I released Ruby to the public, beginning its journey on the internet with version 0.95. Ruby version 1.0 was released in December 1996, followed by several milestones in release numbers in subsequent months and years. During those initial years, we also established a numbering system to signify stable and development versions, which helped manage version tracking effectively.
00:08:40.050
Over the years, we continued to release version updates regularly, aiming to improve performance and user experience. However, we recognized that the versioning system had become a limiting resource. We decided to utilize single-digit versions for clarity. Yet we faced the occasional conflict in version naming as developers sought to introduce features while adhering to a structured numbering system. This led to notable discussions and conflicts about versioning among the community stakeholders.
00:11:01.190
Finally, we reached Ruby 2.0, marking a momentous occasion. This year's celebration not only reflects an anniversary but the maturity of the language itself. Ruby has grown to embrace the Agile philosophy, supporting events, conferences, and meetups to foster the development and community growth around the language. We continue to see a vast number of new conferences, meetups and events supported by our active Rubyists.
00:12:14.560
To provide further insights into Ruby 2.0, I revisited my old documentation and slides, finding references that highlight its evolution. The earliest mention of Ruby occurred during the Ruby Conference in 2001. At that time, the Ruby community faced challenges following significant events of that year. Despite these hurdles, the language continued to thrive. At that conference, I discussed new virtual machine proposals and improvements to Ruby's garbage collection strategy aimed at enhancing performance.
00:14:02.250
Many technical discussions centered around optimizing memory management and garbage collection in Ruby, ensuring efficient memory usage as development continued. We focused on enhancing object allocation within the language and aimed to maintain Ruby's performance goals. By the time we reached Ruby 2.0, these enhancements were realized, significantly improving overall performance.
00:15:13.170
Next, I want to highlight a method that greatly impacted our development process: method combinations. We've placed a strong emphasis on enhancing our code by integrating features like module prepends, which allows for cleaner method combinations, thereby simplifying modifications. This helps avoid overlap in method names across various modules—reducing conflict while promoting enhanced organization of code. We have worked diligently to simplify the complexity in these interactions for Ruby developers.
00:16:28.920
Additionally, we've introduced refinements and improvements that optimize how Ruby handles monkey patching. Patching is a popular technique in Ruby; however, we acknowledge the complications that arise from unscoped modifications to core classes and methods. As a solution, refinements allow developers to scope their modifications within certain contexts, thus minimizing unexpected behaviors in Ruby code.
00:18:40.580
One feature that has generated significant interest is the introduction of keyword arguments in Ruby 2.0, allowing for named, optional parameters, enhancing readability and flexibility in method invocation. By supporting keyword arguments, developers no longer need to unpack hashes manually to pass parameters to methods—leading to cleaner and more intuitive code. This is a welcome addition for many developers who already experience the benefits of this method in Rails applications.
00:20:19.900
Moving on to further enhancements, I've presented the powerful addition of lazy evaluation methods inspired by functional programming languages. This feature encourages developers to explore different evaluation strategies leading to optimized performance. By integrating real laziness into our enumerable methods, we help prevent the exhaustion of system resources due to unnecessary computations.
00:22:05.890
I also want to emphasize the improvements in string and encoding handling, capitalizing on the growth of the Unicode standard. We're now able to treat strings from an encoding perspective more intelligently, thereby simplifying the interactions with data across diverse encoding formats. The transition is seamless; developers can now expect UTF-8 as the default, aligning with modern standards for web applications.
00:23:50.720
In conclusion, Ruby 2.0 is not just a release; it's a symbol of our ongoing commitment to development, user experience, and community engagement. We aim to remain efficient, modern and continue offering updated features that signify our dedication to the Ruby programming language. As we progress, I anticipate Ruby 2.1 will be released during this upcoming Christmas season, and we're committed to providing even more frequent updates to keep pace with developer needs.
00:25:34.660
Thank you all for your continued support and enthusiasm for Ruby. I am excited about where the language is heading, the features we’re introducing, and the vibrant communities we foster. Please make the switch to Ruby 2.0 as it represents the best of what we've achieved so far.