Produire un Logiciel Libre

Comment Diriger avec Succès un Projet de Logiciel Libre

Karl Fogel

(Auteur) 

Étienne Savard

(Traducteur) 

Bertrand Florat

(Traducteur) 

Note: la traduction française est réalisée sous la forme d'un wiki à http://www.framalang.org/wiki/Producing_Open_Source_Software. Une fois terminée, la traduction sera déplacée ici. Pour le moment, veuillez consulter le wiki pour la version à jour.


Dédicace

Ce livre est dédié à deux amis chers sans qui il n'aurait pu être possible: Karen Underhill et Jim Blandy.

Table des matières

Préface
Pourquoi écrire ce livre?
À qui s'adresse ce livre ?
Sources
Remerciements
Note
1. Introduction
Historique
L'avènement des logiciels propriétaires et des logiciels libres
Résistance consciente
Résistance accidentelle
« Libre » contre « Open Source »
La situation actuelle
2. Genèse d'un projet
Revue de paquetage
Choisir un nom adéquat
Fixer des finalités claires
Préciser que le projet est libre
Lister les fonctionnalités et pré-requis
Informer sur le statut de développement
Téléchargements
La gestion de configuration logicielle et les systèmes de gestion de tickets
Les canaux de communication
Le guide du développeur
La documentation
Mise à disposition de la documentation
La documentation développeurs
Échantillons et captures d'écrans
Hébergement sur une forge
Choisir une licence et la mettre en oeuvre
Les licences "Faites ce que vous voulez"
La GPL
Comment mettre en oeuvre cette licence au projet
Donner le ton
Évitez les discussions privées
Tuez l'agressivité dans l'oeuf
Pratiquez la revue par pairs
Lorsque vous ouvrez un projet propriétaire, soyez attentif à la gestion du changement
Annoncer le projet
3. L'infrastructure technique
Les besoins d'un projet
Les listes de diffusion
Se prémunir du spam
Filtrer les messages
Masquer les adresses dans les archives
Identification et gestion des en-têtes
Le grand débat du « Répondre à »
Deux rêves
L’archivage
Les logiciels
Les logiciels de gestion de versions
Vocabulaire de la gestion de versions
Choisir un logiciel de gestion de versions
Using the Version Control System
Version everything
Browsability
Commit emails
Use branches to avoid bottlenecks
Singularity of information
Authorization
Bug Tracker
Interaction with Mailing Lists
Pre-Filtering the Bug Tracker
IRC / Real-Time Chat Systems
Bots
Archiving IRC
Wikis
Web Site
Canned Hosting
Choosing a canned hosting site
Anonymity and involvement
4. Social and Political Infrastructure
Benevolent Dictators
Who Can Be a Good Benevolent Dictator?
Consensus-based Democracy
Version Control Means You Can Relax
When Consensus Cannot Be Reached, Vote
When To Vote
Who Votes?
Polls Versus Votes
Vetoes
Writing It All Down
5. Money
Types of Involvement
Hire for the Long Term
Appear as Many, Not as One
Be Open About Your Motivations
Money Can't Buy You Love
Contracting
Review and Acceptance of Changes
Case study: the CVS password-authentication protocol
Funding Non-Programming Activities
Quality Assurance (i.e., Professional Testing)
Legal Advice and Protection
Documentation and Usability
Providing Hosting/Bandwidth
Marketing
Remember That You Are Being Watched
Don't Bash Competing Open Source Products
6. Communications
You Are What You Write
Structure and Formatting
Content
Tone
Recognizing Rudeness
Face
Avoiding Common Pitfalls
Don't Post Without a Purpose
Productive vs Unproductive Threads
The Softer the Topic, the Longer the Debate
Avoid Holy Wars
The "Noisy Minority" Effect
Difficult People
Handling Difficult People
Case study
Handling Growth
Conspicuous Use of Archives
Treat all resources like archives
Codifying Tradition
No Conversations in the Bug Tracker
Publicity
Announcing Security Vulnerabilities
Receive the report
Develop the fix quietly
CAN/CVE numbers
Pre-notification
Distribute the fix publicly
7. Packaging, Releasing, and Daily Development
Release Numbering
Release Number Components
The Simple Strategy
The Even/Odd Strategy
Release Branches
Mechanics of Release Branches
Stabilizing a Release
Dictatorship by Release Owner
Change Voting
Managing collaborative release stabilization
Release manager
Packaging
Format
Name and Layout
To capitalize or not to capitalize
Pre-releases
Compilation and Installation
Binary Packages
Testing and Releasing
Candidate Releases
Announcing Releases
Maintaining Multiple Release Lines
Security Releases
Releases and Daily Development
Planning Releases
8. Managing Volunteers
Getting the Most Out of Volunteers
Delegation
Distinguish clearly between inquiry and assignment
Follow up after you delegate
Notice what people are interested in
Praise and Criticism
Prevent Territoriality
The Automation Ratio
Automated testing
Treat Every User as a Potential Volunteer
Share Management Tasks as Well as Technical Tasks
Patch Manager
Translation Manager
Documentation Manager
Issue Manager
FAQ Manager
Transitions
Committers
Choosing Committers
Revoking Commit Access
Partial Commit Access
Dormant Committers
Avoid Mystery
Credit
Forks
Handling a Fork
Initiating a Fork
9. Licenses, Copyrights, and Patents
Terminology
Aspects of Licenses
The GPL and License Compatibility
Choosing a License
The MIT / X Window System License
The GNU General Public License
Is the GPL free or not free?
What About The BSD License?
Copyright Assignment and Ownership
Doing Nothing
Contributor License Agreements
Transfer of Copyright
Dual Licensing Schemes
Patents
Further Resources
A. Free Version Control Systems
B. Free Bug Trackers
C. Why Should I Care What Color the Bikeshed Is?
D. Example Instructions for Reporting Bugs
E. Copyright