Ruby after 25 years
HerokuRuby Association

Yukihiro "Matz" Matsumoto
まつもとゆきひろ@yukihiro_matz

Powered by Rabbit 2.2.0

1993Powered by Rabbit 2.2.0

I started developing Ruby

Powered by Rabbit 2.2.0

Just for fun

Powered by Rabbit 2.2.0

Total Number of Users: 1

Powered by Rabbit 2.2.0

1995Powered by Rabbit 2.2.0

I put it on the Internet

Powered by Rabbit 2.2.0

Total Number of Users: 200

Powered by Rabbit 2.2.0

2000Powered by Rabbit 2.2.0

The Pickaxe Book

Powered by Rabbit 2.2.0

Powered by Rabbit 2.2.0

Total Number of Users: 10000?

Powered by Rabbit 2.2.0

2001Powered by Rabbit 2.2.0

The first RubyConf

Powered by Rabbit 2.2.0

In Tampa, Florida

Powered by Rabbit 2.2.0

Attendees: 30+

Powered by Rabbit 2.2.0

2017Powered by Rabbit 2.2.0

RubyKaigi in 広島 (Hiroshima)

Powered by Rabbit 2.2.0

Attendees: 800+

Powered by Rabbit 2.2.0

Total Number of Users: 1M+?

Powered by Rabbit 2.2.0

1 to 1M User(s)Powered by Rabbit 2.2.0

Ruby became PopularPowered by Rabbit 2.2.0

Ruby is used everywhere

Powered by Rabbit 2.2.0

From Small to Big

Powered by Rabbit 2.2.0

Numerous applications written
in Ruby

Powered by Rabbit 2.2.0

Ruby Should be Stable

Powered by Rabbit 2.2.0

Compatibility Matters

Powered by Rabbit 2.2.0

Ruby1.9
Python3
PHP6
ECMAScript4

Powered by Rabbit 2.2.0

Bigger Community

Powered by Rabbit 2.2.0

OSS Community is a weird thing

Powered by Rabbit 2.2.0

Community

Powered by Rabbit 2.2.0

A group of people

Powered by Rabbit 2.2.0

MembershipPowered by Rabbit 2.2.0

Non-exclusive

Powered by Rabbit 2.2.0

Can't expect strong loyalty

Powered by Rabbit 2.2.0

We need to attract community

Powered by Rabbit 2.2.0

Otherwise community members
will go away

Powered by Rabbit 2.2.0

We will eventually fade away

Powered by Rabbit 2.2.0

OSS Community is like a shark

Powered by Rabbit 2.2.0

We have to keep swimming

Powered by Rabbit 2.2.0

OSS cannot stop

Powered by Rabbit 2.2.0

Otherwise it will die

Powered by Rabbit 2.2.0

I am sick of hostile claims

Powered by Rabbit 2.2.0

"Ruby is Dead"Powered by Rabbit 2.2.0

Because Ruby gems have lessGitHub stars on GitHub

Powered by Rabbit 2.2.0

Because Ruby doesn't havestatic typing

Powered by Rabbit 2.2.0

Because Ruby is no longer shiny
language

Powered by Rabbit 2.2.0

Any technology cannot stayshiny for long

Powered by Rabbit 2.2.0

Ruby has 20+ years of history

Powered by Rabbit 2.2.0

Rails has 10+ years oldPowered by Rabbit 2.2.0

More history, more burdenPowered by Rabbit 2.2.0

We have to do something tosurvive

Powered by Rabbit 2.2.0

What shall we do?

Powered by Rabbit 2.2.0

Rebuilding the language?

Powered by Rabbit 2.2.0

Perl6PHP6JavaScript (ES4)
Python3
Ruby1.9

Powered by Rabbit 2.2.0

Keeping the compatibility
forever?

Powered by Rabbit 2.2.0

FORTRANCOBOLPowered by Rabbit 2.2.0

Contradiction

Powered by Rabbit 2.2.0

Designing a Language is Hard

Powered by Rabbit 2.2.0

Harder than You May Think

Powered by Rabbit 2.2.0

But that is the way

Powered by Rabbit 2.2.0

Keep compatibility
Keep progressing

Powered by Rabbit 2.2.0

Keep compatibility

Powered by Rabbit 2.2.0

Keep existing Ruby program
running

Powered by Rabbit 2.2.0

Keep Ruby being Ruby

Powered by Rabbit 2.2.0

Keep progressing

Powered by Rabbit 2.2.0

Make Ruby run faster

Powered by Rabbit 2.2.0

Make Ruby more productive

Powered by Rabbit 2.2.0

Ruby3

Powered by Rabbit 2.2.0

Ruby3 is the FuturePowered by Rabbit 2.2.0

We Will Keep Compatibility

Powered by Rabbit 2.2.0

But We Will Make It GreatPowered by Rabbit 2.2.0

FasterMore Productive

Powered by Rabbit 2.2.0

Faster Ruby3Powered by Rabbit 2.2.0

Ruby3x3

Powered by Rabbit 2.2.0

Ruby3 will be 3x Faster thanRuby2

Powered by Rabbit 2.2.0

JITPowered by Rabbit 2.2.0

MJIT

Powered by Rabbit 2.2.0

2.8+ times faster (than Ruby2.0)

Powered by Rabbit 2.2.0

Performance Solves Many
Problems

Powered by Rabbit 2.2.0

More Productive Ruby3

Powered by Rabbit 2.2.0

Static Analysis

Powered by Rabbit 2.2.0

Duck InferencePowered by Rabbit 2.2.0

Interactive Typing

Powered by Rabbit 2.2.0

Interactive Programming

Powered by Rabbit 2.2.0A lesson learned

Powered by Rabbit 2.2.0

Ruby is not the fastest language

Powered by Rabbit 2.2.0

Ruby is not the most powerfullanguage

Powered by Rabbit 2.2.0

We use Ruby because Ruby isgood enoughPowered by Rabbit 2.2.0

We use Ruby because Ruby iscomfortable

Powered by Rabbit 2.2.0

We use Ruby because Ruby isnice

Powered by Rabbit 2.2.0

Human centric design

Powered by Rabbit 2.2.0

Ruby is a nice language

Powered by Rabbit 2.2.0

Being nice could bring power

Powered by Rabbit 2.2.0

Be nicePowered by Rabbit 2.2.0

Compatibility

Powered by Rabbit 2.2.0

Compatibility is Important

Powered by Rabbit 2.2.0

Not because we are conservative

Powered by Rabbit 2.2.0

Not because we are afraid ofchanges

Powered by Rabbit 2.2.0

But because it makes us progress

Powered by Rabbit 2.2.0

Without compatibility,community keep using oldversions

Powered by Rabbit 2.2.0

Don't pursue beauty of thesoftware

Powered by Rabbit 2.2.0

It's a selfish trap for designers

Powered by Rabbit 2.2.0

Consider users

Powered by Rabbit 2.2.0Talk with potential users

Powered by Rabbit 2.2.0

Powered by Rabbit 2.2.0

Our prediction

Powered by Rabbit 2.2.0

Ruby needs Performance

Powered by Rabbit 2.2.0

No one complains faster Ruby

Powered by Rabbit 2.2.0

Ruby3x3

Powered by Rabbit 2.2.0

Programming will be moreconversational

Powered by Rabbit 2.2.0

Interactive programming

Powered by Rabbit 2.2.0

We have a lot of things to bedone

Powered by Rabbit 2.2.0

We have to work with other tools

Powered by Rabbit 2.2.0

But I am sure it will benefit thecommunityPowered by Rabbit 2.2.0

We try to be nicePowered by Rabbit 2.2.0

We are trying make Ruby nicer

Powered by Rabbit 2.2.0

That means more powerful Ruby

Powered by Rabbit 2.2.0

more comfortable Ruby

Powered by Rabbit 2.2.0

and faster Ruby

Powered by Rabbit 2.2.0

Obviously Ruby community is
not just Ruby

Powered by Rabbit 2.2.0

Gems can be nicer

Powered by Rabbit 2.2.0

Your apps can be nicer

Powered by Rabbit 2.2.0

We need your cooperation

Powered by Rabbit 2.2.0

STRONGER TOGETHERPowered by Rabbit 2.2.0

Summary

Powered by Rabbit 2.2.0

Be nicePowered by Rabbit 2.2.0

We can be stronger by beingnicer

Powered by Rabbit 2.2.0

Being nice includes:
Moving forward to survive
Keeping Compatibility
Gradual changes
Providing benefits

Powered by Rabbit 2.2.0

Moving forward to survive

Powered by Rabbit 2.2.0

Ruby3

Powered by Rabbit 2.2.0

Our goal

Powered by Rabbit 2.2.0

Our policy

Powered by Rabbit 2.2.0

Not because it's easy, butbecause we need goal

Powered by Rabbit 2.2.0

Challenging goal

Powered by Rabbit 2.2.0

Compatibility

Powered by Rabbit 2.2.0

We will not break compatibility

Powered by Rabbit 2.2.0

For no reason

Powered by Rabbit 2.2.0

Gradual changes

Powered by Rabbit 2.2.0

We won't throw things away andrestarting from scratch

Powered by Rabbit 2.2.0

It may take longer time, but it's
worth itPowered by Rabbit 2.2.0

Ruby3 features will be
introduced to 2.x

Powered by Rabbit 2.2.0

Keep providing benefits

Powered by Rabbit 2.2.0

Bottlenecks may not be in Ruby

Powered by Rabbit 2.2.0Gems/Frameworks/Apps

Powered by Rabbit 2.2.0

We need more tools andcontributions

Powered by Rabbit 2.2.0

Those principles can be applied
to anything:
Moving forward to survive
Keeping Compatibility
Gradual changes
Providing benefits
Powered by Rabbit 2.2.0

That's All Folks!

Powered by Rabbit 2.2.0

One more thing...

Powered by Rabbit 2.2.0

Ruby25

Powered by Rabbit 2.2.0

2018.2.24 Sat.
Shinagawa Intercity Hall, Tokyo

Powered by Rabbit 2.2.0

http://25.ruby.or.jp

Powered by Rabbit 2.2.0

#Ruby25

Powered by Rabbit 2.2.0

Thank you

Powered by Rabbit 2.2.0