Apache Aries An Open Source project for Enterprise OSGi Applications
20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most...
Transcript of 20 May 2005 Software Architecture in an Open Source World€¦ · An open source world Most...
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)