Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Rails
Search
Charlie Knoles
July 24, 2024
11
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Rails
Railing it up
Charlie Knoles
July 24, 2024
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Believing is Seeing
oripsolob
1
240
From π to Pie charts
rasagy
1
400
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.5k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
620
4 Signs Your Business is Dying
shpigford
187
23k
Everyday Curiosity
cassininazir
0
350
Context Engineering - Making Every Token Count
addyosmani
9
1.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
570
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1.4k
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