Understanding the Open Source Development Model. » The Linux Foundation. November 2011

Similar documents
Tool Repositories, ESCHER and continuing the legacy of the CHESS ITR

Procedures for Contributing Code and Performing Code Reviews

Continuous Integration / Continuous Testing

Team Up: Contributing to the Tizen Platform. Narasimha Swamy Sanjay NM

Improved Database Development using SQL Compare

Adopting Agile Practices

ConCert FAQ s Last revised December 2017

OIX DDP. Open-IX Document Development Process draft July 2017

Modern Database Architectures Demand Modern Data Security Measures

Certification Process Overview. Wes Turner, Kitware Inc. Matthew McCall, KRM Associates Inc.

MySQL Development Cycle

OpenChain Specification Version 1.2 pc6 (DRAFT) [With Edit Markups Turned Off]

OpenChain Conformance 2016-H1 Specification

GUIDE TO CERTIFICATION

SEGUE DISCOVERY PARTICIPATION IN DISCOVERY DISCOVERY DELIVERABLES. Discovery

Keeping up with LTS Linux Kernel Functional Testing on Devices

OpenChain Specification Version 1.3 (DRAFT)

Global Trade Professionals Alliance (GTPA) Creating an international standard for trade professionals, businesses & consulting services

Are you Really Helped by Upstream Kernel Code?

SIF Data Model Specification Development, Review, Approval and Versioning Processes

PREPARE FOR TAKE OFF. Accelerate your organisation s journey to the Cloud.

BUILDING CYBERSECURITY CAPABILITY, MATURITY, RESILIENCE

First Session of the Asia Pacific Information Superhighway Steering Committee, 1 2 November 2017, Dhaka, Bangladesh.

Trend Micro Professional Services Partner Program

The main website for Henrico County, henrico.us, received a complete visual and structural

How to choose the right Data Governance resources. by First San Francisco Partners

THE JOURNEY OVERVIEW THREE PHASES TO A SUCCESSFUL MIGRATION ADOPTION ACCENTURE IS 80% IN THE CLOUD

Long Term Support Initiative

The Open Group Certification for People. Training Course Accreditation Requirements

Evolving Compliance Needs in Acquisitions Case Study

Accelerate Your Enterprise Private Cloud Initiative

Kernel maintainership: an oral tradition

Web of Science. Platform Release Nina Chang Product Release Date: December 10, 2017 EXTERNAL RELEASE DOCUMENTATION

Authorized Training Provider Application Process

Equinox Project 3.6 Release Review

Grow Your Services Business

Strategic Plan for years Updated - 8/9/14 Review & re-approved

Academic Editor Tutorial

SOLUTION BRIEF RSA ARCHER IT & SECURITY RISK MANAGEMENT

Run and Reporting Rules for VMware View Planner Updated July 17, 2013

At a high level, the current OPNFV CI pipeline can be summarized as follows:

MNsure Privacy Program Strategic Plan FY

Data Governance Quick Start

FileMaker Business Alliance. Program Guide

Introduction to TIZEN Ecosystem

Git with It and Version Control!

Adopting Modern Practices for Improved Cloud Security. Cox Automotive - Enterprise Risk & Security

Personnel Certification Program

Will your application be secure enough when Robots produce code for you?

How Cisco IT Improved Development Processes with a New Operating Model

Certification Standing Committee (CSC) Charter. Appendix A Certification Standing Committee (CSC) Charter

Compliance Verification Program Governance Guide

Testing in the Agile World

SLAS Special Interest Group Charter Application

HP Application Lifecycle Management. Upgrade Best Practices

User Stories Applied, Mike Cohn

Deploying a Private OpenStack Cloud at Scale. Matt Fischer & Clayton O Neill

Development Methodology TM

BBC Executive response to BBC Trust request for clarification Project Canvas Executive Summary

Chapter 4 EDGE Approval Protocol for Auditors Version 3.0 June 2017

Chapter 11: Editorial Workflow

NOW IS THE TIME. to secure our future

Draft Applicant Guidebook, v3

CLOUD GOVERNANCE SPECIALIST Certification

Assessment of the OpenAccess Standard: Insights on the new EDA Industry Standard from Hewlett-Packard, a Beta Partner and Contributing Developer

Architecture and Standards Development Lifecycle

Industry role moving forward

Strengthening the Cybersecurity of Federal Networks and Critical Infrastructure

Enhancing the Cybersecurity of Federal Information and Assets through CSIP

Usability Evaluation as a Component of the OPEN Development Framework

The Open Group Standards Process Part 1 - Overview. Copyright 2015 The Open Group

Product Development Road

Cisco Digital Media System: Simply Compelling Communications

The Red Hat Way. Lee Miles General Manager, Red Hat Middle East, Turkey & Africa

Verint Knowledge Management Solution Brief Overview of the Unique Capabilities and Benefits of Verint Knowledge Management

SD-WAN. Enabling the Enterprise to Overcome Barriers to Digital Transformation. An IDC InfoBrief Sponsored by Comcast

SAFe AGILE TRAINING COURSES

Better together. KPMG LLP s GRC Advisory Services for IBM OpenPages implementations. kpmg.com

COMMUNITY OR ENTERPRISE? Choosing between JBoss community projects and Red Hat JBoss Middleware

Eclipse on Linux Distributions Project

BOLT eportfolio Student Guide

BPS Suite and the OCEG Capability Model. Mapping the OCEG Capability Model to the BPS Suite s product capability.

Sourcefire Solutions Overview Security for the Real World. SEE everything in your environment. LEARN by applying security intelligence to data

Magento Enterprise Edition Customer Support Guide

RightNow Technologies Best Practices Implementation Guide. RightNow Technologies, Inc.

USE CASE STUDY. Connecting Data Through Mission. Department of Transportation (DOT) A Product of the Federal CIO Council Innovation Committee

IBM Tivoli Directory Server

JBoss Enterprise Middleware

Certified Tester Foundation Level(CTFL)

WHO SHOULD ATTEND? ITIL Foundation is suitable for anyone working in IT services requiring more information about the ITIL best practice framework.

NATIONAL DEFENSE INDUSTRIAL ASSOCIATION Homeland Security Symposium

Visual Design Flows for Faster Debug and Time to Market FlowTracer White Paper

Introduction. Delivering Management as Agile as the Cloud: Enabling New Architectures with CA Technologies Virtual Network Assurance Solution

Table of Contents Extension Risk Management Education 10/4/2017 2

SAFe Atlassian Style (Updated version with SAFe 4.5) Whitepapers & Handouts

TOGAF days. Course description

ORACLE SERVICES FOR APPLICATION MIGRATIONS TO ORACLE HARDWARE INFRASTRUCTURES

Automated Testing of Tableau Dashboards

EXIN BCS SIAM Foundation. Sample Exam. Edition

Certified Commissioning Technician (CxT) Application

Transcription:

» The Linux Foundation Understanding the Open Source Development Model November 2011 By Ibrahim Haddad (PhD) and Brian Warner, The Linux Foundation A White Paper By The Linux Foundation

This paper presents an overview of the open source development model It discusses the typical progression from an idea to an implemented feature, and highlights some of the key characteristics of open source development Introduction The open source software development model is characterized by processes and values that set it apart from the traditional proprietary development model The software development model practiced by many organizations generally consists of discrete periods of development activity that cascade towards a project s release The open source development model takes a different approach, favoring a more fluid development process characterized by increased intra-team collaboration, continuous integration and testing, and greater end-user involvement The open source development model is being increasingly adopted within traditional development organizations as a means of producing higher quality software, even within companies that are not producing an open source product This is generally due to the increased efficiencies the open source development model offers to large, distributed teams working on major software projects This paper examines the open source development model and describes typical processes for managing feature requests, source code submissions, and architectural decisions It will also discuss foundational characteristics of the open source life-cycle such as peer review, the release early and often mentality, and continuous testing and integration Please note that every open source project has its own way of managing their development process The description in this article is not specific to any one project, but rather describes a process and characteristics that would apply to most open source projects The Open Source Development Model The open source development model presumes that development is distributed among multiple teams, working in different locations, in a fluid structure that is resilient to new arrivals or departures Successful open source communities have developed processes where code can be submitted and integrated asynchronously, communication is well documented, and features are integrated in small increments to catch issues early in the development cycle One of the core characteristics of the open source development model is that individuals or small teams of contributors are responsible for development and maintenance of code, illustrated in Figure 1 Contributed features are integrated into a single body of code by one or more maintainers, who ensure newly submitted code meets the overall vision and standards set for the project The feature development life-cycle, illustrated in Figure 2, begins with an idea for a new project, feature or enhancement, which is proposed to other project developers Following further discussion about the need for the feature, the next step is to design and implement it 1

Figure 1: Flow of source code from contributors to the mainline version to the marketplace When the new feature compiles and runs, it is typically distributed within the development community as an alpha release, even though it may contain known and unknown bugs The purpose of early distribution is to collect feedback and allow users to test and provide input This is commonly called release early and often Users may provide feedback, bug reports, and fixes, which are integrated into the next development release This cycle repeats, until the developers feel that the implementation is stable enough to submit for inclusion into the main project The author of the code then submits the code to a project maintainer over the project mailing list The maintainer determines whether the code should be accepted into the development tree, or returned for revision Some projects may have multiple layers of maintainers, depending on the complexity of the code and the size of the project When the code has been signed off by all relevant maintainers, it is then included into the project s main source tree for publishing in the next release The Open Source Feature Life-Cycle Feature Request Process Feature requests are generally tracked and prioritized using processes that are visible to the rest of the development community This ensures a common understanding of which features have been requested, their relative priority, their development status, associated bugs and blockers, and when they are planned for release Figure 3 shows the typical process used to ensure that feature requests are accurately tracked, prioritized, developed, and released 2

Feature Requests (submitted by developers and users) User Community Architecture and Design Discussion Patches (submitted by developers and users) Implementation (coding) Continuous Testing and Integration Deployment (release) Developer Community Test Projects to Automate Testing and Validation Maintenance Figure 2: Feature life-cycle in the open source development model Feature request sent to mailing list Discussion on mailing list and IRC Feature request is accepted Feature is tracked Feature is prioritized Feature aligned with future release Development / QA Figure 3: Flow of source code from contributors to the mainline version to the marketplace 3

Feature requests may begin with a proposal to a mailing list, a discussion on IRC, or as a feature request in a project s bugzilla The request is typically made by whoever is likely to lead the implementation work The purpose of the request is to notify others of the need, solicit feedback, gain acceptance for the idea, and come to a consensus on next steps Project contributors and maintainers then evaluate the request, and determine whether it should be a candidate for a future release There will often be discussions between the requester and the development community to clarify needs and requirements If the request is approved, a target release will be set, and development begins Architecture and Design Discussion One of the major contributing factors to the success of the open source development model is its transparency, and ability to accommodate distributed collaboration among project teams This is accomplished using communication methods that are accessible to all within the project community for strategic decision making, architecture discussions, and code reviews Mailing lists are one of the most commonly used communication channels because they are self-documenting, transparent, and typically anyone involved in the project can participate This includes end users, who may be monitoring the lists to understand future features as they evolve or to provide practical feedback In addition to project mailing lists, many distributed teams use IRC for live discussion and meetings Because of its text-only nature, IRC is useful for design meetings and user support, especially when English is not the primary spoken language of all participants Collaboration on Implementation The open source development model places strong emphasis upon collaborative development and peer review, from first idea to final acceptance Because it evolved to support highly decentralized teams where submitters were not all personally known to the maintainers, the model favors those who work with others on design and implementation while clearly communicating their plans In addition, most open source projects use tools that have evolved to support code contribution from many simultaneous and distributed collaborators For example, the open source git repository system was created specifically to support Linux development, where thousands of contributors are submitting code for any given release Each developer works to develop, debug, build, and validate their own code against the current code-base, so that when the time comes to integrate into the mainline project, their changes apply cleanly and with a minimum amount of merging effort If there is an unforeseen problem with the code, any individual submission can be easily reverted Source Code Submission The life-cycle of a new code submission, illustrated in Figure 4, is often quite iterative The process begins with collaborative development among a subset of developers who have taken ownership for delivering the feature When the code is functional and applies cleanly against the mainline project, the project team submits the code to a project maintainer over the project mailing list The maintainer and other project participants may provide feedback on the submission and decline to accept it, in which case the implementation team would revise and resubmit the code Because smaller patches are easier to understand and test, submitters are generally encouraged 4

to submit changes in the smallest increments possible Smaller patches are less likely to have unintended consequences, and if they do, getting to root cause of an issue is much easier Establishing Ownership Because code submissions can come from anyone, most projects have formal procedures in place to track ownership of code when a patch is submitted The Signed-off-by line provides the real name and email of the person who is responsible for the code It is also an agreement to the Developer s Certificate of Origin, which requires that the submitter have the rights to contribute the code At least one signed-off-by line is typically required, as it enables others to quickly determine who submitted code if there is ever a question over origin, license, or maintenance In a similar manner, some projects also track reviewers The Acked-by line indicates when someone other than the author or the maintainer has provided a thorough review and believes it is ready for integration Validate Build Build Generate patch Integrate with -dev QA validation Debug Write code Submit Feedback Loop Validate Publish as -stable Release validation Check out code Setup machine Figure 4: Typical flow of code from individual contributor to mainline version When the maintainer accepts submitted code, it will then be integrated into his or her development tree In a large, multi-layer project, the maintainer may then be responsible for submitting it to additional maintainers further up the tree When the code has been approved by the top-most maintainer, it is integrated for distribution in the mainline release Continuous Testing and Integration Because work may be highly distributed, the open source development model places emphasis upon detecting issues early and fixing them quickly Many larger projects create nightly and 5

weekly builds using an automated build suite, evaluating new code as soon as possible after integration In addition to automated build suites, some projects also create custom test suites to detect functional issues as they occur during active development These test suites are typically open source as well The open source development model favors small, incremental changes, which can make diagnosing build issues, bugs, security holes, and regressions much easier This ensures that new code does not impact the project s overall focus upon high quality and secure code Source Code Release With few exceptions, projects that use the open source model make both a stable snapshot of the last release and the current development tree available This helps ensure that users can retrieve the most recent stable release, while developers can work from the most current code Release management practices vary from project to project, but most nominate an individual or team to evaluate the maturity of features in the development tree, and monitor QA metrics When the release criteria are met, this team declares the release to be complete and branches the development tree Characteristics of the Development Model An interwoven development cycle The open source development model is characterized by a series of interwoven processes that continually improve code quality, instead of a strictly linear progression to a release Unlike the big reveal that typically accompanies the traditional software development model, the open source model encourages continuous and independent feature development This enables new features to be integrated as they are ready, which in turn allows other developers to build upon them more quickly and produce a more competitive product Release Early and Often Release early and often refers to the development practice of publishing alpha code to the development community for review well in advance of the final release This results in highly iterative development, and minimizes the amount of change between development releases, making regressions and breakages easier to diagnose This release philosophy allows for continuous peer review, where all members of the community have the opportunity to comment and offer suggestions and bug fixes It also encourages small, incremental changes that are easier to understand and test while developers are actively engaged, rather than being discovered during a separate final test cycle A side benefit is that the code is frequently reviewed for adherence to coding style, and fragile or inflexible code can be found and improved early in the development cycle Peer Review The open source development process emphasizes peer review throughout the entire development life-cycle Developers are expected to submit their code to project mailing lists for periodic public peer review, particularly when a feature achieves a development milestone This helps to ensure that others outside of the development team are aware of the changes, and can 6

provide feedback before the design is final and implementation complete Other members of the open source project review the code, provide comments and feedback to improve the quality and functionality, and test to catch bugs and provide enhancements as early as possible in the development cycle When a feature is complete and ready to be considered for integration, the project maintainer also provides a level of review prior to accepting the code By the time code is integrated into the main product, it has undergone a number of detailed inspections by others outside of the development team The result is improved, higher quality code Conclusion This paper discussed major elements of the open source development life-cycle, and described typical characteristics of open source development The open source development model has proved to be very successful, with hundreds of success stories This development model has special characteristics that allow faster development by broadly distributed teams, continual and thorough testing, faster innovation, multiple layers of peer review, and total openness and transparency throughout the project For more information on getting started, please see the resources below, and learn more on Linux Foundation Resources Linux Training The Linux Foundation offers two training courses to enable organizations effectively work with open source developers: LF 205: How to Participate in the Linux Community: Working with the kernel development community is not particularly hard, but it does require an understanding of how that community works This course is intended to bring attendees up to speed quickly on how kernel development is done and how to be a part of the process with a minimum of pain and frustration LF 271: Practical Guide to Open Source Development: This course prepares organizations to maximize their effectiveness and shorten the time to value when participating in open source development projects This course builds upon years of best practices and extensive experience in commercial participation in open source projects to help organizations approach the open development model in a structured and methodical manner, maximizing the likelihood of success The course provides extensive examples from the Linux kernel community, and includes specific best practices for working with upstream Linux Foundation Labs If you have a collaborative software project you need hosted at a neutral party, the Linux Foundation may be able to help The Linux Foundation assists companies and communities by hosting collaborative software projects The Linux Foundation provides three main services to Lab projects: The technical, operational and legal infrastructure so that project leaders can focus on technological innovation 7

Guidance and consulting on open source best practices gleaned from the two decades of experience of Linux and the ability to collaborate and network with the large and growing Linux Foundation community By providing these services to companies and developers, the Linux Foundation provides a much needed framework for advancing and accelerating technology that allows project hosts to focus on innovation There are two main criteria that must be met in order for the Linux Foundation to host a lab project: Use of open source governance best practices including license and contribution agreement choices in keeping with the ideals of Linux Project must either use Linux or have the potential to enhance the Linux ecosystem If you have a project that may fit this criteria, please contact us: /labs Open Compliance Program The Linux Foundation s Open Compliance Program was established to boost adoption of Linux and other open source by making license compliance ever-easier to achieve, to increase awareness and understanding of open source compliance responsibilities, and to make available free resources that can help companies establish their compliance programs The program offers comprehensive training, compliance educational materials (white papers, compliance blog, webinars), compliance tools, an online compliance community (FOSSBazaar), a best practices checklist, a rapid alert directory of company compliance officers, and SPDXTM, a standard to help companies uniformly tag and report software used in their products Events The Linux Foundation produces a number of technical events around the world that provide a venue to bring together developers to solve problems in a real-time environment Publications The Linux Foundation produces a wide range of publications that are available for free download These publications are divided into three categories: Open Source Compliance, Workgroups (such as Tizen, OpenMAMA, LSB, SPDX, FOSSology, etc) and Community The Linux Foundation publications are available from /publications About the Authors Ibrahim Haddad, PhD, is the Director of Technology and Alliances at The Linux Foundation and Contributing Editor for the Linux Journal Brian Warner is Operations Manager at the Linux Foundation 8

The Linux Foundation promotes, protects, and advances Linux by providing unified resources and services needed for open source to successfully compete with closed platforms To learn more about The Linux Foundation, or any of our other initiatives please visit us at /