Методы оценки жизнеспособности проектов (часть 1)

fountain

Схема Кристофера Бейкера

Многие интересуются оценкой жизнеспособности и скорости развития проектов с открытым кодом. Внимательно изучив современные аналитические методы, в этой статье я попытаюсь кратко изложить наиболее распространённые подходы и свои выводы.

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

[Примечание: Все примеры исследований, приведённые в этой статье, взяты из первоисточников, данные исследований верны на момент сбора информации, но со временем могут утратить свою актуальность.]

Первый подход: способность привлечь и удержать участников

Начну с такого вопроса: как определить успешность проекта с открытым кодом? Что должно стать ключевым показателем?

Первый ответ, который приходит в голову: количество людей, принимающих участие в развитии проекта. В конце концов, если в проекте не будет участников, он обречён на умирание.

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

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

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

Бейкер рассмотрел этот тезис на примере двух проектов: Pidgin и Django. В его исследовании Pidgin является примером нежизнеспособного проекта, так как его покинуло больше людей, чем присоединилось. Django же представляет собой жизнеспособный проект, так как у них много ведущих разработчиков, а их сообщество стабильно растёт.

Фелипе Ортега и Даниэль Изкуэрдо-Кортазар расширили этот подход, используя методологию анализа выживаемости для прогнозирования ожидаемой продолжительности участия разработчиков в проекте. Основной вывод, который сделали исследователи, заключается в следующем: если проект теряет людей быстрее, чем привлекает, «он неизбежно умрёт из-за нехватки участников»

Второй подход: эффективность привлечения и удержания

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

Казухиро Ямашита с коллегами применила следующий подход, рассматривая не только способность проекта привлекать новых участников, но и способность удерживать существующих участников, используя следующие переменные:

  • Уровень магнетизма: проекты, привлекающие значительное количество новых участников. Рассчитывается доля впервые присоединившихся участников за определённый период времени.
  • Уровень клейкости: проекты, в которых значительное количество участников продолжают активную деятельность в проекте. Рассчитывается доля участников, проявивших повторную активность в последующий период времени.

Термины «магнетизм» и «клейкость» взяты из исследования, проведённого исследовательским центром Пью (Pew Research Center) на тему тенденций миграции населения в США. Используя эти две переменные, Ямашита с коллегами предложила секторную модель для классификации жизнеспособных и нежизнеспособных проектов:

magnet-sticky

Источник: статья “Magnet or Sticky? An OSS Project Typology”
(«Магнит или Клей? Типология OSS-проектов»)

Значения секторов следующие:

  • привлекательные (красный): обладающие высоким уровнем магнетизма и клейкости;
  • стагнационные (голубой): высокий уровень клейкости, слабый магнетизм;
  • флуктуирующие (зелёный): сильный магнетизм, слабая клейкость;
  • терминальные (фиолетовый): слабые магнетизм и клейкость.

Подход, разработанный Ямашитой, немного углубляет наше понимание того, каким должен быть жизнеспособный проект. Хотя в идеале такой проект должен обладать высоким уровнем магнетизма и клейкости, встречаются и альтернативные варианты, когда стабильный проект обладает либо ярко выраженным магнетизмом, либо клейкостью.

Возможны случаи, когда не так много участников присоединяются к проекту, но зато присоединившиеся остаются в нём надолго. Или, например, участники в проекте постоянно сменяются (как в модели Бейкера), но при этом никогда не бывает недостатка в талантливых разработчиках. Однако, если проект не может ни привлекать, ни удерживать новых участников (т. е. находится в терминальном состоянии), высоки шансы, что он просто умрёт.

Но не все участники одинаково ценны!

Наша модель теперь выглядит немного лучше. Но есть одна явная проблема, которая игнорируется в обоих подходах: участники неоднородны в своём проявлении.

Не все участники производят одинаковую ценность и, кроме того, они приходят в проект с разными целями. Вследствие разных стимулов, отличаются ожидаемое качество их вклада и продолжительность их участия в проекте.

Как правило, в популярных проектах по меньшей мере половина (хотя бывает и гораздо больше) разработчиков являются случайными, сделавшими всего один небольшой вклад за всю историю своего участия (например, исправили баг, который обнаружили при использовании проекта). Несмотря на большое количество таких участников, на них приходится менее 2% активности. Этот тип участия и не предполагает долгосрочного сотрудничества.

На другой стороне спектра находятся ведущие разработчики, которые выполняют основной объём работы. От них может зависеть жизнеспособность проекта. Используя очередную метафору из биологии, ведущих разработчиков можно сравнить с ключевыми видами экосистемы. Хотя их намного меньше, исчезновение представителя ключевого вида оказывает чрезвычайно негативный эффект на всю экосистему.

Нельзя воспринимать всех участников как однородную массу. Тем не менее подавляющее количество исследований в своей оценке жизнеспособности проектов опирается на количество привлечённых/покинувших проект участников. При этом игнорируется тот факт, что общее количество разработчиков не влияет на успех проекта.

Представьте два проекта, в каждом из которых по 10 участников. В первом проекте 10 активных, постоянных разработчиков. Во втором проекте – один ведущий разработчик и 9 обычных участников, принявших участие в проекте лишь единожды. Это примеры двух совершенно разных организационных структур, хотя обе могут быть жизнеустойчивы (или нет) по самым разным причинам.

Обе рассмотренные выше методики оценки предполагают, что все участники проекта имеют равную ценность. Но мы знаем, что вклад новых участников, скорее всего, не будет отличаться высоким качеством, просто потому что они ещё плохо знакомы с проектом. И наоборот, предложения постоянных участников, скорее всего, будут рассматриваться и исполняться быстрее.

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

Сая Оноэ с коллегами решила эту проблему, включив в магнитно-клейкостную модель следующие переменные, связанные с участниками:

  • Уровень опыта: представлен в виде доли новых участников (NCR). Новыми считаются участники, чей стаж составляет менее трёх месяцев. Опытными – те, кто участвует в проекте более трёх месяцев.
  • Технический вклад: представлен в виде доли технических специалистов (ССR). К техническим специалистам относятся участники, сделавшие хотя бы один коммит или запрос на включение кода в определённый период. К нетехническим относятся участники, не произведшие каких-либо действий, но указавшие на проблему. [Примечание: однако это несовершенный подход, поскольку нетехнические коммиты или запросы на включение могут привести к очень интересным результатам.]
population-matrix

Источник: статья «Investigating and Projecting Population Structures in Open Source Software Projects: A Case Study of Projects on GitHub» («Исследование и защита структуры участников в OSS-проектах: практический анализ проектов на GitHub»)

На рисунке выше видно, что высокий показатель CCR = большее количество технических участников, а высокий показатель NCR = большее количество новых участников. Например, в таких проектах, как cake-php, стабильное количество участников, которые в основном пишут код. А в таких проектах, как Font Awesome, большое количество новых участников, совершающих нетехнические действия. (Из исследования Оноэ: «Этот проект занимается разработкой иконочных шрифтов для сайтов, и множество пользователей присылают им запросы на новые иконки. Поэтому многие нетехнические участники покидают проект сразу после выполнения задания, приняв в нём лишь небольшое участие».)

Продолжение следует…

Источник



Рубрики:Анализ, Инвестиции, Мнение, Теория

Метки:

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход /  Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход /  Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход /  Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход /  Изменить )

Connecting to %s