Программист начал создавать свободное приложение. Выпустил первую версию, началось формирование сообщества... И тут внезапно выяснилось, что существует несколько аналогичных проектов различной степени сложности и находящихся на различной стадии. Довольно распространённая ситуация, не правда ли?
В этом случае у лидера проекта возникает вполне здравая мысль — объединить разработки, взяв из каждой самое лучшее. На первый взгляд, это выгодно всем участникам и никаких сложностей возникнуть не должно.
Однако лидер проекта DFSA Сафия Абдалла уверена, что это слишком поверхностный взгляд на проблему. По её мнению, непосредственно написание кода значительно проще формирования сообщества и работы с его участниками. Ведь именно по этой причине и существует так много практически одинаковых проектов, которым что-то мешает объединиться в один.
Что же делать лидеру, желающему объединить несколько проектов? Что ему следует понять перед тем, как приступать к каким-либо действиям? На какие вещи ему нужно обратить внимание в первую очередь.
Прежде всего, лидер должен внятно и максимально честно сформулировать цели собственного проекта. И попытаться сделать то же самое, но уже применительно к тому, что он считает аналогами. В результате может оказаться, что цели попросту не совпадают.
Как правило, сообщества формируются не столько вокруг кода (хотя написание какого-то особенно эффективного кода тоже может быть главной и даже единственной целью), а вокруг общественно значимой цели. Именно она привлекает к разработке большинство новых участников, а вовсе не желание бесплатно попрактиковаться в программировании.
Перед тем, как предложить другим проектам объединиться, надо оценить, насколько близки их цели. Причём необходимо учитывать человеческий фактор — то, что одному кажется общественно полезным, для другого может оказаться совершенно бессмысленным.
Отсюда вытекает первое правило. Объединение проектов возможно, если будет сформулирована цель, которую согласятся разделить участники всех проектов.
Затем необходимо оценить состав участников аналогичных проектов. Для этого проще всего проанализировать их текущее состояние.
Допустим, в процессе исследования выяснилось, что сообщества не имеют проблем с написанием кода, но практически у всех отсутствует хорошая документация. Будет ли в этом случае какая-то польза от объединения? Вряд ли, поскольку слабое звено везде одно и то же.
Таким образом, перед тем, как делать другим проектам предложения, следует составить список сообществ таким образом, чтобы они взаимно компенсировали слабые стороны друг друга. Если некому писать документацию или заниматься дизайном, то дополнительный десяток программистов ничего не даст и, вероятнее всего, попытка объединения окажется неуспешной.
Это и есть второе правило. Объединение целесообразно, если недостатки одного проекта будет компенсироваться достоинствами другого.
Наконец, крайне важно заранее представлять, как люди будут взаимодействовать друг с другом. Не окажется ли так, что вместо эффективной совместной работы начнутся ругань и раздоры?
Например, в каждом сообществе есть какие-то неформальные лидеры. Смогут ли они мирно ужиться в рамках одного проекта? Или сразу начнут выяснять, кто из них главнее?
Разумно будет внимательно почитать рассылки всех проектов и оценить принятый в каждом стиль общения. Ведь совершенно не обязательно, что они окажутся совместимыми. Например, участники одного проекта могут не обращать никакого внимания на орфографию сообщений, тогда как другие относятся к этому вопросу достаточно болезненно. Вряд ли они смогут быстро найти общий язык.
Вот и третье правило. Проекты можно объединить, если можно объединить их участников.
Разумеется, этим список правил не исчерпывается. Очень важно обращать внимания на детали и нюансы, которые сложно предусмотреть заранее. Особенно это относится к всевозможным внешним факторам.
Например, какой-либо проект может развиваться за счёт гранта или корпоративного спонсорства. И по этой причине он не сможет объединиться ни с каким другим, разве что придётся говорить не об объединении, а о поглощении.
Основная мораль, вытекающая из рекомендаций, которые даёт Сафия Абдалла, следующая — лидеру проекта недостаточно обладать хорошими техническими знаниями. Люди устроены значительно сложнее программного обеспечения.