Slide 1

Slide 1 text

The Past, Present, & Future of at

Slide 2

Slide 2 text

Eileen M. Uchitelle ! " # @eileencodes eileencodes.com

Slide 3

Slide 3 text

I’m a Staff Engineer at !

Slide 4

Slide 4 text

I’m on the Core team!

Slide 5

Slide 5 text

Upgrading at

Slide 6

Slide 6 text

The Past, Present, & Future of at

Slide 7

Slide 7 text

a ♥

Slide 8

Slide 8 text

2004

Slide 9

Slide 9 text

Rails is born 2004

Slide 10

Slide 10 text

Frameworks are extracted, not built. -DHH “ ”

Slide 11

Slide 11 text

Rails 1.0 2005 2004 Rails is born

Slide 12

Slide 12 text

2005 2006 2007 2004 Rails is born Rails 1.2 Rails 1.0

Slide 13

Slide 13 text

I built a thing!

Slide 14

Slide 14 text

I’m in! I built a thing!

Slide 15

Slide 15 text

2005 2006 2007 2004 Rails is born Rails 1.2 GitHub is born Rails 1.0

Slide 16

Slide 16 text

2005 2006 2007 2004 Rails is born GitHub is born GitHub launches 2008 Rails 1.2 Rails 1.0

Slide 17

Slide 17 text

2005 2006 2007 2004 Rails is born 2008 GitHub is born Rails 1.2 GitHub launches Rails joins Rails 1.0

Slide 18

Slide 18 text

2006 2007 2008 2005 2009 GitHub is born Rails 1.2 GitHub launches Rails joins Rails 2.3 Rails 1.0

Slide 19

Slide 19 text

GitHub is born GitHub launches Rails 1.2 Rails joins Rails 2.3 2007 2008 2009 2006 2010 Fork Rails

Slide 20

Slide 20 text

No content

Slide 21

Slide 21 text

GitHub is born GitHub launches Rails 1.2 Rails joins Rails 2.3 2007 2008 2009 2006 2010 Fork Rails

Slide 22

Slide 22 text

fork repository

Slide 23

Slide 23 text

fork repository

Slide 24

Slide 24 text

GitHub is born GitHub launches Rails 1.2 Rails joins Rails 2.3 2007 2008 2009 2006 2010 Rails 3.0 Fork Rails

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

GitHub launches Rails joins Rails 2.3 2008 2009 2010 Rails 3.0 Fork Rails 2011 Start 3.0 upgrade 2012 Rails 3.2

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

Why upgrade when this version isn’t causing us pain?

Slide 30

Slide 30 text

Why upgrade when this version isn’t causing us pain? Why upgrade when Rails 3 is slower?

Slide 31

Slide 31 text

Why upgrade when this version isn’t causing us pain? Why upgrade when Rails 3 is slower? Why upgrade when our fork is better?

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

SECURITY BACKPORTS

Slide 34

Slide 34 text

SECURITY BACKPORTS HIRING IS HARDER

Slide 35

Slide 35 text

DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER

Slide 36

Slide 36 text

DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER DEVELOPMENT IS PAINFUL

Slide 37

Slide 37 text

2010 Rails 3.0 2011 Start 3.0 upgrade 2013 Rails 3.2 Upgrade stalled 2012 Complete 3.0 2014 Rails 4.0

Slide 38

Slide 38 text

2013 Rails 3.2 Upgrade stalled 2012 2014 2015 Complete 3.0 2016 4.0 started Rails 4.0

Slide 39

Slide 39 text

2013 Rails 3.2 Upgrade stalled 2012 2014 2015 Complete 3.0 2016 4.0 started Rails 5.0 Rails 4.0

Slide 40

Slide 40 text

2013 2014 2015 Complete 3.0 2016 2017 Eileen joins Rails 5.0 4.0
 started Rails 4.0

Slide 41

Slide 41 text

No content

Slide 42

Slide 42 text

No content

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

2015 2016 2019 Rails 5.0 4.0
 started 2017 Eileen joins 2018 4.2 in prod

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

2015 2016 2019 Rails 5.0 4.0
 started 2017 Eileen joins 2018 5.2 in prod 4.2 in prod

Slide 49

Slide 49 text

No content

Slide 50

Slide 50 text

No content

Slide 51

Slide 51 text

engineers at $ for hours = $ /hr

Slide 52

Slide 52 text

The cost of not upgrading is immeasurable

Slide 53

Slide 53 text

SECURITY BACKPORTS

Slide 54

Slide 54 text

SECURITY BACKPORTS HIRING IS HARDER

Slide 55

Slide 55 text

DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER

Slide 56

Slide 56 text

DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER DEVELOPMENT IS PAINFUL

Slide 57

Slide 57 text

DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER DEVELOPMENT IS PAINFUL REWRITE IN MICROSERVICES

Slide 58

Slide 58 text

…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 “ ”

Slide 59

Slide 59 text

When upgrading you should…

Slide 60

Slide 60 text

When upgrading you should build a team.

Slide 61

Slide 61 text

When upgrading you should take time to make a plan.

Slide 62

Slide 62 text

When upgrading you should fix deprecation warnings early.

Slide 63

Slide 63 text

When upgrading you should plan for the future.

Slide 64

Slide 64 text

No content

Slide 65

Slide 65 text

You may regret forking Rails.

Slide 66

Slide 66 text

You may regret falling behind security supported versions.

Slide 67

Slide 67 text

You may regret using old, unsupported gems.

Slide 68

Slide 68 text

You may regret using private Rails
 APIs.

Slide 69

Slide 69 text

No content

Slide 70

Slide 70 text

No content

Slide 71

Slide 71 text

No content

Slide 72

Slide 72 text

This was my first major upgrade.

Slide 73

Slide 73 text

It’s important to remember…

Slide 74

Slide 74 text

It’s important to remember to pay debt down incrementally.

Slide 75

Slide 75 text

No content

Slide 76

Slide 76 text

It’s important to remember you’re not alone.

Slide 77

Slide 77 text

No content

Slide 78

Slide 78 text

It’s important to remember the payoff is worth it.

Slide 79

Slide 79 text

No content

Slide 80

Slide 80 text

The benefits of upgrading

Slide 81

Slide 81 text

IMPROVED APIS

Slide 82

Slide 82 text

IMPROVED APIS SECURITY FEATURES

Slide 83

Slide 83 text

IMPROVED APIS BETTER PERFORMANCE SECURITY FEATURES

Slide 84

Slide 84 text

IMPROVED APIS BETTER PERFORMANCE NEW LIBRARIES SECURITY FEATURES

Slide 85

Slide 85 text

IMPROVED APIS BETTER PERFORMANCE NEW LIBRARIES SECURITY FEATURES A CHANCE TO CONTRIBUTE

Slide 86

Slide 86 text

The Future…

Slide 87

Slide 87 text

No content

Slide 88

Slide 88 text

75+ Pull Requests from GitHub

Slide 89

Slide 89 text

Rails 6.0: Multiple database support

Slide 90

Slide 90 text

Continuous Upgrades

Slide 91

Slide 91 text

For the first time in GitHub’s history…

Slide 92

Slide 92 text

We’re pioneering the future of Rails.

Slide 93

Slide 93 text

We have a responsibility to support Rails

Slide 94

Slide 94 text

No content

Slide 95

Slide 95 text

DEPENDENCIES ARE BRITTLE SECURITY BACKPORTS HIRING IS HARDER DEVELOPMENT IS PAINFUL

Slide 96

Slide 96 text

IMPROVED APIS BETTER PERFORMANCE NEW FEATURES SECURITY A CHANCE TO CONTRIBUTE

Slide 97

Slide 97 text

No content

Slide 98

Slide 98 text

No content

Slide 99

Slide 99 text

a ♥

Slide 100

Slide 100 text

Thank you! ! " # @eileencodes eileencodes.com