versioning, extensibility & postel’s law noah mendelsohn tufts university email:...
Post on 12-Jan-2016
218 Views
Preview:
TRANSCRIPT
Versioning, Extensibility & Postel’s Law
Noah MendelsohnTufts UniversityEmail: noah@cs.tufts.eduWeb: http://www.cs.tufts.edu/~noah
COMP 150-IDS: Internet Scale Distributed Systems (Spring 2015)
Copyright 2012, 2103 & 2015
© 2010 Noah Mendelsohn2
Goals
Explore the design of data formats for systems that evolve
Explore the consequences of connecting systems with nodes that disagree on the rules for communication
© 2010 Noah Mendelsohn
Evolving Systems,Compatibility
&Partial Understanding
© 2010 Noah Mendelsohn
Terminology
Systems evolve resulting in different versions of
– Software
– Data formats & protocols used by that software
Some systems are designed from the start to be extensible
– I.e. there is an architected approach to versioning
Backward compatible: new versions accept old stuff
Forward compatible: old versions accept new stuff!!!
5
© 2010 Noah Mendelsohn
Compatibility is a matter of degree
Full compatibility:
– Hard to define in detail
– Spirit is: things work right when data shared across versions
– Right? Details may still vary accoring to needs of app
Acceptable compatibility
– The system does something reasonable with content that received from other versions of software
– There may be compromises (formatting, reduced function, etc.)
– Let’s explore the notion of “doing something reasonable”
6
© 2010 Noah Mendelsohn
Data formats & partial understanding
When some or all of the data is encoded and interpreted the same way by multiple versions of the specification, inter-operation is easy…we have full compatiblity
The key to flexible inter-operation is partial understanding
Ideally, this is achieved by specifying in early versions of the specifications how illegal content will be interpreted!
Huh? Is it legal or not?– Well, it’s in between…– Should be rejected by conformance checkers– …but implementations of early versions will accept it and follow the rules– …this is in the spirit of Postel’s Law
7
© 2010 Noah Mendelsohn
Data Format Syntax &
Versioning
© 2010 Noah Mendelsohn
Challenges
New syntax for new features
Old features removed
New rules for old features
Changing the meaning of old syntax
9
These changes do happen…but they’re dangerous!
© 2010 Noah Mendelsohn
Challenges
New syntax for new features
Old features removed
New rules for old features
Changing the meaning of old syntax
10
You need something like a version id in the format to catch
these!!
© 2010 Noah Mendelsohn
Problems & groundrules
Nodes disagree about rules for interpreting messages
We want systems to keep running when it’s safe
Certain results will not be acceptable – we must guarantee they are never accepted
Not all problems are equally serious – we’ve already discussed partial understanding
11
© 2010 Noah Mendelsohn
Unique syntax
12
<document> <order> ...lots of stuff here... </order></document>
<document> <order> ...lots of stuff here... </order> <comment> Verions 2 doesn't understand this. </comment></document>
If this is here, it always means the same thing…you either understand it or you don’t!
© 2010 Noah Mendelsohn
Unique syntax
13
<document> <order> ...lots of stuff here... <isApproved>0</isApproved> </order></document>
Le’ts assume that in V1 0 means approved
<document> <order> ...lots of stuff here... <isApproved>1</isApproved> </order></document>
For some reason in V2, the spec is changed to work the opposite way
This is dangerous! Applications can’t tell by looking whether they do or don’t understand!
© 2010 Noah Mendelsohn
Version numbers can help with this
14
<document version=“1.0”> <order> ...lots of stuff here... <isApproved>0</isApproved> </order></document>
<document version=“2.0”> <order> ...lots of stuff here... <isApproved>1</isApproved> </order></document>
By looking at the version number, we can tell whether we know which rules to apply.
© 2010 Noah Mendelsohn
Postel’s Law(the Robustness Principle)
© 2010 Noah Mendelsohn
"Be liberal in what you accept, and conservative in what you send".
© 2010 Noah Mendelsohn
Why Postel’s Law?
Avoid brittle systems: keep running in the face of small problems
Allow for innovation – We’ll discuss this later
Hard/impossible to keep large systems in sync– Internet-scale systems work across organizations
Allow for competition– TCP/IP re-implemented in each OS– Browsers: Firefox, Safari, Chrome, IE, Opera, etc.– Web servers: Apache, IIS
17
© 2010 Noah Mendelsohn
Postel’s Law is controversial
Many in the Internet community deeply believe Postel’s law key to robustness of the Internet
– The IETF has it as a motto
When applied carefully at both ends, results are typically good
You have to watch not to liberally accept something dangerous!
When not applied carefully, big trouble results…
18
© 2010 Noah Mendelsohn
Problems with Postel’s Law
HTML browsers were very liberal in accepting almost anything
So servers stopped following the rules
There’s a ton of buggy content on the Internet…
…and since browsers accept it, people expect it to keep working!
The HTML5 spec is 5x bigger than it needs to be – to standardize handling of buggy content
The servers were not conservative in what they sent!
19
© 2010 Noah Mendelsohn
Note that Postel’s law says little about evolving specifications…it’s mainly to avoid
brittleness in reimplementing the same specification, but…
© 2010 Noah Mendelsohn
…Postel’s law points a direction for building systems that evolve
© 2010 Noah Mendelsohn
Naming&
Decentralized Extensibility
© 2010 Noah Mendelsohn
What if we want lots of people to add features?
Specifications will be modular
We need a way to recognize the syntax for each feature
Who gets to invent new syntax?
How can we keep two organizations from inventing the same syntax?
Problem: as we saw when we studied naming…
…globally unique names tend to be ugly and inconvenient
© 2010 Noah Mendelsohn
The HTML Distributed Extensibility Debate
The W3C spent years moving HTML to XML (XHMTL)
A big reason was so anyone could invent new tag names without collision…XML has namespace
But… many users rebelled against the inconvenience
HTML5 can only be updated by a central committee…
…but the tag names are short and convenient
This controversy almost derailed HTML evolution
24
See: http://lists.w3.org/Archives/Public/www-archive/2009Nov/att-0004/DecentrailzedExtensibilityandHTML_v9fixed.pdf
top related