00:00:14
My first talk outside of Japan was in 2001 at the Linux Expo in Paris.
00:00:20
That was my first talk in English, and back then I couldn't speak English very well.
00:00:26
Actually, I'm still not very fluent, but it was much worse back then.
00:00:35
Over time, I visited Paris several times for conferences and events.
00:00:44
Back then, we didn't have Rails, so Ruby was basically an unknown scripting language.
00:00:53
It was a newborn scripting language from the Far East.
00:01:03
Paris is a very important place in the history of Ruby, especially internationally.
00:01:10
I was at the first RubyConf in Tampa, Florida, that same year.
00:01:18
At that time, Ruby was not well-known.
00:01:26
It eventually grew into a popular programming language, thanks to Rails.
00:01:34
Ruby is currently the 15th most popular language in the TIOBE index.
00:01:41
It's even higher than several popular languages like Haskell and Rust.
00:01:47
Ruby also holds a prominent position in the RedMonk index.
00:01:55
But Ruby is not just about Rails.
00:02:00
Ruby can be used as a scripting language and a systems programming language.
00:02:06
DevOps professionals also use Ruby with tools like Chef and Puppet.
00:02:13
Some developers even use Ruby for mobile applications using technologies like RubyMotion.
00:02:25
Additionally, Ruby is being explored in scientific fields and machine learning.
00:02:33
While languages like Python and R dominate in these areas, Ruby is still applicable.
00:02:39
We have alternatives like mruby for embedding Ruby in small devices.
00:02:47
Ruby can run in tiny computers with as little as 32 kilobytes of memory.
00:02:54
As a language, Ruby has become quite popular.
00:03:04
If you create open-source software, you might receive 50 or 100 stars on GitHub.
00:03:10
To dominate the world, we have to make software popular.
00:03:17
There are lessons we can learn from the history of the Ruby language.
00:03:27
The first important factor in our success is motivation.
00:03:36
I created Ruby just for fun.
00:03:43
In the early 90s, Japan was experiencing a significant economic depression.
00:03:50
I worked as a programmer on internal tools for software developers.
00:03:58
My project got canceled, and I was assigned to maintain existing tools.
00:04:06
Other employees were assigned to money-making projects.
00:04:14
I was effectively unmanaged and free to explore programming.
00:04:21
I liked programming and was interested in programming languages.
00:04:29
With the time I had, I started working on Ruby.
00:04:35
Creating a programming language offers a unique sense of freedom.
00:04:42
Not many get the opportunity to create a language.
00:04:50
For most, languages are tools to learn and use.
00:04:57
For me, a language is something to create.
00:05:06
Programming languages should guide other programmers towards better productivity.
00:05:15
All Ruby users are influenced by the language designer.
00:05:24
For me, the motivation to create Ruby was rooted in love for programming.
00:05:31
Consider the motivation behind your software project.
00:05:41
Software projects aren't achieved in a day or a week but take years.
00:05:48
For software to be successful, it requires long-lasting motivation.
00:05:56
The second factor for success is defining the target audience.
00:06:03
I created Ruby for myself—I am the target audience.
00:06:11
I wanted to program in a better programming language.
00:06:18
So, I created Ruby to satisfy my own programming needs.
00:06:26
I made it open-source for backup, not expecting others to use it.
00:06:34
But surprisingly, people liked it.
00:06:42
The key takeaway here is to have a clear target audience.
00:06:50
Different people prefer different programming languages.
00:07:00
There are enough people like me who love Ruby.
00:07:08
Defining target audiences for your software is crucial.
00:07:15
It should be concrete, not vague.
00:07:23
The third factor for success is community.
00:07:31
Many years ago, when I worked as a professional programmer, there was no community.
00:07:39
Open-source software now often thrives on community.
00:07:47
Today, software development is driven by the community.
00:07:54
GitHub has changed how we develop software.
00:08:00
You no longer need to be part of a company to contribute.
00:08:08
If you have an idea to improve a software, you can create a proposal or pull request.
00:08:16
The improvement can be driven by the community.
00:08:23
In Ruby, the philosophy is to include everyone who is willing to participate.
00:08:30
Inclusivity is the hallmark of community-driven development.
00:08:38
Imperfection allows for community involvement.
00:08:46
In the early days of Ruby, there were many bugs.
00:08:56
I remember the early communication on the Ruby mailing list.
00:09:04
The first email congratulated me on the release of Ruby.
00:09:12
Then, I received reports of bugs—one message mentioned it didn't compile!
00:09:20
The simplicity of Ruby encouraged people to engage.
00:09:28
Today, we have a lot of complexity in software development.
00:09:39
Many open-source projects fail due to their complexity.
00:09:46
The simplicity of Ruby made it accessible.
00:09:52
Netscape failed because their software was too complex and difficult to contribute to.
00:09:59
Ruby's early success came because it was significantly simpler.
00:10:08
Imperfect software invites participation.
00:10:16
Another important factor is community policy or philosophy.
00:10:25
Ruby emphasizes the joy of programming, focusing on human needs.
00:10:33
Clear goals help guide community involvement.
00:10:41
For your project, create a community and establish guiding principles.
00:10:48
For example, Ruby 3 has clear goals for better performance and concurrency.
00:10:57
Establishing a clear vision is vital for the success of any project.
00:11:06
I believe software design should primarily be guided by few people, if possible.
00:11:14
The leader must present a vision that goes beyond expectations.
00:11:22
For example, when I released Ruby, some people complained.
00:11:30
They thought they already had suitable scripting languages.
00:11:38
But time proved Ruby’s worth as a successful language.
00:11:45
Similarly, when Twitter started, people were skeptical of its format.
00:11:54
Yet Twitter has become one of the most popular social platforms.
00:12:03
It's essential for designers to present their visions consistently.
00:12:12
The success of software projects hinges on motivation, target audience, and community.
00:12:20
Software success requires long-term commitment.
00:12:28
You need a clear vision and well-defined target audiences.
00:12:36
The community plays a crucial role in this regard.
00:12:44
In recent years, software development has radically evolved.
00:12:51
Focus on improvement and adapt to social development.
00:12:59
As your software grows, understanding community involvement is key.
00:13:06
In Ruby's early stages, we concentrated on the language itself.
00:13:14
In later stages, we focused on community building.
00:13:21
We needed to establish RubyGems for packages and libraries.
00:13:29
Providing resources for the community is more important than ever.
00:13:36
Organizing communities around shared values is crucial.
00:13:43
It can be challenging to define why you love Ruby.
00:13:49
We all share a common vision of the goodness in Ruby.
00:13:56
This shared vision should be concretized to guide development.
00:14:04
Establishing community guidelines and principles leads to growth.
00:14:11
In Ruby 3, we aim for better performance and ease of development.
00:14:18
Having a unifying vision can make significant contributions towards success.
00:14:27
In summary, motivation, target audience, and community are key factors.
00:14:33
Stay committed to improvement and community-driven development.
00:14:41
This is how we can dominate the world with technology.
00:14:48
It is possible to create a bright future.
00:14:56
So let’s work together to continue innovating.
00:15:04
We will release Ruby 3 in December 2020, no matter what.
00:15:18
Ruby will remain compatible, learning from past experiences.
00:15:25
In the past, Python faced compatibility challenges with version changes.
00:15:31
We want to avoid similar issues with Ruby.
00:15:38
Our goal is to keep the community strong while improving the language.
00:15:45
We aim to integrate new features while maintaining backward compatibility.
00:15:52
This balance is crucial for the success of Ruby.
00:15:59
Ruby 3 will bring innovative features like a JIT compiler.
00:16:07
We’re working hard to improve the experience of using Ruby.
00:16:14
The next steps include enhancing tools and libraries.
00:16:21
We want to keep improving Ruby for the community.
00:16:28
We believe in the importance of good documentation.
00:16:35
Contributions to documentation and references are welcome.
00:16:42
Ruby is a welcoming community for new contributors.
00:16:50
If you are interested, look into the Ruby development on GitHub.
00:16:57
You don’t need to be an expert; everyone can contribute.
00:17:11
Thank you for your time today.
00:17:18
Do you have any questions?
00:17:24
We can take questions now.
00:17:29
Just raise your hand, and a mic will come to you.
00:17:36
Please repeat your question once you have the mic.
00:17:44
User: Three years ago, you talked about Ruby 3 being released.
00:17:52
Will it truly be three times faster compared to version 1.9?
00:17:59
Matz: Yes, for some benchmarks.
00:18:06
We’ve improved memory management and introduced a JIT compiler.
00:18:12
Some CPU-bound benchmarks show over three times faster performance.
00:18:19
For Rails applications, the improvement is less clear.
00:18:26
We are working on more accurate benchmark comparisons.
00:18:33
User: You mentioned Ruby was built with you as the target audience.
00:18:40
Have there been features added under community pressure that you didn't like?
00:18:46
Matz: Early on, I borrowed too many ideas from Perl.
00:18:53
I regret some of the naming conventions like dollar variables.
00:19:00
We are working to fix some of those early decisions.
00:19:08
User: What is your opinion on alternative Ruby implementations?
00:19:15
Matz: I appreciate alternative implementations like JRuby.
00:19:23
JRuby offers performance improvements due to the JVM.
00:19:30
Other implementations, like Opal, provide unique capabilities.
00:19:37
User: What are your thoughts on the Crystal language?
00:19:44
Matz: Crystal is a statically typed language inspired by Ruby.
00:19:50
While it has its own path, there are ideas worth exploring.
00:19:56
I hope it develops a bigger community.
00:20:03
User: What do you think about type-checking tools?
00:20:10
Matz: We are collaborating with various type-checking projects.
00:20:16
We aim for better integration and broader functionality.
00:20:23
User: Ruby is like your child, but how has it evolved over the years?
00:20:30
Matz: My vision has remained stable.
00:20:39
Ruby has absorbed influences from functional programming languages.
00:20:46
The focus on web applications was initially outside my scope.
00:20:54
The core vision of Ruby remains intact.
00:21:01
User: Will Ruby be rewritten in Rust?
00:21:07
Matz: I'm a C expert and prefer to stick with it.
00:21:13
But I encourage alternative implementations in Rust.
00:21:20
Artichoke is an example of Ruby written in Rust.
00:21:27
Thank you for your questions.