Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Rails
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Charlie Knoles
July 24, 2024
0
5
Rails
Railing it up
Charlie Knoles
July 24, 2024
Tweet
Share
Featured
See All Featured
Making Projects Easy
brettharned
120
6.6k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
230
Building the Perfect Custom Keyboard
takai
2
700
The Pragmatic Product Professional
lauravandoore
37
7.2k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
1
620
Music & Morning Musume
bryan
47
7.1k
We Are The Robots
honzajavorek
0
180
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
[SF Ruby Conf 2025] Rails X
palkan
2
790
New Earth Scene 8
popppiees
1
1.6k
Transcript
The Past, Present, & Future of at
Eileen M. Uchitelle ! " # @eileencodes eileencodes.com
I’m a Staff Engineer at !
I’m on the Core team!
Upgrading at
The Past, Present, & Future of at
a ♥
2004
Rails is born 2004
Frameworks are extracted, not built. -DHH “ ”
Rails 1.0 2005 2004 Rails is born
2005 2006 2007 2004 Rails is born Rails 1.2 Rails
1.0
I built a thing!
I’m in! I built a thing!
2005 2006 2007 2004 Rails is born Rails 1.2 GitHub
is born Rails 1.0
2005 2006 2007 2004 Rails is born GitHub is born
GitHub launches 2008 Rails 1.2 Rails 1.0
2005 2006 2007 2004 Rails is born 2008 GitHub is
born Rails 1.2 GitHub launches Rails joins Rails 1.0
2006 2007 2008 2005 2009 GitHub is born Rails 1.2
GitHub launches Rails joins Rails 2.3 Rails 1.0
GitHub is born GitHub launches Rails 1.2 Rails joins Rails
2.3 2007 2008 2009 2006 2010 Fork Rails
None
GitHub is born GitHub launches Rails 1.2 Rails joins Rails
2.3 2007 2008 2009 2006 2010 Fork Rails
fork repository
fork repository
GitHub is born GitHub launches Rails 1.2 Rails joins Rails
2.3 2007 2008 2009 2006 2010 Rails 3.0 Fork Rails
None
GitHub is born GitHub launches Rails 1.2 Rails joins Rails
2.3 2007 2008 2009 2010 Rails 3.0 Fork Rails 2011 Start 3.0 upgrade
GitHub launches Rails joins Rails 2.3 2008 2009 2010 Rails
3.0 Fork Rails 2011 Start 3.0 upgrade 2012 Rails 3.2
GitHub launches Rails joins Rails 2.3 2008 2009 2010 Rails
3.0 Fork Rails 2011 Start 3.0 upgrade 2012 Rails 3.2 Upgrade stalled
Why upgrade when this version isn’t causing us pain?
Why upgrade when this version isn’t causing us pain? Why
upgrade when Rails 3 is slower?
Why upgrade when this version isn’t causing us pain? Why
upgrade when Rails 3 is slower? Why upgrade when our fork is better?
None
💻 SECURITY BACKPORTS
💻 SECURITY BACKPORTS HIRING IS HARDER
💻 DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER
💻💔 DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER DEVELOPMENT
IS PAINFUL
2010 Rails 3.0 2011 Start 3.0 upgrade 2013 Rails 3.2
Upgrade stalled 2012 Complete 3.0 2014 Rails 4.0
2013 Rails 3.2 Upgrade stalled 2012 2014 2015 Complete 3.0
2016 4.0 started Rails 4.0
2013 Rails 3.2 Upgrade stalled 2012 2014 2015 Complete 3.0
2016 4.0 started Rails 5.0 Rails 4.0
2013 2014 2015 Complete 3.0 2016 2017 Eileen joins Rails
5.0 4.0 started Rails 4.0
None
😳😳😳😳
Gemfile.lock (Rails 3.2) $ rails server $ rails test tests/models/issue_test.rb
Multiple Rails Versions Gemfile_rails4.lock (Rails 4.0) $ RAILS4=1 rails server $ RAILS4=1 rails test tests/models/issue_test.rb
Gemfile_rails4.lock (Rails 4.0) $ RAILS4=1 rails server $ RAILS4=1 rails
test tests/models/issue_test.rb Multiple Rails Versions Gemfile_rails41.lock (Rails 4.1) $ RAILS41=1 rails server $ RAILS41=1 rails test tests/models/issue_test.rb
Conditional Code if GitHub.rails_3_2? # code for Rails 3.2 elsif
GitHub.rails_4_0? # code for Rails 4.0 else # code for all future versions end
2015 2016 2019 Rails 5.0 4.0 started 2017 Eileen joins
2018 4.2 in prod
None
2015 2016 2019 Rails 5.0 4.0 started 2017 Eileen joins
2018 5.2 in prod 4.2 in prod
None
None
engineers at $ for hours = $ /hr
The cost of not upgrading is immeasurable
💻 SECURITY BACKPORTS
💻 SECURITY BACKPORTS HIRING IS HARDER
💻 DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER
💻 DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER DEVELOPMENT
IS PAINFUL
💻 DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER DEVELOPMENT
IS PAINFUL REWRITE IN MICROSERVICES
…the stories of upgrading being a huge undertaking always makes
me scratch my head - what are we doing wrong if its easy for us. - HN troll “ ”
When upgrading you should…
When upgrading you should build a team.
When upgrading you should take time to make a plan.
When upgrading you should fix deprecation warnings early.
When upgrading you should plan for the future.
None
You may regret forking Rails.
You may regret falling behind security supported versions.
You may regret using old, unsupported gems.
You may regret using private Rails APIs.
None
None
None
This was my first major upgrade.
It’s important to remember…
It’s important to remember to pay debt down incrementally.
None
It’s important to remember you’re not alone.
None
It’s important to remember the payoff is worth it.
None
The benefits of upgrading
💻 IMPROVED APIS
💻 IMPROVED APIS SECURITY FEATURES
💻 IMPROVED APIS BETTER PERFORMANCE SECURITY FEATURES
💻 IMPROVED APIS BETTER PERFORMANCE NEW LIBRARIES SECURITY FEATURES
💻 IMPROVED APIS BETTER PERFORMANCE NEW LIBRARIES SECURITY FEATURES A
CHANCE TO CONTRIBUTE
The Future…
None
75+ Pull Requests from GitHub
Rails 6.0: Multiple database support
Continuous Upgrades
For the first time in GitHub’s history…
We’re pioneering the future of Rails.
We have a responsibility to support Rails
None
💻 DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER DEVELOPMENT
IS PAINFUL
💻 IMPROVED APIS BETTER PERFORMANCE NEW FEATURES SECURITY A CHANCE
TO CONTRIBUTE
None
None
a ♥
Thank you! ! " # @eileencodes eileencodes.com