Versioning, Extensibility & Postel’s Law

Slides:



Advertisements
Similar presentations
Hypermedia systems Jakub Husár & Tomáš Jurík. Content XHTML 2.0 Definition Short history Differences between 1.0 and 2.0 Usage suitability Improvements.
Advertisements

XHTML Basics. What is XHTML? XHTML is newer than the old HTML XHTML has stricter rules and does not allow some elements formerly used in HTML One benefit.
Introduction to JavaScript Module 1 Client Side JS Programming M-GO Sponsored By
Copyright 2012 & 2015 – Noah Mendelsohn A Brief Introduction to Requests for Comments – The Specifications for the Internet Noah Mendelsohn Tufts University.
Achieving Distributed Extensibility and Versioning in XML Dave Orchard W3C Lead BEA Systems.
Cox Personal Web Space (or AOL space) Free Storage for Image Galleries.
IS 373—Web Standards Todd Will
MWD1001 – Website Production Web Browsers Week 11.
Developing a Basic Web Page with HTML
Document Type Definitions. XML and DTDs A DTD (Document Type Definition) describes the structure of one or more XML documents. Specifically, a DTD describes:
By Laura Trawin.
Boris Tshibangu. What is a proxy server? A proxy server is a server (a computer system or an application) that acts as an intermediary for requests from.
Web server and web browser It’s a take and give policy in between client and server through HTTP(Hyper Text Transport Protocol) Server takes a request.
INTRODUCTION TO CLIENT-SIDE WEB PROGRAMMING ACM 511 ACM 262 Course Notes.
HTML 5 New Standardization of HTML. I NTRODUCTION HTML5 is The New HTML Standard, New Elements New Attributes Full CSS3 Support Video and Audio 2D/3D.
Pemrograman Berbasis WEB XML part 2 -Aurelio Rahmadian- Sumber: w3cschools.com.
1 HTML/XHTML Objectives Explain what HTML is and how Web pages use HTML Explain what HTML is and how Web pages use HTML Demonstrate how to create Web pages.
Copyright © 2004 ProsoftTraining, All Rights Reserved. Lesson 2: Markup Language and Site Development Essentials.
Networks QUME 185 Introduction to Computer Applications.
CIS 1310 – HTML & CSS 1 Introduction to the Internet.
Versioning, Extensibility & Postel’s Law Noah Mendelsohn Tufts University Web:
Copyright 2012 & 2015 – Noah Mendelsohn Introduction to: The Architecture of the World Wide Web Noah Mendelsohn Tufts University
Forms and Server Side Includes. What are Forms? Forms are used to get user input We’ve all used them before. For example, ever had to sign up for courses.
World Wide Web “WWW”, "Web" or "W3". World Wide Web “WWW”, "Web" or "W3"
Copyright 2012 & 2015 – Noah Mendelsohn Metcalfe’s Law : Why is the Web so Big? Noah Mendelsohn Tufts University
David Orchard W3C Lead BEA Systems Web service and XML Extensibility and Versioning.
Browser Wars By: Jesse Arredondo
May 6, 2009 Browser Compatibility Testing Definition It is a non functional type of testing where web based applications are tested on various browsers(IE.
1 CSC160 Chapter 1: Introduction to JavaScript Chapter 2: Placing JavaScript in an HTML File.
1 Using jQuery JavaScript & jQuery the missing manual (Second Edition)
Web Design Principles 5 th Edition Chapter 3 Writing HTML for the Modern Web.
Code Simplicity: Software Design In Open Source Projects Max Kanat-Alexander
Decentralized Extensibility & HTML 5 (An introduction to the debate) Noah Mendelsohn Distinguished Engineer – IBM Corp. Co-chair: W3C Technical Architecture.
Introduction to: The Architecture of the Internet
* Web Servers/Clients * The HTTP Protocol
How Do Users Share Computer Files?
Tonga Institute of Higher Education IT 141: Information Systems
How do Web Applications Work?
Essentials of UrbanCode Deploy v6.1 QQ147
Introduction to: The Architecture of the World Wide Web
COMP 150-IDS: Internet Scale Distributed Systems (Spring 2017)
Data Virtualization Tutorial… CORS and CIS
Certificates An increasingly popular form of authentication
Decentralized Extensibility & HTML 5 (An introduction to the debate)
Introduction to Computers
HTTP: the hypertext transfer protocol
Enterprise Application Architecture
STOP. THINK. CONNECT. Online Safety Quiz.
How To Fix AOL Desktop Update Error AOL Helpline Number
Introduction to: The Architecture of the World Wide Web
Design and Maintenance of Web Applications in J2EE
3D IN THE CLOUD Ray Kaplan - synglyphx.
Introduction to: The Architecture of the Internet
Browser Support for HTML5
Tonga Institute of Higher Education IT 141: Information Systems
Versioning, Extensibility & Postel’s Law
Introduction to: The Architecture of the World Wide Web
Introduction to: The Architecture of the Internet
COMP 150-IDS: Internet Scale Distributed Systems (Spring 2016)
Certificates An increasingly popular form of authentication
Metcalfe’s Law : Why is the Web so Big?
Tonga Institute of Higher Education IT 141: Information Systems
MORE ON ARCHITECTURES The main reasons for using an architecture are maintainability and performance. We want to structure the software into reasonably.
COMP 150-IDS: Internet Scale Distributed Systems (Spring 2016)
Intro to html5.
An Introduction to HTML Pages
Certificates An increasingly popular form of authentication
And Mobile Web Browsers
Software Development Techniques
* Web Servers/Clients * The HTTP Protocol
Presentation transcript:

Versioning, Extensibility & Postel’s Law COMP 150-IDS: Internet Scale Distributed Systems (Spring 2017) Versioning, Extensibility & Postel’s Law Noah Mendelsohn Tufts University Email: noah@cs.tufts.edu Web: http://www.cs.tufts.edu/~noah Copyright 2012, 2103, 2015, 2016 & 2017

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

Evolving Systems, Compatibility & Partial Understanding

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!!!

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”

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

Partial understanding in HTML – illegal tags Ignored for rendering Added to the DOM Scriptable Styleable

Data Format Syntax & Versioning

Challenges New syntax for new features Old features removed These changes do happen…but they’re dangerous! New syntax for new features Old features removed New rules for old features Changing the meaning of old syntax

You need something like a version id in the format to catch these!! Challenges You need something like a version id in the format to catch these!! New syntax for new features Old features removed New rules for old features Changing the meaning of old syntax

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

Unique syntax <document> <order> ...lots of stuff here... If this is here, it always means the same thing…you either understand it or you don’t! <document> <order> ...lots of stuff here... </order> </document> <document> <order> ...lots of stuff here... </order> <comment> Version 1 doesn't understand this. </comment> </document>

Unique syntax <document> <order> ...lots of stuff here... Le’ts assume that in V1 0 means approved Unique syntax <document> <order> ...lots of stuff here... <isApproved>0</isApproved> </order> </document> For some reason in V2, the spec is changed to work the opposite way <document> <order> ...lots of stuff here... <isApproved>1</isApproved> </order> </document> This is dangerous! Applications can’t tell by looking whether they do or don’t understand!

Version numbers can help with this <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.

Version numbers can help with this <document version=“1.0”> <order> ...lots of stuff here... <isApproved>0</isApproved> </order> </document> Problems with Version Numbers Would you want to put a C version on each source file How would you figure out the version number? <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.

In-band vs. in the specification controls In-band controls tell the receiver what can be ignored: <cacheThis soap:mustUnderstand=“false”> <currency name=“pesos” soap:mustUnderstand=“true”> Tolerance for extensions can be set out in the specification Unexpected HTML tags: Ignored for rendering Added to the DOM Scriptable Styleable

Postel’s Law (the Robustness Principle)

"Be liberal in what you accept, and conservative in what you send".

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

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…

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!

Note that Postel’s law says little about evolving specifications…it’s mainly to avoid brittleness in reimplementing the same specification, but…

…Postel’s law points a direction for building systems that evolve

Naming & Decentralized Extensibility

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

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 See: http://lists.w3.org/Archives/Public/www-archive/2009Nov/att-0004/DecentrailzedExtensibilityandHTML_v9fixed.pdf

Conclusions

Summary Planning for evolution is a key challenge when designing systems The key decisions are usually baked into the first release! Forward compatibility is essential but difficult… …architecting rules for partial understanding is usually the way to enable software and data formats to evolve Postel’s law: Be conservative in what you send, liberal in what you accept. Make sure to follow both halves of the law!