Top Banner
Backwards Compatibility taking it seriously
45

Taking backwards compatibility seriously

Jul 19, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Taking backwards compatibility seriously

Backwards

Compatibilitytaking it seriously

Page 2: Taking backwards compatibility seriously

What is it?

Page 3: Taking backwards compatibility seriously

Not breaking thingsfrom version to version

Page 4: Taking backwards compatibility seriously

Maintaining methodsmethod v1 still works with method v2

Page 5: Taking backwards compatibility seriously

Keeping consistencydesign, database schema, markup, etc

Page 6: Taking backwards compatibility seriously

Basic examples

Page 7: Taking backwards compatibility seriously

PHP

Page 8: Taking backwards compatibility seriously

function do_thi_thing() { }

version 1.0

Page 9: Taking backwards compatibility seriously

function do_this_thing() { }

version 2.0

Page 10: Taking backwards compatibility seriously

Fatal errorundefined function: do_thi_thing()

Page 11: Taking backwards compatibility seriously

function do_thi_thing() { return do_this_thing(); }

Solution:

Page 12: Taking backwards compatibility seriously

CSS / HTML

Page 13: Taking backwards compatibility seriously

.entry { background: #f0f0f0 }

<div class=“entry”>

Page 14: Taking backwards compatibility seriously

.entry { background: #f0f0f0 }

<div class=“post”>

Page 15: Taking backwards compatibility seriously

No more #f0f0f0

Oops

Page 16: Taking backwards compatibility seriously

<div class=“post entry”>

Solution:

Page 17: Taking backwards compatibility seriously

Filenames

Page 18: Taking backwards compatibility seriously

require_once ‘includes/class-authors.php’;

class-authors.php

Page 19: Taking backwards compatibility seriously

require_once ‘includes/class-authors.php’;

class-vendors.php

Page 20: Taking backwards compatibility seriously

Fatal errorfile not found

Page 21: Taking backwards compatibility seriously

Metadataget_post_meta( $post_id, ‘city_name’, true );

value: New York

Page 22: Taking backwards compatibility seriously

Metadataget_post_meta( $post_id, ‘city’, true );

value:

Page 23: Taking backwards compatibility seriously

function pw_filter_old_meta( $check, $object_id, $meta_key, $single ) {

if( 'city_name' === $meta_key ) {

$check = get_post_meta( $object_id, 'city', $single );

}

return $check;

}

add_filter( 'get_post_metadata', 'pw_filter_old_meta', 10, 4 );

Solution:

Page 24: Taking backwards compatibility seriously

Solution:get_post_meta( $post_id, ‘city’, true );

value: New York

get_post_meta( $post_id, ‘city_name’, true );

value: New York

Page 25: Taking backwards compatibility seriously

So many more

Page 26: Taking backwards compatibility seriously

How easy is it?

Page 27: Taking backwards compatibility seriously

Why worry about it?

Page 28: Taking backwards compatibility seriously

What’s the benefit?

Page 29: Taking backwards compatibility seriously

Does it slow you

down?

Page 30: Taking backwards compatibility seriously

Case Study

Page 31: Taking backwards compatibility seriously

EDD Signed URLslongest outstanding issue for EDD, 12/19/2012

2.3 released 3 days ago - how’d we do?

Page 32: Taking backwards compatibility seriously

Old Methodhttp://edd/index.php?download_key={key}&email={email}&file=fil

e}&price_id={price}&download_id={id}&expire={expire}

http://edd/index.php?download_key=7211cce2df06b572890934

752a4c0896&email=pippin%40pippinsplugins.com&file=1&price

_id=1&download_id=514&expire=MTQyNDE2NzcyOQ%3D%3D

Page 33: Taking backwards compatibility seriously

New Methodhttp://edd/index.php?eddfile={file}&ttl={expre}&token={tok

en}

http://edd/index.php?eddfile=2231%3A514%3A0&ttl=142

4167604&token=4d0a86fb8f8be40cf9927222076a5ced

Page 34: Taking backwards compatibility seriously

Potential Breakagelet’s consider the possibilities

Page 35: Taking backwards compatibility seriously

40,000+ active sitesbasic assumptions:

Page 36: Taking backwards compatibility seriously

40,000+ active sitesbasic assumptions:

50 customers per site

Page 37: Taking backwards compatibility seriously

40,000+ active sitesbasic assumptions:

50 customers per site

1 sale per customer / 1 download link per customer

Page 38: Taking backwards compatibility seriously

40,000+ active sitesbasic assumptions:

50 customers per site

1 sale per customer / 1 download link per customer

50*40,000 = 2,000,000 broken download links

Page 39: Taking backwards compatibility seriously

40,000+ active sitesbasic assumptions:

50 customers per site

1 sale per customer / 1 download link per customer

50*40,000 = 2,000,000 broken download links

…..

Page 40: Taking backwards compatibility seriously

40,000+ active sitesbasic assumptions:

50 customers per site

1 sale per customer / 1 download link per customer

50*40,000 = 2,000,000 broken download links

…..

probably vastly under exaggeration

Page 41: Taking backwards compatibility seriously

Challenge acceptedprogramming is all about challenges

Page 42: Taking backwards compatibility seriously

Make it a goal

Page 43: Taking backwards compatibility seriously

Mentalitygreat development is more about how it is thought out

than how it is done

your attitude and dedication will go further than your

knowledge of syntax

Page 44: Taking backwards compatibility seriously

“I will”

Page 45: Taking backwards compatibility seriously

ThanksPippin Williamson

pippinsplugins.com - @pippinsplugins