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
Charlie Knoles
July 24, 2024
0
5
Rails
Railing it up
Charlie Knoles
July 24, 2024
Tweet
Share
Featured
See All Featured
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
180
Mobile First: as difficult as doing things right
swwweet
225
10k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
How to Think Like a Performance Engineer
csswizardry
28
2.5k
Unsuck your backbone
ammeep
672
58k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
78
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Git: the NoSQL Database
bkeepers
PRO
432
66k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.9k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
100
Reality Check: Gamification 10 Years Later
codingconduct
0
2.1k
The SEO Collaboration Effect
kristinabergwall1
0
400
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