53
Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward Compatibility as a Design PrincipleBoone Gorges WordCamp Chicago 2016 April 30, 2016

Page 2: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Boone

• WordPress core committer

• BuddyPress lead developer

• Developer and consultant, Hard G

• 1337 since 1990

Page 3: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility

Page 4: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

When you upgrade, stuff will still work

Page 5: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 6: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Classic

As shipped with WP 2.0. Running on WP 4.6 trunk.

Page 7: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility

Page 8: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility

Page 9: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility

Page 10: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility too much

Page 11: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility too much?

Page 12: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility too much?

🔩↑

Page 13: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility

Page 14: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Semantic versioning

Page 15: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Semantic Versioningx.y.z

Page 16: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Semantic Versioningx.y.z

z 2.3.3 → 2.3.4Bug fixes and regressions

Page 17: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Semantic Versioningx.y.z

z 2.3.3 → 2.3.4Bug fixes and regressions

y 2.3.3 → 2.4.0Backward-compatible enhancements

Page 18: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Semantic Versioningx.y.z

z 2.3.3 → 2.3.4Bug fixes and regressions

y 2.3.3 → 2.4.0Backward-compatible enhancements

x 2.3.3 → 3.0.0Compatibility breaks

Page 19: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

WordPress Versioningx.y.z

Page 20: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

WordPress Versioningx.y.z

z 2.3.3 → 2.3.4Bug fixes and regressions

y,x 2.3.3 → 2.4.0Backward-compatible enhancements

x

2.9.3 → 3.0.0Compatibility breaks

Page 21: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

• Templating system • Query vars (p=123) • Actions and filters • etc

Page 22: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 23: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Classic

As shipped with WP 2.0. Running on WP 4.6 trunk.

Page 24: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility is not all-or-nothing

Page 25: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

“The only software that is 100% backward compatible is software that never changes.”

- Boone Gorges, WordPress Expert and #1 Heartthrob in Chicagoland

Page 26: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

WordPress 4.3

Page 27: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

WordPress 4.3

WordPress 4.4

Page 28: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 29: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

WordPress 4.3

WordPress 4.4

Page 30: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 31: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 32: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

User interface

Page 33: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Developer-facing APIs

Page 34: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 35: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Preservation of data

Page 36: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 37: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 38: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 39: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility is not free

Page 40: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

PHP 5.2

Page 41: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Accidental APIs and global state

Page 42: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

https://www.drupal.org/node/2613652

Page 43: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

https://www.drupal.org/node/2613652

“1. Each new major release of Drupal contains many, often radical, improvements in functionality, scalability and usability.

2. These advancements are made possible by not maintaining backwards compatibility with previously released code…”

Page 44: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 45: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility is important

Page 46: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 47: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 48: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016
Page 49: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

A culture of upgrading depends on a culture of confidence

Page 50: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

https://www.drupal.org/node/2613652

“Therefore, people adopting Drupal for their web or CMS project should plan for periodic upgrades of their project to the latest major release (every 6 years or so) in order to benefit from the ongoing active support of one of the finest open source development communities.”

Page 51: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

http://w3techs.com/technologies/details/cm-wordpress/all/all

Page 52: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Backward compatibility

Page 53: Backward Compatibility as a Design Principle · Backward Compatibility as a Design Principle Boone Gorges WordCamp Chicago 2016 April 30, 2016

Thanks