Я тут давеча собирался поделиться наблюдением за тем, как реализован процесс коллективной разработки над Багзиллой.
http://www.bugzilla.org если что. Наконец-то оно созрело.
Есть кучка проверенных граждан, которые могут сами коммитить код в репозиторий
А если приходит код откуда-то снаружи - то он должен быть оформлен в виде патча к какому-то багу.
Причем неважно что именно приходит, абсолютно все исправления, вплоть до исправления синтаксической ошибки в документации - должны быть оформлены по этой схеме: баг - и к нему исправляющий патч
Проверенный товарищ этот патч смотрит и либо его принимает, либо нет
Если принимает, то патч коммитится ответственным товарищем в репозиторий
Если нет - то ответственный товарищ дает свои рекомендации к написателю патча, излагает их в комментариях к багу.
Дальше автор патча, или кто-то еще выпускает новую версию патча, и история повторяется
Если новая версия патча не публикуется, то о баге все забывают, пока или кто-то со стороны не пришлет патч, который устроит разработчика, или разработчик сам не напишет патч
Причем ребята реально дотошные.
Написал я патч, в котором вхождение в условие проверяется двумя грепами
Мне на это указали, подсказали как написать это одним грепом
Написал я патч к документации, мне подсказали, как правильно выразить мысль на английском (убрать два слова)
Причем сам разработчик в этот момент ничего не делает, эти два слова сам из патча не убирает, а ждет, пока я пришлю новую версию патча, который будет отличаться от предыдущего этими двумя словами.
Сначала может показаться, что это занудство, но по некоторому размышлению становится понятно, что разработчику гораздо проще скоммитить уже готовый патч, с которым он полностью согласен, чем брать сырой патч, его править и только потом комитить. Просто чисто психологически проще.
И еще. Вот это четкое присовокупление патча к багу - это тоже позитив.
Потому что это заставляет автора патча самому смотреть в свои изменения. А то бывают случаи, когда вместе с реализацией нужной педальки, в нагрузку приезжает спорный рефакторинг, пара новых недоделанных педалек, и пара личных заморочек автора патча с соответствующими добрыми комментариями.
А это значит, что разработчику надо разбираться самому, что относится к задаче, а что нет. И времени это может занять не меньше, чем самостоятельная реализация идеи.