The Apache HTTP Server Project

Slides:



Advertisements
Similar presentations
HTTP and Apache Roy T. Fielding eBuilt, Inc. The Apache Software Foundation
Advertisements

Business Development Suit Presented by Thomas Mathews.
Virtual Collaboration with SharePoint Instructor: Michael Curry.
Lesson 18-Internet Architecture. Overview Internet services. Develop a communications architecture. Design a demilitarized zone. Understand network address.
Web Servers How do our requests for resources on the Internet get handled? Can they be located anywhere? Global?
OCT1 Principles From Chapter One of “Distributed Systems Concepts and Design”
70-290: MCSE Guide to Managing a Microsoft Windows Server 2003 Environment Chapter 1: Introduction to Windows Server 2003.
CS CS 5150 Software Engineering Lecture 13 System Architecture and Design 1.
Rich Hypermedia for NB Requirements and Release Process Version 3.3 CSEM Consulting ICS 225 – Spring 2002.
When will our bugs be fixed? When will our new features be added? When will the next release come out? Is my server up-to-date? Users Committers Program.
How Clients and Servers Work Together. Objectives Learn about the interaction of clients and servers Explore the features and functions of Web servers.
Systems Architecture, Fourth Edition1 Internet and Distributed Application Services Chapter 13.
CP476 Internet Computing Browser and Web Server 1 Web Browsers A client software program that allows you to access and view Web pages on the Internet –Examples.
July 16 th, 2005 Software Architecture in Practice RiSE’s Seminars Bass’s at all Book :: Chapters 13 Fred Durão.
Client-Server Processing and Distributed Databases
Version Control with Subversion. What is Version Control Good For? Maintaining project/file history - so you don’t have to worry about it Managing collaboration.
Web Servers Web server software is a product that works with the operating system The server computer can run more than one software product such as .
Trimble Connected Community
ABSTRACT Zirous Inc. is a growing company and they need a new way to track who their employees working on various different projects. To solve the issue.
Principles of Computer Security: CompTIA Security + ® and Beyond, Third Edition © 2012 Principles of Computer Security: CompTIA Security+ ® and Beyond,
Technology Overview. Agenda What’s New and Better in Windows Server 2003? Why Upgrade to Windows Server 2003 ?  From Windows NT 4.0  From Windows 2000.
Microsoft Active Directory(AD) A presentation by Robert, Jasmine, Val and Scott IMT546 December 11, 2004.
Nightly Releases and Testing Alexander Undrus Atlas SW week, May
SOFTWARE DESIGN AND ARCHITECTURE LECTURE 07. Review Architectural Representation – Using UML – Using ADL.
1 Apache. 2 Module - Apache ♦ Overview This module focuses on configuring and customizing Apache web server. Apache is a commonly used Hypertext Transfer.
 Chapter 6 Architecture 1. What is Architecture?  Overall Structure of system  First Stage in Design process 2.
Statistics Monitor of SPMSII Warrior Team Pu Su Heng Tan Kening Zhang.
Chapter 14 Part II: Architectural Adaptation BY: AARON MCKAY.
Oracle 10g Database Administrator: Implementation and Administration Chapter 2 Tools and Architecture.
1 Chapter Overview Performing Configuration Tasks Setting Up Additional Features Performing Maintenance Tasks.
Hands-On Microsoft Windows Server Implementing Microsoft Internet Information Services Microsoft Internet Information Services (IIS) –Software included.
© 2010 Oracle Corporation – Proprietary and Confidential.
Web Technologies Lecture 1 The Internet and HTTP.
Module 9 User Profiles and Social Networking. Module Overview Configuring User Profiles Implementing SharePoint 2010 Social Networking Features.
Process Modeling Across the Web Information Infrastructure Chris Jensen and Walt Scacchi Institute for Software Research School of Information and Computer.
Apache Web Server Architecture Chaitanya Kulkarni MSCS rd April /23/20081Apache Web Server Architecture.
Meeting Scheduling System Capstone Project - Team#5 Fall2007.
Session #2482 Implementing WebDAV Using J2EE TM and Open Source Technologies Juergen Pill Team Leader Software AG Remy Maucherat Software Engineer Sun.
BOF-1147, JavaTM Technology and WebDAV: Standardizing Content Management Java and WebDAV Juergen Pill Team Leader Software AG Remy Maucherat Software Engineer.
Internet Business Associate v2.0
Open source development model and methodologies.
Architecture Review 10/11/2004
Chapter 7: Using Windows Servers
TOP project – STATUS UPDATE & Workflow demo
Chapter 8 Environments, Alternatives, and Decisions.
Netscape Application Server
Global Grid Forum GridForge
Consulting Services JobScheduler Architecture Decision Template
Joseph JaJa, Mike Smorul, and Sangchul Song
Chapter 2: System Structures
Strategies for improving Web site performance
DISTRIBUTED SYSTEMS Principles and Paradigms Second Edition ANDREW S
LCGAA nightlies infrastructure
Chapter 18 MobileApp Design
Web Caching? Web Caching:.
Processes The most important processes used in Web-based systems and their internal organization.
Configuration Management (managing change)
#01 Client/Server Computing
Advanced Operating Systems
SharePoint Administrative Communications Planning: Dynamic User Notifications for Upgrades, Migrations, Testing, … Presented by Robert Freeman (
Chapter 2: The Linux System Part 1
Managing a Web Server and Files
Collaborative Software Development
Software models - Software Architecture Design Patterns
Architecture Competency Group
EE 122: HyperText Transfer Protocol (HTTP)
CAD DESK PRIMAVERA PRESENTATION.
PyWBEM Python WBEM Client: Overview #2
CSCI-351 Data communication and Networks
#01 Client/Server Computing
Presentation transcript:

The Apache HTTP Server Project 10-Nov-18 The Apache HTTP Server Project Lessons Learned from Collaborative Software Development Roy T. Fielding University of California, Irvine http://www.ics.uci.edu/~fielding/ http://www.ics.uci.edu/~fielding/talks/apache98/

Overview History of the Apache Project Evolution of the development process Global collaboration techniques WWW architectural style Apache architecture Lessons for Software Engineers 10-Nov-18

The Apache Project A common goal Apache Group Current status To provide an open source, secure, efficient and extensible server that provides HTTP services in sync with non-proprietary World Wide Web standards Apache Group Self-selected volunteers that guide the project and perform most of the development work US, UK, Canada, Germany, Italy (EC) Current status #1 server (56% of the public Internet sites) ~20 Apache Group members, including IBM 10-Nov-18

Once upon a time … mid 1994 Rob McCool and the NCSA httpd 1.3 public domain source code beta testers Mosaic (Netscape) Communications grabs RobM NCSA httpd development stagnates Rewrite of HTTP specification begins Patches proliferate webmasters exchange patches via www-talk@info.cern.ch 10-Nov-18

Once upon a time … Feb. 1995 Private e-mail discussion starts, proposing to compile individual patches into a single source base provide feedback to new NCSA team ensure that the results remain open source and HTTP a non-proprietary, implemented standard Brian Behlendorf offers workspace on Hyperreal We decide how to decide (the voting process) Apache is chosen for the group name Discussion moves to new-httpd@apache.org 10-Nov-18

Founders Brian Behlendorf HotWired, California Roy Fielding UC Irvine, California Rob Hartill LANL, New Mexico David Robinson Cambridge, UK Cliff Skolnick Sun Microsystems, California Randy Terbush Zyzzyva, Nebraska Robert Thau MIT, Massachusetts Andrew Wilson Elsevier, Oxford, UK 10-Nov-18

Development Constraints Globally distributed multiple time zones, varying work schedules synchronous communication is expensive, conflicting Voluntary organizational environment no Apache CEO, manager, or even secretary organizational roles are shared, rotated Heterogeneous development platforms any required tools must be ubiquitous Communication is limited to e-mail 10-Nov-18

Development Process Evolution Fostering Contributions developer focus and avoiding starvation code, code review, documentation, support Recognizing Ego trust and good intentions beware of maniacal focus Limits of volunteerism eight knives and an apple (dining developer problem) eight knives and a pumpkin eight pumpkins and no knives 10-Nov-18

Patch - Vote - Build 1995 Initial development issues choosing among features and alternative fixes avoiding server bloat setting project direction Small quorum consensus votes: +1 = yes, 0 = *shrug*, -1 = no/veto three +1 and no veto required for patch approval emphasizes code review One person would collect and build new release from old sources plus approved patches 10-Nov-18

Conflict begets Guidelines Equality versus Meritocracy stepping on toes and starving volunteers equal opinions among unequal developers Voters - Vote Coordinator - Release Builder recognized that roles are separable, allowing rotation Apache Project Guidelines established rights of main contributors provided visible means of attaining membership explained the process to new volunteers revealed more opportunities to contribute 10-Nov-18

Replication 1996 Improving the development experience progress hindered by separate vote and build patch conflicts lead to delay, bickering Concurrent Versioning System (CVS) distributed the build task, avoiding costly merges free-for-all during period between big releases review-and-commit during beta testing Secure Shell (ssh) eases remote actions improves site security (just in time) 10-Nov-18

Dislocation 1996-97 No structure, no focus shifts in primary developers HTTP/1.1 specification “finished” code review weakens, disappears GNATS problem tracking system allow users to help document and track problems STATUS agenda focused development on 1.2 release document votes on current patches, issues highlight showstoppers, problems needing patches 10-Nov-18

Commit-then-Review 1998 Improving the development experience (again) fragmentation of primary developer time disjunct between reviews and working time imbalance of contributions Lazy consensus when consensus is likely commit changes first and review based on logs Automate some administrative actions status in CVS, posted every other day open PR summary posted once a week Jury is still out ... 10-Nov-18

Collaboration Techniques Collaborative development requires at least one common goal but not all goals need to be common a means for communication both public and private a shared information space access to past communication (organizational memory) access to past and current products coordination to make all of the above possible 10-Nov-18

Mailing Lists @apache.org apache-announce used only for important announcements to users new-httpd primary developer discussion area apache-cvs notifications of changes to shared repositories apache-bugdb notifications of problem report creation/update others for related projects http://dev.apache.org/mailing-lists.html 10-Nov-18

Shared Information Space www.apache.org information for users, official public releases dev.apache.org project guidelines and information for developers tips for development and building a release mailing list and tool information bugs.apache.org problem report database modules.apache.org third-party module registry 10-Nov-18

Coordination Tools ssh: Secure Shell remote login facility authentication for remote access http://www.cs.hut.fi/ssh/ CVS: Concurrent Versioning System manages replication, versioning, change notification http://www.cyclic.com/cyclic-pages/CVS-sheet.html GNATS: Problem Reporting and Tracking System entry, search, and notification [heavily modified] http://www.alumni.caltech.edu/~dank/gnats.html Agenda: manually updated STATUS file 10-Nov-18

WWW Architectural Style Representational State Transfer component roles client, server, user agent, origin server, proxy, cache connector semantics resource representation of a resource communication to obtain/modify representations application state and behavior web “page” as an instance of application state engines to move from one state to the next browser, spider, any media type handler 10-Nov-18

Representational State Transfer optimized for transfer of typed data streams caching of representations allows application interaction to proceed without using network all components can be pipe-and-filter 10-Nov-18

HTTP Request/Response GET /Test/hello.html HTTP/1.1 Host: kiwi.ics.uci.edu:8080 User-Agent: GET/7 libwww-perl/5.40 HTTP/1.1 200 OK Date: Fri, 07 Jan 1997 15:40:09 GMT Server: Apache/1.2b6 Content-type: text/html Transfer-Encoding: chunked Etag: “a797cd-465af” Cache-control: max-age=3600 Vary: Accept-Language <HTML><HEAD> … 10-Nov-18

Apache Architecture Central core Modules server initialization and configuration primitives connection setup and listen/accept request protocol parsing and input/output buffers pool-based memory allocation and utilities HTTP phase-oriented module API hooks Modules request rewriting or redirection authentication and content handlers miscellaneous features 10-Nov-18

Apache 2.0 Design Primary goals Waiting on … layered abstractions for multithreading, shared memory, portability, and protocol streams HTTP protocol extensions, WebDAV new configuration language and run-time interface more flexible, detailed module hooks and API front-end caching and proxy/gateway awareness Waiting on … issues with NSPR and Netscape Public License fewer distractions from 1.3.x maintenance 10-Nov-18

Lessons for Software Engineers Disconnected Operation network delays/failures interfere with focused work the best tools for Internet collaboration are those that effectively minimize use of the Internet User-driven Development generic benefits of open source more eyes to find problems and examine security protection against obsolescence and discontinued products emphasizes features known to be useful requires modularity and more extensible designs 10-Nov-18

Questions? Places to see: www.ics.uci.edu/~fielding/talks/apache98/ Front Door www.apache.org Developer Notes dev.apache.org PR Database bugs.apache.org Apache Week www.apacheweek.com ApacheCon’98 www.apachecon.com www.ics.uci.edu/~fielding/talks/apache98/ 10-Nov-18