Создание Свободного Програмного Обеспечения

Как вести успешный открытый проект

Карл Фогель

Влад Щербаков

(Переводчик) 

Алексей Ильин

(Переводчик) 

Евгений Федотов

(Переводчик (fedotoves@gmail.com) 

Посвящается

Эта книга посвящается Карен Андерхил и Джиму Блэнди, двум моим дорогим друзьям, без помощи которых её написание не было бы возможным.

Содержание

Предисловие
Почему была написана эта книга?
Для кого написана эта книга?
Источники
Благодарности
Дисклеймер
1. Введение
История
Восход Проприетарного Программного обеспечения и Свободного Программного обеспечения
Осознанное сопротивление
Случайное сопротивление
"Свободное" Против "С Открытым Исходным Кодом"
Ситуация сегодня
2. Начало работы
Начните с того, что у вас уже есть
Выберите хорошее название
Разработайте четкое программное заявление
Подтвердите Что Проект Свободный
Функциональные возможности и Список требований
Текущее состояние разработки
Загрузки
Контроль версий и доступ к системе учета ошибок.
Каналы связи
Руководство разработчика
Документация
Доступность документации
Документация разработчика
Примеры выходных данных и снимки экранов
Постоянный хостинг
Выбор лицензии и ее применение
Лицензии "Делай что угодно"
GPL
Как применять лицензию к вашему программному обеспечению
Задавая тон
Избегайте закрытых обсуждений
Пресекайте грубость на корню
Практикуйте Открытое Рецензирование Кода
Открывая Изначально Закрытый Проект Будьте Внимательны к Значимости Изменений
Announcing
3. Техническое обеспечение
Что нужно проекту
Списки почтовой рассылки
Spam Prevention
Filtering posts
Address hiding in archives
Identification and Header Management
The Great Reply-to Debate
Two fantasies
Archiving
Software
Version Control
Version Control Vocabulary
Choosing a Version Control System
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
RSS Feeds
Wikis
Web Site
Canned Hosting
Choosing a canned hosting site
Anonymity and involvement
4. Социальная и политическая инфраструктура
Великодушный диктатор
Кто может стать хорошим великодушным диктатором?
Консенсусная демократия
Контроль версий упрощает жизнь
Если консенсус недостижим, голосуйте
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. Общение
Вы то, что вы пишете
Структура и форматирование
Содержание
Тон
Как отличить грубость?
Лицо
Как избежать распространенных ошибок?
Не посылайте сообщения без цели
Продуктивные и непродуктивные темы
Чем шире вопрос, тем длиннее споры
Как избежать религиозных войн?
Эффект "шумящего меньшинства"
Тяжёлые люди
Как управляться с тяжёлыми людьми
Пример: трудные люди
Управление ростом
Широко используйте архивы
Трактуйте все ресурсы как архивы
Кодификация традиций
Нет разговорам в трекере ошибок
Публичность
Объявление о дырах в безопасности
Получите отчёт
Негласно разработайте исправление
Номера CAN/CVE
Пред-объявление
Публичное распространение исправления
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