+ All Categories
Home > Documents > 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most...

20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most...

Date post: 10-Aug-2020
Category:
Upload: others
View: 0 times
Download: 0 times
Share this document with a friend
23
20 May 2005 www.day.com 2005 International Conference on Software Engineering Software Architecture in an Open Source World Roy T. Fielding, Ph.D. Chief Scientist, Day Software Co-founder, The Apache Software Foundation Member, W3C Technical Architecture Group Member, OpenSolaris Community Advisory Board http://roy.gbiv.com/
Transcript
Page 1: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005

www.day.com2005 International Conference on Software Engineering

Software Architecture in an Open Source World

Roy T. Fielding, Ph.D.

Chief Scientist, Day SoftwareCo-founder, The Apache Software FoundationMember, W3C Technical Architecture GroupMember, OpenSolaris Community Advisory Board

http://roy.gbiv.com/

Page 2: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 2

www.day.com2005 International Conference on Software Engineering

Disclaimers

There is no single “Open Source” modelProjects range in scope from the miniscule

thousands of code dumps on SourceForgestudent projects and system dissertationsfailed commercial ventures

to the truly internationalhundreds of developerscollaborating, directly or indirectlyon a common platform

I’ll focus on a subset of “Software Architecture”Run-time architecture, not software structureRealized architecture, not architectural descriptionsPrincipled design for desired properties

Page 3: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 3

www.day.com2005 International Conference on Software Engineering

Example open source projects

World Wide WebURI schemes, HTTP methods, media types

Linuxkernel modules

Apache httpdfeature modules, modular process models, I/O filters

Mozilla Firefoxextensions, themes, XUL, CSS

Eclipsean architecture of plug-ins

Page 4: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 4

www.day.com2005 International Conference on Software Engineering

World Wide Web Perspectives

Page 5: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 5

www.day.com2005 International Conference on Software Engineering

Web Protocol Extensibility

Uniform Resource Identifiers

• schemes• hierarchical delegation

HTTP• versions• methods• header fields

Media types• HTML• XML

Page 6: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 6

www.day.com2005 International Conference on Software Engineering

Linux Kernel Modules

Modules

• simplify core

• enable independentdevelopment

• promoteexperiments

Project improves

• reduced friction

• anarchic growth

• more features

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

Page 7: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 7

www.day.com2005 International Conference on Software Engineering

Apache httpd

Started with NCSA httpd 1.3Simple, easy to compile on many legacy platformsLimited extensibility via CGI

Improved security, features, and performanceVirtual hostsPre-forking (adaptive hunt-group) model

0.8: re-architected for extensibility (Shambhala)Modular API for features (hook and ladder design)Pools for memory allocation (robustness)

2.0: architecture enhanced for more extensibilityModular Process Model (pre-fork, multithreaded, win32, …)I/O filters and protocol modules

Page 8: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 8

www.day.com2005 International Conference on Software Engineering

Apache httpd: modules

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

Modules

• simplify core

• enable independentdevelopment

• promoteexperiments

Project improves

• reduced friction

• anarchic growth

• more features

• less communication

Page 9: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 9

www.day.com2005 International Conference on Software Engineering

Apache httpd: kernel

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

Page 10: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 10

www.day.com2005 International Conference on Software Engineering

Apache httpd: preforking MPM

[f-m-c.org]

Page 11: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 11

www.day.com2005 International Conference on Software Engineering

Apache httpd: worker MPM

[f-m-c.org]

Page 12: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 12

www.day.com2005 International Conference on Software Engineering

Apache httpd: winnt MPM

[f-m-c.org]

Page 13: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 13

www.day.com2005 International Conference on Software Engineering

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

Page 14: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 14

www.day.com2005 International Conference on Software Engineering

Mozilla Firefox

Multiplatform

Lightweight

CommunitySupported

StandardsCompliant

Page 15: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 15

www.day.com2005 International Conference on Software Engineering

Firefox: User-friendly

Tabbed Browsing

Integrated Search

Live Bookmarks

RSS/XML Feeds

UI Themes

Page 16: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 16

www.day.com2005 International Conference on Software Engineering

Firefox: Developer-friendly

Open Source

ExtensibleArchitecture

Plug-in Tools

Layered CSS

Editor Platform

Page 17: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 17

www.day.com2005 International Conference on Software Engineering

Eclipse Platform

[Birsan, ACM Queue, Mar 2005]

Taking modular extensibility to the next level

Page 18: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 18

www.day.com2005 International Conference on Software Engineering

Eclipse Platform

Page 19: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 19

www.day.com2005 International Conference on Software Engineering

Eclipse Platform

Page 20: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 20

www.day.com2005 International Conference on Software Engineering

Eclipse Platform

Page 21: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 21

www.day.com2005 International Conference on Software Engineering

An open source world

Most proprietary software projects depend onat least one open source component

Internet (bind, httpd, browsers)XML (Xerces, Xalan, Saxon)Scripting (Bash, Perl, Python, Ruby, TCL, Rhino)Security (GPG, OpenSSL, MD5, SHA*)

And those dependencies are growingApache Derby (embedded database)Apache Jackrabbit (content repository API)Apache Geronimo (J2EE)Apache Harmony (JVM)Sun OpenSolaris

Page 22: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 22

www.day.com2005 International Conference on Software Engineering

Why is this important?

Because innovation doesn’t just “happen”Innovation requires leadershipInnovation occurs in spurtsInnovation depends on deploymentInnovation is aided by extensible architectures

Because open source is taking the leadOpen source encourages collaboration

Collaboration is simplified through extensibility

Extensibility allows us to stand on the shoulders of giants

Because it makes Software Research easier!Shared platforms reduce the overhead of systems work

Page 23: 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most proprietary software projects depend on ... Apache Geronimo (J2EE) Apache Harmony (JVM)

20 May 2005 23

www.day.com2005 International Conference on Software Engineering

Architecture of Participation

What is common to the largest and most successful open source projects?

a software architecturedesigned to promote anarchic collaborationthrough extensionswhile preserving control over the core interfaces

Collaborative open source developmentemphasizes communitytakes advantage of the scalability obtainable through Internet-based virtual organizationsadapts to the volunteer nature of developers

Architecture by design (not a natural byproduct)


Recommended