Глава 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

Свободные программные продукты полагаются на технологии, поддерживающие сбор и обработку информации. Насколько эффективно вы используете эти технологии и продвигаете использование их другими настолько же успешным будет и ваш проект. И чем шире разрастается ваш проект, тем более явной становится справедливость этого утверждения. Хорошая информационная поддержка это то, что не дает проекту быть раздавленным под действием Закона Брукса,[12] говорящего о том, что подключение новых разработчиков к запаздывающему по срокам проекту только еще дальше отодвигает сроки его готовности. Фредерик Брукса показывает, что сложность проекта возрастает пропорционально квадрату числа его участников. Когда проектом занимаются всего лишь несколько человек, каждый может обсудить проект с каждым, когда же в проект вовлечены сотни людей невозможно каждому быть в курсе, чем занимается прочие участники. И если с т.з. менеджмента правильно дать почувствовать каждому, что все работают вместе в одной комнате, то возникает очевидный вопрос: что случится когда все одновременно начнут говорить в этой переполненной комнате?

Эта проблема не нова. Для обычной (неметафорической) комнаты существует типовое решение — парламентская процедура: точные руководства как проводить дискуссии в больших группах в реальном времени, как сделать так, чтобы существенные разногласия не потерялись в потоке бессмысленных комментариев, как формировать рабочие группы (подкомитеты), как понять, что необходимые решения уже приняты, и т.д. Важной частью парламентской процедуры также является определение как группа разработчиков взаимодействует внутри системы информационной поддержки. Some remarks are made "for the record", others are not. The record itself is subject to direct manipulation, and is understood to be not a literal transcript of what occurred, but a representation of what the group is willing to agree occurred. The record is not monolithic, but takes different forms for different purposes. It comprises the minutes of individual meetings, the complete collection of all minutes of all meetings, summaries, agendas and their annotations, committee reports, reports from correspondents not present, lists of action items, etc.

Благо Интернет не реальная комната, и нам не обязательно заботиться о той части парламентской процедуры, которая удерживает некоторых людей от комментариев в то время, когда говорят другие. Но при использовании приемов информационного управления, хорошо организованный открытый проект становится интенсифицированной парламентской процедурой (парламентской процедурой на стероидах). С тех пор, когда почти все общение в открытом проекте сводилось к переписке, производственные системы сильно эволюционировали для обеспечения пренаправления и маркировки информации; для минимизации дублирования информации и предотвращения ее искажения; для сохранения данных и получения их по запросу; для исправления ошибочной или устаревшей информации; и для связи разрозненных частей кусочков информации друг с другом, как только эта связь проявляется. Активные участники открытого проекта усвоят большинство из этих подходов, и будут вручную выполнять определенные операции, чтобы убедиться, что информация перенаправлена правильно. Но все старания в конечном счете зависят от передового программного обеспечения. Насколько возможно, среда общения сама должна перенаправлять, маркировать, and recording, и обеспечивать доступ к информации в максимально удобном виде. На практике, конечно же, все равно возникнет необходимость человеческого вмешательства в различных местах процесса, и важно, чтобы программное обеспечение предоставляло удобный способ проведения этого вмешательства. В общем случае, если человек заботится о маркировке и классификации информации при первом вводе в систему, то программное обеспечение должно быть настроено таким образом, чтобы извлечть из этих метаданных по максимуму.

Эта глава сугубо практическая, базирующаяся на опыте работы с определенным программным обеспечением и типовыми подходами к его применению. Но суть ее не в том, чтобы научиться ограниченному набору конкретных приемчиков, а в том, чтобы, посредством нескольких характерных примеров, продемонстрировать общий подход, ведущий в сторону качественного информационного управления в вашем проекте. Этот подход подразумевает комбинацию технических навыков и навыков работы с людьми. Технические навыки будут необходимы, потому что программы информационного управления требуют конфигурирования, повседневной поддержки и дополнительных расширений по мере необходимости (например, см. обсуждение как регулировать расширение проекта «Pre-Filtering the Bug Tracker» далее в этой главе). Навыки общения с людьми так же необходимы, так как сообщество так же требует регулирования: it's not always immediately obvious how to use these tools to full advantage, and in some cases projects have conflicting conventions (for example, see the discussion of setting Reply-to headers on outgoing mailing list posts, in «Списки почтовой рассылки»). Everyone involved with the project will need to be encouraged, at the right times and in the right ways, to do their part to keep the project's information well organized. The more involved the contributor, the more complex and specialized the techniques she can be expected to learn.

Информационная поддержка не имеет шаблонных решений. Для этого слишком много значащих факторов. В конце концов, даже когда все сконфигурировано так, как и хотелось, и сообщество пользуется этим, но рост проекта, как правило, сделает часть из этих решений неприемлемыми. Или когда рост проекта стабилизирован, и разработчики и сообщество пользователей находятся в комфортных взаимоотношениях с технической инфраструктурой, кто-то вырвется вперед и изобретет новую систему информационной поддержки, достаточно скоро новые пользователи будут спрашивать почему ваш проект не использует ее — что, например, происходит со многими свободными проектами, появившимися до появления wiki (см. http://en.wikipedia.org/wiki/Wiki). Много вопросов — предмет обсуждения, подразумевающего нахождение компромисса между удобством для тех, кто создает и представляет информацию и удобством тех, кто потребляет ее, или между временем, необходимым для конфигурирования приложений системы информационной поддержки и и пользу, которую она может принести.

Остерегайтесь от искушения "переавтоматизации" (автоматизации всего), то есть, автоматизации тех вещей, который на самом деле требуют внимания человека. Техническая инфраструктура важна, но что заставляет свободный проект работать, так это внимание участвующих в нем людей. Главная задача технической инфраструктуры — предоставить людям удобный способ делать это.

Что нужно проекту

В большинстве своем проекты с открытыми исходниками предлагают, как минимум, стандартный набор средств информационного обеспечения:

Сайт

Изначально централизованный, односторонний информационный трубопровод от проекта к обществу. Веб-сайт может так же интерфейсом для администрирования других средств проекта.

Списки рассылки

Обычно самый активный круг общения проекта, так же выполняет роль протокола ("medium of record").

Система контроля версий

Дает разработчикам простой способ управления изменениями в исходных кодах, включая откат изменений и "change porting". Позволяет каждому отслеживать что творится с кодом.

Система отслеживания ошибок (баг-трекер)

Позволяет разработчикам следить за состоянием разработки, координировать работу и планировать выпуски версий. Позволяет всем запросить состояние найденной ошибки и добавить информацию (например, порядок действий, необходимых для воспроизведения ошибки) о конкретных ошибках. Может быть использована для не только отслеживания ошибок, но также для отслеживания выполнения задач, выпусков версий, предложения по введению новых функций, и т.д.

Обмен сообщениями (чат)

Средство для проведения оперативных дискуссий для диалогов в режиме вопрос-ответ. Не всегда имеет смысл архивировать эти диалоги.

Каждое средство предназначено для конкретных нужд, но в чем-то их функции пересекаются, и эти инструменты должны быть настроены так, чтобы работать совместно. Ниже мы рассмотрим, как это может быть осуществлено, и, что самое главное, как дать возможность людям пользоваться этим. Веб-сайт будет рассмотрен последним, так как он скорее является связующим звеном (клеевой основой) для всех прочих компонентов, чем инструментом как таковым.

Кстсти, вы можете избежать большой головной боли по выбору и конфигурации этих средств выбрав типовой хостинг: сервер, который предлагает типовое, шаблонное веб-пространство со всеми соответствующими инструментами, необходимыми для запуска открытого программного проекта. Читайте «Canned Hosting» далее в этой главе обсуждение достоинств и недостатков такого решения.



[12] The Mythical Man Month, Ф. Брукс, 1975. См. также http://en.wikipedia.org/wiki/The_Mythical_Man-Month и http://en.wikipedia.org/wiki/Brooks_Law.