Producing Open Source Software How to Run a Successful Free Software Project

Total Page:16

File Type:pdf, Size:1020Kb

Producing Open Source Software How to Run a Successful Free Software Project Producing Open Source Software How to Run a Successful Free Software Project Karl Fogel Producing Open Source Software: How to Run a Successful Free Software Project by Karl Fogel Copyright © 2005 Karl Fogel, under a CreativeCommons Attribution-ShareAlike license Dedication This book is dedicated to two dear friends without whom it would not have been possible: Karen Under- hill and Jim Blandy. i Table of Contents Preface ......................................................................................................................v Why Write This Book? ........................................................................................ v Who Should Read This Book? ............................................................................... v Sources ............................................................................................................vi Acknowledgments .............................................................................................. vi Disclaimer ...................................................................................................... viii 1. Introduction ............................................................................................................ 9 History ............................................................................................................ 11 The Rise of Proprietary Software and Free Software ........................................ 11 "Free" Versus "Open Source" ...................................................................... 14 The Situation Today .......................................................................................... 16 2. Getting Started ...................................................................................................... 18 Starting From What You Have ............................................................................. 19 Choose a Good Name ................................................................................ 20 Have a Clear Mission Statement ................................................................... 21 State That the Project is Free ....................................................................... 21 Features and Requirements List ................................................................... 22 Development Status ................................................................................... 22 Downloads .............................................................................................. 23 Version Control and Bug Tracker Access ....................................................... 23 Communications Channels .......................................................................... 24 Developer Guidelines ................................................................................. 25 Documentation ......................................................................................... 25 Example Output and Screenshots ................................................................. 27 Canned Hosting ........................................................................................ 28 Choosing a License and Applying It ..................................................................... 28 The "Do Anything" Licenses ....................................................................... 28 The GPL ................................................................................................. 28 How to Apply a License to Your Software ..................................................... 28 Setting the Tone ................................................................................................ 29 Avoid Private Discussions .......................................................................... 30 Nip Rudeness in the Bud ............................................................................ 31 Practice Conspicuous Code Review .............................................................. 32 When Opening a Formerly Closed Project, be Sensitive to the Magnitude of the Change ................................................................................................... 33 Announcing ..................................................................................................... 34 3. Technical Infrastructure .......................................................................................... 36 What a Project Needs ......................................................................................... 37 Mailing Lists .................................................................................................... 37 Spam Prevention ....................................................................................... 39 Identification and Header Management ......................................................... 41 The Great Reply-to Debate ......................................................................... 42 Archiving ................................................................................................ 44 Software .................................................................................................. 45 Version Control ................................................................................................ 46 Version Control Vocabulary ........................................................................ 46 Choosing a Version Control System .............................................................. 49 Using the Version Control System ................................................................ 49 Bug Tracker ..................................................................................................... 54 Interaction with Mailing Lists ...................................................................... 56 Pre-Filtering the Bug Tracker ...................................................................... 56 IRC / Real-Time Chat Systems ............................................................................ 58 Bots ........................................................................................................ 59 ii Producing Open Source Software Archiving IRC .......................................................................................... 59 Wikis .............................................................................................................. 60 Web Site ......................................................................................................... 61 Canned Hosting ........................................................................................ 61 4. Social and Political Infrastructure ............................................................................. 63 Benevolent Dictators ......................................................................................... 64 Who Can Be a Good Benevolent Dictator? ..................................................... 64 Consensus-based Democracy ............................................................................... 65 Version Control Means You Can Relax ......................................................... 65 When Consensus Cannot Be Reached, Vote ................................................... 66 When To Vote .......................................................................................... 67 Who Votes? ............................................................................................. 67 Polls Versus Votes .................................................................................... 68 Vetoes .................................................................................................... 68 Writing It All Down .......................................................................................... 69 5. Money ................................................................................................................. 71 Types of Involvement ........................................................................................ 72 Hire for the Long Term ...................................................................................... 73 Appear as Many, Not as One ............................................................................... 74 Be Open About Your Motivations ........................................................................ 74 Money Can't Buy You Love ................................................................................ 76 Contracting ...................................................................................................... 77 Review and Acceptance of Changes .............................................................. 78 Funding Non-Programming Activities ................................................................... 79 Quality Assurance (i.e., Professional Testing) ................................................. 79 Legal Advice and Protection ....................................................................... 80 Documentation and Usability ...................................................................... 81 Providing Hosting/Bandwidth ...................................................................... 81 Marketing ........................................................................................................ 81 Remember That You Are Being Watched ...................................................... 82 Don't Bash Competing Open Source Products ................................................. 83 6. Communications ...................................................................................................
Recommended publications
  • Debian Developer's Reference Version 12.0, Released on 2021-09-01
    Debian Developer’s Reference Release 12.0 Developer’s Reference Team 2021-09-01 CONTENTS 1 Scope of This Document 3 2 Applying to Become a Member5 2.1 Getting started..............................................5 2.2 Debian mentors and sponsors......................................6 2.3 Registering as a Debian member.....................................6 3 Debian Developer's Duties 9 3.1 Package Maintainer's Duties.......................................9 3.1.1 Work towards the next stable release............................9 3.1.2 Maintain packages in stable .................................9 3.1.3 Manage release-critical bugs.................................. 10 3.1.4 Coordination with upstream developers............................ 10 3.2 Administrative Duties.......................................... 10 3.2.1 Maintaining your Debian information............................. 11 3.2.2 Maintaining your public key.................................. 11 3.2.3 Voting.............................................. 11 3.2.4 Going on vacation gracefully.................................. 12 3.2.5 Retiring............................................. 12 3.2.6 Returning after retirement................................... 13 4 Resources for Debian Members 15 4.1 Mailing lists............................................... 15 4.1.1 Basic rules for use....................................... 15 4.1.2 Core development mailing lists................................. 15 4.1.3 Special lists........................................... 16 4.1.4 Requesting new
    [Show full text]
  • APPLICATION of the DELTA DEBUGGING ALGORITHM to FINE-GRAINED AUTOMATED LOCALIZATION of REGRESSION FAULTS in JAVA PROGRAMS Master’S Thesis
    TALLINN UNIVERSITY OF TECHNOLOGY Faculty of Information Technology Marina Nekrassova 153070IAPM APPLICATION OF THE DELTA DEBUGGING ALGORITHM TO FINE-GRAINED AUTOMATED LOCALIZATION OF REGRESSION FAULTS IN JAVA PROGRAMS Master’s thesis Supervisor: Juhan Ernits PhD Tallinn 2018 TALLINNA TEHNIKAÜLIKOOL Infotehnoloogia teaduskond Marina Nekrassova 153070IAPM AUTOMATISEETITUD SILUMISE RAKENDAMINE VIGADE LOKALISEERIMISEKS JAVA RAKENDUSTES Magistritöö Juhendaja: Juhan Ernits PhD Tallinn 2018 Author’s declaration of originality I hereby certify that I am the sole author of this thesis. All the used materials, references to the literature and the work of others have been referred to. This thesis has not been presented for examination anywhere else. Author: Marina Nekrassova 08.01.2018 3 Abstract In software development, occasionally, in the course of software evolution, the functionality that previously worked as expected stops working. Such situation is typically denoted by the term regression. To detect regression faults as promptly as possible, many agile development teams rely nowadays on automated test suites and the practice of continuous integration (CI). Shortly after the faulty change is committed to the shared mainline, the CI build fails indicating the fact of code degradation. Once the regression fault is discovered, it needs to be localized and fixed in a timely manner. Fault localization remains mostly a manual process, but there have been attempts to automate it. One well-known technique for this purpose is delta debugging algorithm. It accepts as input a set of all changes between two program versions and a regression test that captures the fault, and outputs a minimized set containing only those changes that directly contribute to the fault (in other words, are failure-inducing).
    [Show full text]
  • Generating Commit Messages from Git Diffs
    Generating Commit Messages from Git Diffs Sven van Hal Mathieu Post Kasper Wendel Delft University of Technology Delft University of Technology Delft University of Technology [email protected] [email protected] [email protected] ABSTRACT be exploited by machine learning. The hypothesis is that methods Commit messages aid developers in their understanding of a con- based on machine learning, given enough training data, are able tinuously evolving codebase. However, developers not always doc- to extract more contextual information and latent factors about ument code changes properly. Automatically generating commit the why of a change. Furthermore, Allamanis et al. [1] state that messages would relieve this burden on developers. source code is “a form of human communication [and] has similar Recently, a number of different works have demonstrated the statistical properties to natural language corpora”. Following the feasibility of using methods from neural machine translation to success of (deep) machine learning in the field of natural language generate commit messages. This work aims to reproduce a promi- processing, neural networks seem promising for automated commit nent research paper in this field, as well as attempt to improve upon message generation as well. their results by proposing a novel preprocessing technique. Jiang et al. [12] have demonstrated that generating commit mes- A reproduction of the reference neural machine translation sages with neural networks is feasible. This work aims to reproduce model was able to achieve slightly better results on the same dataset. the results from [12] on the same and a different dataset. Addition- When applying more rigorous preprocessing, however, the per- ally, efforts are made to improve upon these results by applying a formance dropped significantly.
    [Show full text]
  • Chapter 4: Forges
    Chapter 4: Forges Josep M. Rib´o October 15, 2010 INDEX Chapter 4: Forges 4.1 Introduction • Repositories (forges) • Repositories of repositories 4.2 Sourceforge.net 4.3 Google code 4.4 Trac 1 4.1 Introduction INDEX 4.1 Introduction A project repository (aka a forge) is a web platform that offers project hosting and infrastructure to develop an open source project following the bazaar-model This infrastructure includes: • Version control system • Bug/issue tracker • Mail lists • Monitoring tools • Software downloading tools.... A repository of repositories (aka RoRs) is a repository that aggregates projects from other repositories or private websites extracting data and collecting various measures Usually, they are not repositories that provide infrastructure to manage the project (version control system, bug tracker...) but they provide a project index meant to search for projects that satisfy specific features 2 4.1 Introduction INDEX Repositories [BLM2008] provides a list of repositories and repositories of repositories (Table from [BLM2008]) A summary of these repositories and their features is presented in the next few slides 3 4.1 Introduction INDEX • Apache (http://www.apache.org) It stores projects developed by the Apache foundation These projects have some common features: { Collaborative, community-based development process { Open software license { Managed by a self-selected team of software experts who are the project core developers { Membership to the foundation (and the right to change the repository content) is granted only to volunteers that have contributed to the project (meritocracy) The repository offers a software catalogue with a short description of each project: { Programming languages, { Categories, { Lists, { Issue tracker { License { Proejct website { ..
    [Show full text]
  • Efficient Algorithms for Comparing, Storing, and Sharing
    EFFICIENT ALGORITHMS FOR COMPARING, STORING, AND SHARING LARGE COLLECTIONS OF EVOLUTIONARY TREES A Dissertation by SUZANNE JUDE MATTHEWS Submitted to the Office of Graduate Studies of Texas A&M University in partial fulfillment of the requirements for the degree of DOCTOR OF PHILOSOPHY May 2012 Major Subject: Computer Science EFFICIENT ALGORITHMS FOR COMPARING, STORING, AND SHARING LARGE COLLECTIONS OF EVOLUTIONARY TREES A Dissertation by SUZANNE JUDE MATTHEWS Submitted to the Office of Graduate Studies of Texas A&M University in partial fulfillment of the requirements for the degree of DOCTOR OF PHILOSOPHY Approved by: Chair of Committee, Tiffani L. Williams Committee Members, Nancy M. Amato Jennifer L. Welch James B. Woolley Head of Department, Hank W. Walker May 2012 Major Subject: Computer Science iii ABSTRACT Efficient Algorithms for Comparing, Storing, and Sharing Large Collections of Evolutionary Trees. (May 2012) Suzanne Jude Matthews, B.S.; M.S., Rensselaer Polytechnic Institute Chair of Advisory Committee: Dr. Tiffani L. Williams Evolutionary relationships between a group of organisms are commonly summarized in a phylogenetic (or evolutionary) tree. The goal of phylogenetic inference is to infer the best tree structure that represents the relationships between a group of organisms, given a set of observations (e.g. molecular sequences). However, popular heuristics for inferring phylogenies output tens to hundreds of thousands of equally weighted candidate trees. Biologists summarize these trees into a single structure called the consensus tree. The central assumption is that the information discarded has less value than the information retained. But, what if this assumption is not true? In this dissertation, we demonstrate the value of retaining and studying tree collections.
    [Show full text]
  • Sistemas De Control De Versiones De Última Generación (DCA)
    Tema 10 - Sistemas de Control de Versiones de última generación (DCA) Antonio-M. Corbí Bellot Tema 10 - Sistemas de Control de Versiones de última generación (DCA) II HISTORIAL DE REVISIONES NÚMERO FECHA MODIFICACIONES NOMBRE Tema 10 - Sistemas de Control de Versiones de última generación (DCA) III Índice 1. ¿Qué es un Sistema de Control de Versiones (SCV)?1 2. ¿En qué consiste el control de versiones?1 3. Conceptos generales de los SCV (I) 1 4. Conceptos generales de los SCV (II) 2 5. Tipos de SCV. 2 6. Centralizados vs. Distribuidos en 90sg 2 7. ¿Qué opciones tenemos disponibles? 2 8. ¿Qué podemos hacer con un SCV? 3 9. Tipos de ramas 3 10. Formas de integrar una rama en otra (I)3 11. Formas de integrar una rama en otra (II)4 12. SCV’s con los que trabajaremos 4 13. Git (I) 5 14. Git (II) 5 15. Git (III) 5 16. Git (IV) 6 17. Git (V) 6 18. Git (VI) 7 19. Git (VII) 7 20. Git (VIII) 7 21. Git (IX) 8 22. Git (X) 8 23. Git (XI) 9 Tema 10 - Sistemas de Control de Versiones de última generación (DCA) IV 24. Git (XII) 9 25. Git (XIII) 9 26. Git (XIV) 10 27. Git (XV) 10 28. Git (XVI) 11 29. Git (XVII) 11 30. Git (XVIII) 12 31. Git (XIX) 12 32. Git. Vídeos relacionados 12 33. Mercurial (I) 12 34. Mercurial (II) 12 35. Mercurial (III) 13 36. Mercurial (IV) 13 37. Mercurial (V) 13 38. Mercurial (VI) 14 39.
    [Show full text]
  • Code Distribution Process - Definition of Evaluation Metrics
    Code Distribution Process - Definition of Evaluation Metrics Project Acronym Edos Project Full Title Environment for the Development and Distribution of Open Source Software Project # FP6-IST-004312 Contact Author Radu POP, [email protected] Authors List Ciaran Bryce, Michel Pawlak, Michel Deriaz - Universite de Geneve Serge Abiteboul, Boris Vrdoljak - INRIA Gemo Project Tova Milo, Assaf Sagi - Tel-Aviv University Stephane Lauriere, Florent Villard, Radu POP - MandrakeSoft Workpackage # WP 4 Deliverable # 1 Document Type Report Version 1.0 Date March 22, 2005 Distribution Consortium, Commission and Reviewers. Chapter 1 Introduction This document proposes a measurement and evaluation methodology and defines the metrics that we consider as important in EDOS for the code distribution process for Free and Open Source Software (F/OSS). Our aim in attempting to define the metrics is the following: Clarify our understanding of the F/OSS code distribution process, and • subsequently to help identify areas for improvement. Enumerate what needs to be measured in the F/OSS code distribution • process. The purpose of measurement and evaluation is to compare different architectures for code distribution the existing one and those that will be proposed in the EDOS project. Measurement and evaluation have been facets of software engineering for some time. ISO (the International Organisation for Standardisation) and IEC (the International Electrotechnical Commision) have established a joint technical committee for worldwide standardization in the field of information technology. They have developed a set of standards for software product quality relating to the definition of quality models (the 9126 series) and to the evaluation process (the 14598 series). A quality model defines the characteristics of a system to be measured and the metrics that evaluate how the system to be measured performs with respect to these characteristics.
    [Show full text]
  • A Case Study on Software Vulnerability Coordination
    A Case Study on Software Vulnerability Coordination Jukka Ruohonena,∗, Sampsa Rautia, Sami Hyrynsalmia,b, Ville Lepp¨anena aDepartment of Future Technologies, University of Turku, FI-20014 Turun yliopisto, Finland bPori Department, Tampere University of Technology, P.O. Box 300, FI-28101 Pori, Finland Abstract Context: Coordination is a fundamental tenet of software engineering. Coordination is required also for identifying discovered and disclosed software vulnerabilities with Common Vulnerabilities and Exposures (CVEs). Motivated by recent practical challenges, this paper examines the coordination of CVEs for open source projects through a public mailing list. Objective:The paper observes the historical time delays between the assignment of CVEs on a mailing list and the later appearance of these in the National Vulnerability Database (NVD). Drawing from research on software engineering coordination, software vulnerabilities, and bug tracking, the delays are modeled through three dimensions: social networks and communication practices, tracking infrastructures, and the technical characteristics of the CVEs coordinated. Method: Given a period between 2008 and 2016, a sample of over five thousand CVEs is used to model the delays with nearly fifty explanatory metrics. Regression analysis is used for the modeling. Results: The results show that the CVE coordination delays are affected by different abstractions for noise and prerequisite constraints. These abstractions convey effects from the social network and infrastructure dimensions. Particularly strong effect sizes are observed for annual and monthly control metrics, a control metric for weekends, the degrees of the nodes in the CVE coordination networks, and the number of references given in NVD for the CVEs archived. Smaller but visible effects are present for metrics measuring the entropy of the emails exchanged, traces to bug tracking systems, and other related aspects.
    [Show full text]
  • Higher Inductive Types (Hits) Are a New Type Former!
    Git as a HIT Dan Licata Wesleyan University 1 1 Darcs Git as a HIT Dan Licata Wesleyan University 1 1 HITs 2 Generator for 2 equality of equality HITs Homotopy Type Theory is an extension of Agda/Coq based on connections with homotopy theory [Hofmann&Streicher,Awodey&Warren,Voevodsky,Lumsdaine,Garner&van den Berg] 2 Generator for 2 equality of equality HITs Homotopy Type Theory is an extension of Agda/Coq based on connections with homotopy theory [Hofmann&Streicher,Awodey&Warren,Voevodsky,Lumsdaine,Garner&van den Berg] Higher inductive types (HITs) are a new type former! 2 Generator for 2 equality of equality HITs Homotopy Type Theory is an extension of Agda/Coq based on connections with homotopy theory [Hofmann&Streicher,Awodey&Warren,Voevodsky,Lumsdaine,Garner&van den Berg] Higher inductive types (HITs) are a new type former! They were originally invented[Lumsdaine,Shulman,…] to model basic spaces (circle, spheres, the torus, …) and constructions in homotopy theory 2 Generator for 2 equality of equality HITs Homotopy Type Theory is an extension of Agda/Coq based on connections with homotopy theory [Hofmann&Streicher,Awodey&Warren,Voevodsky,Lumsdaine,Garner&van den Berg] Higher inductive types (HITs) are a new type former! They were originally invented[Lumsdaine,Shulman,…] to model basic spaces (circle, spheres, the torus, …) and constructions in homotopy theory But they have many other applications, including some programming ones! 2 Generator for 2 equality of equality Patches Patch a a 2c2 diff b d = < b c c --- > d 3 3 id a a b b
    [Show full text]
  • L'exemple De Wikipédia Laure Endrizzi Chargée D'études Et De Recherche, Cellule Veille Scientifique Et Technologique, INRP, Lyon
    La communauté comme auteur et éditeur : l’exemple de Wikipédia Laure Endrizzi To cite this version: Laure Endrizzi. La communauté comme auteur et éditeur : l’exemple de Wikipédia. Journée nationale du réseau des URFIST : Evaluation et validation de l’information sur internet, Jan 2007, Paris, France. edutice-00184888 HAL Id: edutice-00184888 https://edutice.archives-ouvertes.fr/edutice-00184888 Submitted on 2 Nov 2007 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Journée d'études des URFIST 31 janvier 2007, Paris « Evaluation et validation de l'information sur internet » La communauté comme auteur et éditeur : l'exemple de Wikipédia Laure Endrizzi chargée d'études et de recherche, cellule Veille scientifique et technologique, INRP, Lyon Résumé L’ensemble des technologies dites 2.0 place l’usager au cœur de la création des contenus numériques tout en l’inscrivant dans une dynamique collective. Ces transformations remettent en cause le modèle éditorial traditionnel, sans offrir de représentations claires et stabilisées des modes de production et de validation qui sont à l’œuvre. Avec l’exemple de Wikipédia, nous tenterons de comprendre les mécanismes de la régulation éditoriale, pour ensuite nous interroger sur les formes d’expertise sollicitées et les figures de l’auteur.
    [Show full text]
  • Bluej Teamwork Repository Configuration
    BlueJ Teamwork Repository Configuration Version 2.0 for BlueJ Version 2.5.0 (and 2.2.x) Davin McCall School of Engineering & IT, Deakin University 1 Introduction This document gives a brief description of how you might set up a version control repository for use with BlueJ’s teamwork features. It is intended mainly as a “quick start” guide and not as a complete reference – for that you should refer to the version control software documentation (i.e. the CVS manual or the Subversion manual) – but it does explain some BlueJ-specific concepts (such as how BlueJ supports the notion of student groups or teams). Setting up a repository usually requires a server to which you have “root” or administrator access. This may mean that you need to ask a Systems Administrator to set up the repository for you. Since BlueJ version 2.5.0, both Subversion and CVS are supported version control systems. BlueJ version 2.2.x supports only CVS. BlueJ versions prior to 2.2.0 did not support teamwork features. Chapters 2 and 3 explain how to set up and test a repository using CVS. Chapter 4 then covers the equivalent steps for using Subversion. 2 Setting up a simple single user CVS repository for testing the BlueJ teamwork features 2.1 Setting up the repository server On Unix / Linux / MacOS X: You must have the CVS software installed on the machine you intend to use as a server. There is a good chance that it is already installed, but if not, your vendor or distribution provider will almost certainly provide packages that can be installed.
    [Show full text]
  • Are Encyclopedias Dead? Evaluating the Usefulness of a Traditional Reference Resource Rachel S
    St. Cloud State University theRepository at St. Cloud State Library Faculty Publications Library Services 2012 Are Encyclopedias Dead? Evaluating the Usefulness of a Traditional Reference Resource Rachel S. Wexelbaum St. Cloud State University, [email protected] Follow this and additional works at: https://repository.stcloudstate.edu/lrs_facpubs Part of the Library and Information Science Commons Recommended Citation Wexelbaum, Rachel S., "Are Encyclopedias Dead? Evaluating the Usefulness of a Traditional Reference Resource" (2012). Library Faculty Publications. 26. https://repository.stcloudstate.edu/lrs_facpubs/26 This Article is brought to you for free and open access by the Library Services at theRepository at St. Cloud State. It has been accepted for inclusion in Library Faculty Publications by an authorized administrator of theRepository at St. Cloud State. For more information, please contact [email protected]. Are Encyclopedias Dead? Evaluating the Usefulness of a Traditional Reference Resource Author Rachel Wexelbaum is Collection Management Librarian and Assistant Professor at Saint Cloud State University, Saint Cloud, Minnesota. Contact Details Rachel Wexelbaum Collection Management Librarian MC135D Collections Saint Cloud State University 720 4 th Avenue South Saint Cloud, MN 56301 Email: [email protected] Abstract Purpose – To examine past, current, and future usage of encyclopedias. Design/methodology/approach – Review the history of encyclopedias, their composition, and usage by focusing on select publications covering different subject areas. Findings – Due to their static nature, traditionally published encyclopedias are not always accurate, objective information resources. Intentions of editors and authors also come into question. A researcher may find more value in using encyclopedias as historical documents rather than resources for quick facts.
    [Show full text]