Day: Open Development

57
Monday, October 18, 2010

description

Day's R&D philosophy is designed to leverage open development through leadership in a triad of infrastructure innovation: open source, open standards, and open architecture. This talk is about how open development works, the science behind our approach, and why it provides long-term benefits for our products, our customers, and our growth as a company. Roy Fielding, Chief Scientist, Day Software

Transcript of Day: Open Development

Page 1: Day: Open Development

Monday, October 18, 2010

Page 2: Day: Open Development

Open DevelopmentRoy T. Fielding, Ph.D.Chief Scientist, Day Software

Monday, October 18, 2010

Page 3: Day: Open Development

OPENSOURCE

3

Monday, October 18, 2010

Page 4: Day: Open Development

OPENSOURCE

OPENSTANDARDS

4

URI

HTTP

CMIS

JSOP

JCR

URI Templates

HTML

Monday, October 18, 2010

Page 5: Day: Open Development

OPENSOURCE

OPENSTANDARDS

OPENARCHITECTURE

5

REST OSGi

Monday, October 18, 2010

Page 6: Day: Open Development

Collaboration

It’s all about

Monday, October 18, 2010

Page 7: Day: Open Development

Collaborationbut how?

Monday, October 18, 2010

Page 8: Day: Open Development

Effective Collaboration

✴ (One) Shared Goal

✴ Agree how to disagree & decide

✴ Shared Workspace

✴ Dynamic Awareness

✴ Parallelization

Monday, October 18, 2010

Page 9: Day: Open Development

OPENSOURCE

OPENSTANDARDS

OPENARCHITECTURE

9

Monday, October 18, 2010

Page 10: Day: Open Development

Open Architecture ?

Not talking about open exoskeleton buildings

10

Monday, October 18, 2010

Page 11: Day: Open Development

Open Architecture ?Not talking about Open Sourced Architecture

11

Monday, October 18, 2010

Page 12: Day: Open Development

Open Architecture ?

Not even talking about personal computer open architecture

12

Monday, October 18, 2010

Page 13: Day: Open Development

Open Architecture ?

versus

Mainly talking about design foropen systems

13

Monday, October 18, 2010

Page 14: Day: Open Development

Why talk about Open Architecture?14

Open Development

Collaborative open source development> emphasizes community> takes advantage of the scalability

obtainable through Internet-basedvirtual organizations

> adapts to the volunteer nature of developers

Monday, October 18, 2010

Page 15: Day: Open Development

Why talk about Open Architecture?15

Open Development+

Conway’s Law

Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization's communication structure.

Melvin E. Conway, Datamation, April 1968http://www.melconway.com/law/index.html

Monday, October 18, 2010

Page 16: Day: Open Development

True open development(a.k.a, Community-driven Design)will only occur when the design of

your system reflects the organizational structure of open development!

Why talk about Open Architecture?16

Open Development+

Conway’s Law

Monday, October 18, 2010

Page 17: Day: Open Development

Why talk about Open Architecture?17

Open Development+

Conway’s Law+

Change is inevitable!

Decentralized Software Evolution(or rapid obsolescence)

Monday, October 18, 2010

Page 18: Day: Open Development

20 August 2010 18

Decentralized Software EvolutionRequires Architecture by Design

open (software) architecture

used by open development projects

to enable decentralized software evolution

so that others can continue to design the software

and fulfill Conway’s Law

leading to success over time!

Monday, October 18, 2010

Page 19: Day: Open Development

Challenges

✴ Trade-off: Adaptability vs Consistency✴ what changes are possible?

✴ what assurances are provided?

✴ Where to place the open points✴ behavioral junctions (APIs, callback hooks)

✴ virtual machines (command tables, scripting)

✴ data flow (filters, plug-ins)

Monday, October 18, 2010

Page 20: Day: Open Development

Closed Source Examples

✴ Adobe

Monday, October 18, 2010

Page 21: Day: Open Development

Closed Source Examples

✴ Apple iPhone Ecosystem

Monday, October 18, 2010

Page 22: Day: Open Development

Open Source Examples

✴ What is common to all of the largest and most successful open source projects?✴ a software architecture

✴ designed to promote anarchic collaboration

✴ through extensions

✴ while preserving control over the core interfaces

Monday, October 18, 2010

Page 23: Day: Open Development

23

Apache httpd: modules

[Apache Modeling Project, f-m-c.org]

Modules

• simplify core

• enable independent development

• promote experiments

Project improves

• reduced friction

• anarchic growth

• more features

• less communication

Monday, October 18, 2010

Page 24: Day: Open Development

24

Apache httpd: I/O filters

[Apache Modeling Project, f-m-c.org]

Filters provide more extensibility

• protocol replacement

• httpd, ftpd, nntpd, …

• stackable content manipulation

• extensions that can extend other extensions

Monday, October 18, 2010

Page 25: Day: Open Development

25

Linux Kernel ModulesModules

• simplify core

• enable independent development

• promote experiments

Project improves

• reduced friction

• anarchic growth

• more features

• less communication[diagram from Ivan T. Bowman, 1998]

Monday, October 18, 2010

Page 26: Day: Open Development

26

Mozilla FirefoxOpen Source

Extensible

Architecture

Plug-in Tools

Layered CSS

Editor Platform

Monday, October 18, 2010

Page 27: Day: Open Development

World Wide Web Project

Browsers

Information

27

next table of contents elements attributes index

HTML 4.01 Specification

W3C Recommendation 24 December 1999

This version:

http://www.w3.org/TR/1999/REC-html401-19991224

(plain text [794Kb], gzip'ed tar archive of HTML files [371Kb], a .zip archive of HTML files

[405Kb], gzip'ed Postscript file [746Kb, 389 pages], gzip'ed PDF file [963Kb])

Latest version of HTML 4.01:

http://www.w3.org/TR/html401

Latest version of HTML 4:

http://www.w3.org/TR/html4

Latest version of HTML:

http://www.w3.org/TR/html

Previous version of HTML 4.01:

http://www.w3.org/TR/1999/PR-html40-19990824

Previous HTML 4 Recommendation:

http://www.w3.org/TR/1998/REC-html40-19980424

Editors:

Dave Raggett <[email protected]>

Arnaud Le Hors, W3C

Ian Jacobs, W3C

Copyright ©1997-1999 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use

and software licensing rules apply.

Abstract

This specification defines the HyperText Markup Language (HTML), the publishing language of the

World Wide Web. This specification defines HTML 4.01, which is a subversion of HTML 4. In addition

to the text, multimedia, and hyperlink features of the previous versions of HTML (HTML 3.2 [HTML32]

and HTML 2.0 [RFC1866]), HTML 4 supports more multimedia options, scripting languages, style

sheets, better printing facilities, and documents that are more accessible to users with disabilities.

HTML 4 also takes great strides towards the internationalization of documents, with the goal of making

the Web truly World Wide.

HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard

Generalized Markup Language [ISO8879].

Status of this document

Network Working Group R. FieldingRequest for Comments: 2068 UC IrvineCategory: Standards Track J. Gettys J. C. Mogul DEC H. Frystyk T. Berners-Lee MIT/LCS January 1997

Hypertext Transfer Protocol -- HTTP/1.1

Status of this MemoThis document specifies an Internet standards track protocol for the Internet community, and requests

discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official

Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this

memo is unlimited.

AbstractThe Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative,

hypermedia information systems. It is a generic, stateless, object-oriented protocol which can be used for

many tasks, such as name servers and distributed object management systems, through extension of its

request methods. A feature of HTTP is the typing and negotiation of data representation, allowing systems

to be built independently of the data being transferred.

HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification

defines the protocol referred to as “HTTP/1.1”.

Network Working Group T. Berners-Lee

Request for Comments: 3986 W3C/MIT

Obsoletes: 2732, 2396, 1808 R. Fielding

STD: 66 Day Software

Updates: 1738 L. Masinter

Category: Standards Track Adobe Systems

January 2005

Uniform Resource Identifier (URI): Generic Syntax

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community,and requests discussion and suggestions for improvements. Please refer to the currentedition of the “Internet Official Protocol Standards” (STD 1) for the standardization stateand status of this protocol. Distribution of this memo is unlimited.

Copyright Notice

Copyright © The Internet Society (2005). All Rights Reserved.

Abstract

A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.

Protocols

Monday, October 18, 2010

Page 28: Day: Open Development

Web Implementation

28

Application ServersDynamic Content

Centralized DataRDBMS, NFS, SAN

Webservers/GatewaysAccelerator Cache

User Agents

IntermediaryProxy Cache

Monday, October 18, 2010

Page 29: Day: Open Development

Web Architecture

29

$

$

$

$

$

$

$

$User Agents

Proxies Gateways Origin Servers

Monday, October 18, 2010

Page 30: Day: Open Development

Web Architecture

30

next table of contents elements attributes index

HTML 4.01 Specification

W3C Recommendation 24 December 1999

This version:

http://www.w3.org/TR/1999/REC-html401-19991224

(plain text [794Kb], gzip'ed tar archive of HTML files [371Kb], a .zip archive of HTML files

[405Kb], gzip'ed Postscript file [746Kb, 389 pages], gzip'ed PDF file [963Kb])

Latest version of HTML 4.01:

http://www.w3.org/TR/html401

Latest version of HTML 4:

http://www.w3.org/TR/html4

Latest version of HTML:

http://www.w3.org/TR/html

Previous version of HTML 4.01:

http://www.w3.org/TR/1999/PR-html40-19990824

Previous HTML 4 Recommendation:

http://www.w3.org/TR/1998/REC-html40-19980424

Editors:

Dave Raggett <[email protected]>

Arnaud Le Hors, W3C

Ian Jacobs, W3C

Copyright ©1997-1999 W3C® (MIT, INRIA, Keio), All Rights Reserved. W3C liability, trademark, document use

and software licensing rules apply.

Abstract

This specification defines the HyperText Markup Language (HTML), the publishing language of the

World Wide Web. This specification defines HTML 4.01, which is a subversion of HTML 4. In addition

to the text, multimedia, and hyperlink features of the previous versions of HTML (HTML 3.2 [HTML32]

and HTML 2.0 [RFC1866]), HTML 4 supports more multimedia options, scripting languages, style

sheets, better printing facilities, and documents that are more accessible to users with disabilities.

HTML 4 also takes great strides towards the internationalization of documents, with the goal of making

the Web truly World Wide.

HTML 4 is an SGML application conforming to International Standard ISO 8879 -- Standard

Generalized Markup Language [ISO8879].

Status of this document

Network Working Group R. FieldingRequest for Comments: 2068 UC IrvineCategory: Standards Track J. Gettys J. C. Mogul DEC H. Frystyk T. Berners-Lee MIT/LCS January 1997

Hypertext Transfer Protocol -- HTTP/1.1

Status of this MemoThis document specifies an Internet standards track protocol for the Internet community, and requests

discussion and suggestions for improvements. Please refer to the current edition of the "Internet Official

Protocol Standards" (STD 1) for the standardization state and status of this protocol. Distribution of this

memo is unlimited.

AbstractThe Hypertext Transfer Protocol (HTTP) is an application-level protocol for distributed, collaborative,

hypermedia information systems. It is a generic, stateless, object-oriented protocol which can be used for

many tasks, such as name servers and distributed object management systems, through extension of its

request methods. A feature of HTTP is the typing and negotiation of data representation, allowing systems

to be built independently of the data being transferred.

HTTP has been in use by the World-Wide Web global information initiative since 1990. This specification

defines the protocol referred to as “HTTP/1.1”.

Network Working Group T. Berners-Lee

Request for Comments: 3986 W3C/MIT

Obsoletes: 2732, 2396, 1808 R. Fielding

STD: 66 Day Software

Updates: 1738 L. Masinter

Category: Standards Track Adobe Systems

January 2005

Uniform Resource Identifier (URI): Generic Syntax

Status of this Memo

This document specifies an Internet standards track protocol for the Internet community,and requests discussion and suggestions for improvements. Please refer to the currentedition of the “Internet Official Protocol Standards” (STD 1) for the standardization stateand status of this protocol. Distribution of this memo is unlimited.

Copyright Notice

Copyright © The Internet Society (2005). All Rights Reserved.

Abstract

A Uniform Resource Identifier (URI) is a compact sequence of characters that identifies an abstract or physical resource. This specification defines the generic URI syntax and a process for resolving URI references that might be in relative form, along with guidelines and security considerations for the use of URIs on the Internet. The URI syntax defines a grammar that is a superset of all valid URIs, allowing an implementation to parse the common components of a URI reference without knowing the scheme-specific requirements of every possible identifier. This specification does not define a generative grammar for URIs; that task is performed by the individual specifications of each URI scheme.

Protocols

Monday, October 18, 2010

Page 31: Day: Open Development

ArchitectingIt’s all about

Open Development

for

31

Monday, October 18, 2010

Page 32: Day: Open Development

Architectural Styles

32

Ionic Order

Monday, October 18, 2010

Page 33: Day: Open Development

A horizontal abstraction on architecture‣ a way of naming architectural patterns in implementation

An architectural style is a set of constraints‣ unfortunately, constraints are hard to visualize

kind of like gravity or electromagnetism observed only by their effect on others

‣ and style constraints are voluntary there are no architecture police, but there are many architecture critics

Constraints induce architectural properties‣ both desirable and undesirable properties

a.k.a., software qualities and design trade-offs

20 August 2010

Architectural Styles

33

Monday, October 18, 2010

Page 34: Day: Open Development

20 August 2010

Representational State TransferThe REST architectural style is

1 a model of ideal Web application behavior

2 a guide for optimizing Web architecture

3 a pattern for communicating‣ architectural constraints‣ induced properties‣ resulting trade-offs

4 a new software industry buzzword

34

Monday, October 18, 2010

Page 35: Day: Open Development

REST on a slide

85

the disadvantages) of the optional constraints when they are known to be in effect for some

realm of the overall system. For example, if all of the client software within an

organization is known to support Java applets [45], then services within that organization

can be constructed such that they gain the benefit of enhanced functionality via

downloadable Java classes. At the same time, however, the organization’s firewall may

prevent the transfer of Java applets from external sources, and thus to the rest of the Web

it will appear as if those clients do not support code-on-demand. An optional constraint

allows us to design an architecture that supports the desired behavior in the general case,

but with the understanding that it may be disabled within some contexts.

5.1.8 Style Derivation Summary

REST consists of a set of architectural constraints chosen for the properties they induce on

candidate architectures. Although each of these constraints can be considered in isolation,

describing them in terms of their derivation from common architectural styles makes it

Figure 5-9. REST Derivation by Style Constraints

RR CS LS VM U

CSS LCS COD$

C$SS LC$SS LCODC$SS REST

replicated

on-demand

separated

layered

mobile

uniform interface

stateless

shared

intermediate

processing

cacheable

extensible

simple

reusable

scalable

reliable

multi-org.

visible

programmable

35

Monday, October 18, 2010

Page 36: Day: Open Development

Monday, October 18, 2010

Page 37: Day: Open Development

Monday, October 18, 2010

Page 38: Day: Open Development

Monday, October 18, 2010

Page 39: Day: Open Development

39

Eclipse Platform

[Birsan, ACM Queue, Mar 2005]

Taking modular extensibility to the next level OSGi

Monday, October 18, 2010

Page 40: Day: Open Development

40

Eclipse Platform

Monday, October 18, 2010

Page 41: Day: Open Development

41

Eclipse Platform

Monday, October 18, 2010

Page 42: Day: Open Development

Apache Sling

42

Drop-in

Extensibility

usingOSGi Bundles

jsp

rubyscala

groovyesp...

JCR backedContent-orientedWebDAV-ableREST-based

+

OSGi RESTMonday, October 18, 2010

Page 43: Day: Open Development

OPENSOURCE

OPENSTANDARDS

OPENARCHITECTURE

43

REST OSGi

Monday, October 18, 2010

Page 44: Day: Open Development

OPENSOURCE

OPENSTANDARDS

Standards

44

URI

HTTP

CMIS

JSOP

JCR

URI Templates

HTML

Monday, October 18, 2010

Page 45: Day: Open Development

OPENSOURCE

45

Monday, October 18, 2010

Page 46: Day: Open Development

The ASF in 2010

> 2359 committers

84 projects (+ 36 incubating)

No officesalmost no f2f meetings

all decisions on mailing listsHundreds of releases

ASF members: 3303 TB/day www traffic

Monday, October 18, 2010

Page 47: Day: Open Development

Apache Decisions

+1Monday, October 18, 2010

Page 48: Day: Open Development

revision control system

mailing lists + archives IRC

Wikis

blogs

issue trackerautomated builds

httpd (of course)

Shared workspace

Monday, October 18, 2010

Page 49: Day: Open Development

Dynamic Awareness

Monday, October 18, 2010

Page 50: Day: Open Development

Traditional Feedback

code

feedback

developer

user

manager

How fast is your loop?

Days? Weeks?

Monday, October 18, 2010

Page 51: Day: Open Development

Communication OD

Central HubMess Media?

?

?

?

?

?

?

??

oral tradition? permanent record

or

Monday, October 18, 2010

Page 52: Day: Open Development

Real-time updates

Collaboration hub!

code

issues

tests

decisionsRSS feeds

email events

subscriptions

Monday, October 18, 2010

Page 53: Day: Open Development

Real-time updates

Source code control system instead of “code on the fileserver”.

Issue tracker events instead of“what did you do today”?

Mailing list “events” instead of“yell around the office”.

Automated builds instead of“wait for Bob to build it on Linux”.

Monday, October 18, 2010

Page 54: Day: Open Development

Effective Collaboration

✴ (One) Shared Goal

✴ Agree how to disagree & decide

✴ Shared Workspace

✴ Dynamic Awareness

✴ Parallelization

Monday, October 18, 2010

Page 55: Day: Open Development

alexkli, angela, dpfister, fielding [*], fmeschbe, jukka, mreutegg, ppiegaze, stefan, tripod, uncled

bdelacretaz [*], cziegeler, fmeschbe

[*] member of the Board of Directors

Committers, PMC members and mentors on these projects, and others

Monday, October 18, 2010

Page 56: Day: Open Development

What does Day get?

Industry recognition (+ JSR-170)Credibility with world-class people

The Open Development Way of Working(works inside the company as well)

Contacts. Networks. Ideas.

Great infrastructure software, Many eyeballs.

Monday, October 18, 2010

Page 57: Day: Open Development

OPENSOURCE

57

[email protected]

[email protected]

[email protected]

[email protected]

Monday, October 18, 2010