20 may 2005 software architecture in an open source world€¦ · an open source world most...

Post on 10-Aug-2020

3 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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/

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

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

20 May 2005 4

www.day.com2005 International Conference on Software Engineering

World Wide Web Perspectives

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

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]

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

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

20 May 2005 9

www.day.com2005 International Conference on Software Engineering

Apache httpd: kernel

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

20 May 2005 10

www.day.com2005 International Conference on Software Engineering

Apache httpd: preforking MPM

[f-m-c.org]

20 May 2005 11

www.day.com2005 International Conference on Software Engineering

Apache httpd: worker MPM

[f-m-c.org]

20 May 2005 12

www.day.com2005 International Conference on Software Engineering

Apache httpd: winnt MPM

[f-m-c.org]

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

20 May 2005 14

www.day.com2005 International Conference on Software Engineering

Mozilla Firefox

Multiplatform

Lightweight

CommunitySupported

StandardsCompliant

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

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

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

20 May 2005 18

www.day.com2005 International Conference on Software Engineering

Eclipse Platform

20 May 2005 19

www.day.com2005 International Conference on Software Engineering

Eclipse Platform

20 May 2005 20

www.day.com2005 International Conference on Software Engineering

Eclipse Platform

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

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

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)

top related