вторник, 6 апреля 2010 г.

[prog] О том, что нужно OpenSource проекту для привлечения пользователей (на примере супер-пупер языка на букву Ны)

Представьте, что вы развиваете OpenSource проект. Что-нибудь для разработчиков – язык программирования, СУБД, универсальную библиотеку общего назначения или какой-то специализированный фреймворк. Вы воплощаете в нем свои идеи и вам кажется, что вы все делаете правильно. Но почему-то пользователей у вашего проекта не много. Почему?

Имхо, это вопрос почти на миллион долларов :) Ведь если узнать причину неудачи, то можно ее устранить. Так что дело за малым – узнать ;)

И вот хороший случай. Лет пять назад на RSDN сформировалась банда ценителей нового “супер-пупер языка на букву Ны” – языка программирования Nemerle. То, что эта банда своим помешательством засрала кучу тем на RSDN-е, сейчас не важно (но упомянуть стоит). Важно другое: как я понимаю, после ухода из проекта Nemerle двух его основателей, двух польских аспирантов, разработка Nemerle выполнялась, в основном, силами RSDN-еров. И вот теперь главный идейный пропихиватель Nemerle в массы озадачился вопросом о том, почему же разработчики не используют его.

На мой взгляд, с основными причинами нежелания разработчиков связываться с Nemerle нужно ознакомиться всем лидерам подобных OpenSource-проектов. Поскольку, если заменить Nemerle на, скажем, Vala, Falcon, Fanton или SObjectizer, то список причин не сильно изменится.

Итак, начинать нужно с голосования: http://www.rsdn.ru/poll/2558.aspx
Самая важная причина (на данный момент) – отсутствие серьезной организации за проектом (~49% опрошенных).
Далее следуют:

  • разработчикам хватает возможностей других мейнстрим-инструментов (~27%);
  • опасение за то, что уход владеющего инструментом разработчика оставит команду в сложном положении (~23%);
  • недостаточно стабильный статус проекта, обилие багов (~23%);
  • невозможность использования проекта из-за привязки к конкретной платформе (~22%).

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

Вот такая информация к размышлению. Сильно сомневаюсь, что лидеры среднестатических OpenSource проектов в состоянии побороть все эти факторы. Но и успех в этой борьбе (например, попадание под патронаж IBM и выпуск очень стабильной версии), имхо, все равно не будет гарантировать ажиотажного внимания к проекту. Хотя ситуацию наверняка исправит :)

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

В общем, community привлекает community. Хотите иметь community вокруг проекта – уделяйте community не меньше внимания, чем самому проекту. А то и больше.

14 комментариев:

Dmitry Vyukov комментирует...

Мои пять копеек. Я думаю, что значительное кол-во человек в такой же ситуации как и я. Вот он спрашивает про сложность синтаксиса, какие-то сборки, компиляцию, комьюнити. Да мне вообще пофигу. Я без понятия какой там синтаксис и комьюнити. А почему я должен это знать? Почему я вообще должен быть на него взглянуть хотя бы один раз (на всё сейчас, к сожалению, не взглянешь)? Он решает какую-то проблему, которая для меня актуальна? Какую? Я не знаю.
Какие проблемы он призван решать? Какая у него ниша? Если это просто "упрощение и ускорение" разработки, то этого сейчас имхо маловато (тем более, что обычно это всё равно шило на мыло).
Взять, например, библиотеку Intel TBB. Если есть задача/проблема распараллеливания для нативного кода, то вариантов-то не особо много (по пальцам одной руки пересчитать, а три года назад вообще один OpenMP был). Тут хочешь-не хочешь а поглядишь на неё.
Имвхо ниша и решаемые проблемы (которые на данный момент должны быть решены не удовлетворительно) один из основополагающих моментов. На вторичных характеристиках можно выехать (например, есть только С библиотека, а эта С++), но только до поры до времени, пока ниша ещё не переполнена.

eao197 комментирует...

Дима, ты воспринял все слишком близко к Nemerle. Представь себе другую ситуацию -- тебе нужно распараллелить вычислительную задачу на C++. Ты знаешь про OpenMP, про разные реализации MPI, про Intel TBB. И тут тебе на глаза попадается какая-то библиотека от какого-нибудь Диего Родригеса, которую сейчас используют три с половиной человека. Соответственно, у нее будет почти мертвый и пустой сайт, о ней не будет блогов, не будет IRC каналов. Ее последняя версия, именуемая 0.9.4-beta вышла три года назад.

Сколько у нее шансов попасть в твой проект? Сколько у нее вообще шансов быть глубоко изученной тобой? А ведь не исключено что конкретно для твоей задачи она подойдет лучше, чем OpenMP/MPI/TBB.

Dmitry Vyukov комментирует...

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

eao197 комментирует...

>Я имею в виду другое. Представь, что мне не НЕ надо ничего распараллеливать. Сколько шансов у всех этих библиотек тогда?

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

Dmitry Vyukov комментирует...

А ты думаешь, что если за Н будет стоять организация, будет документация и он отвяжется от .NET, то сотни разработчиков с RSDN начнут его использовать?
Я даже не уверен, что те 50 человек, которые ответили, что он сырой, вообще в курсе насколько он сырой или нет.

eao197 комментирует...

>А ты думаешь, что если за Н будет стоять организация, будет документация

... то для .NET-а он мог бы стать тем же, чем Scala пытается стать для JVM.

От .NET-а ему бесполезно отвязываться -- он такой нужен только дотнетчикам.

>Я даже не уверен, что те 50 человек, которые ответили, что он сырой, вообще в курсе насколько он сырой или нет.

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

Для сравнения -- в каждом релизе Scala находят десятки багов. Язык постоянно мутирует. Но при всем при том, он не кажется лично мне таким же сырым, как Nemerle.

ShaggyOwl комментирует...

Что необходимо для привлечения внимания.
* Наличие простых примеров доказывающих силу языка.
* Внятная документация.
* Мягкая learning curve. Большой плюс - наличие книги навроде http://www.diveintopython.org/
* Активное комьюнити. Это гарантия получить быстрый ответ на вопросы.
* Какое-то количество готовых библиотек.
Без всего перечисленного смотреть язык не очень интересно (с точки зрения прагматика, не специалиста по языкам).
То же самое относится и к другим инструментам или библиотекам. Должна быть возможность быстро получить ответ на вопрос "зачем мне нужна эта новинка и что в ней такого интересного".

* Весьма желательно, чтобы за проектом была крупная организация.

Могу назвать минимум два языка которые интересны и до которых рано или поздно дойдут руки:
http://processing.org/
http://www.r-project.org/

eao197 комментирует...

>Что необходимо для привлечения внимания.

С этим сложно несогласиться... Но есть у меня смутные подозрения, что все это будет работать когда человек уже принял решение вплотную заняться инструментом X. Но вот когда есть выбор между X, Y, Z и о них человек мало что знает, тогда какие факторы вступают в силу? Или посмотрел человек на X, на Y, на Z -- составил какое-то приблизительное мнение. Дальше за счет чего будет строится выбор между X/Y/Z? Как раз за счет известных именах за спиной, за счет ярких success stories, за счет показателей активности в mailing-list-ах, bugzilla-х и пр. Имхо, конечно.

Например, у библиотеки ACE и learning curve очень себе крутая, и документация почти левая, а между тем используется.

Quaker комментирует...

Мягкая learning curve
Все равно придется что-то новое выучить, у каждого языка есть свои особенности.
Какое-то количество готовых библиотек
Тут согласен, и чем больше, тем лучше, готовые библиотеки могут сильно облегчить жизнь.
Большой плюс - наличие книги
Согласен, книги - это безусловно привлечение внимания. И выпуск этих книг должен быть регулярным, а не раз в 10 лет, как это сейчас в языке Eiffel.
Не нужно также забывать и блогах, заметки в блогах должны публиковаться регулярно. Наличие скринкастов - дополнительный плюс. Хороший пример такого блога, который я с удовольствием просматриваю - это Smalltalk Daily (http://www.cincomsmalltalk.com/blog/blogView?searchCategory=smalltalkDaily).
Подводя итог, можно сказать, что в 21 век (век пиара) для привлечения внимания нужно как можно больше жужжать о том, что ты делаешь, стараясь охватить как можно большее количество программистов. Иначе высок риск так и остаться мало известным даже с хорошим проектом.

eao197 комментирует...

>Подводя итог, можно сказать, что в 21 век (век пиара) для привлечения внимания нужно как можно больше жужжать о том, что ты делаешь

Отлично сказано. Даже известная яблочная компания, которая любит держить свои новые продукты в секрете, в области инструментария жужжит, кака и все остальные. Вспоминается их Grand Central Dispatch.

Rustam комментирует...

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

SAnty комментирует...

Из всех пунктов я бы выделил 2
первий - который подходит для меня :) и наверное я -трус - как самый прикольный :).

Хотя я также пробовал изучать шарп ещё в далёком 1999 году когда выдали на гора бета вирсию НЕТ платформы.

Тогда все говорили что это всё мура, а через два-три года какой спрос пошел на шарп. НО это история.

Про язык Ны я практически ничого не знаю, но читал посты Влада. Агресивный парень :).

Это пройдёт со временем.

eao197 комментирует...

>Тогда все говорили что это всё мура, а через два-три года какой спрос пошел на шарп.

Чесно говоря, очень мало вспоминается OpenSource-проектов, который имели бы такой успех, как проталкиваемые крупными компаниями разработки (вроде Java и C#). На ум приходят разве что Perl и Apache, распространение которых происходило очень шустро. Тот же Python долго добирался до мейнстрима, не говоря уж про Ruby.

>Агресивный парень :).

Говорят, Тео де Ранд, основатель и лидер проекта OpenBSD, тоже не подарок. А Ханс Рейзер, автор ReiserFS, вообще жену убил...

SAnty комментирует...

>Говорят, Тео де Ранд, основатель и лидер проекта OpenBSD, тоже не подарок. А Ханс Рейзер, автор ReiserFS, вообще жену убил...

Ну это уже крайности.