LXF155:Ведение проекта:
|
|
|
Содержание |
Ведение проекта: с переднего края
После шести лет разработки, 35 000 скачиваний его операционной системы и огромного числа неудач, Майк Сондерс познал один-два способа заставить работать открытый проект. Мы попросили его поделиться...
Почувствовать себя в их шкуре — вот самое важное, что следует помнить руководителю проекта открытого ПО. Будь то работа с программной заплаткой от завзятого спорщика или попытка привлечь пользователей посредством объявления о релизе, жизненно важно тщательно обдумать, как это поймут люди. Как лидер проекта, вы должны иметь полное понимание и амбиции, но вам постоянно придется думать о том, как вас воспринимают другие.
Шесть лет я проработал над операционной системой, написанной на ассемблере x86 и названной MikeOS на http://mikeos.berlios.de. Хотя она все еще находится в любительском секторе рынка ОС, но добилась некоторого успеха: освещения в OSNews, тысячи скачиваний, сотни заплат и бессчетного числа электронных писем от пользователей. Были взлеты, падения, ошибки, и я хочу поделиться приобретенным знанием – это реальное знание, а не рекламная «стратегия управления проектом», нужная лишь для обогащения «консультантов».
Будьте непохожи
Потратив полчаса на сайте www.freecode.com (бывший www.freshmeat.net), вы, возможно, придете к выводу, что мир обойдется без еще одного легковесного MP3-плейера на базе GTK. Там их уже сотни – есть хорошие, а есть и отстойные, но рынок вполне насыщен. Конечно, причины писать MP3-плейеры есть: музыку слушают все, кодировать это довольно просто, и у нас есть прекрасные библиотеки и солидные фреймворки для помощи в разработке. На плейере можно отлично потренироваться. Однако это не сделает его хорошим проектом свободного ПО и не вызовет у хакеров желания поучаствовать.
Значит, надо придумать нечто уникальное. Вам нужна фишка, отличающая его от всех остальных. Это не значит, что следует сторониться признанных жанров – например, в случае MP3-плейера у вас может возникнуть идея встроенного распознавания речи, ради расшифровки интервью. Эта прекрасная инновационная идея еще не заезжена, и если вы добавите свой проект в Freecode, он действительно выделится среди толпы.
В конечном счете вы хотите, чтобы на вашу работу посмотрели и сказали: «Ух ты, я и не знал, что такое возможно», или: «Ну наконец хоть кто-то это сделал». Удастся вам привлечь других разработчиков или нет, в любом случае это будет хорошим самоутверждением и поможет вам поверить, что вы сумели изящно разнообразить компьютерный ландшафт. Если вы работаете над проектом, который выглядит не слишком ярко, но вы хотите сделать релиз во что бы то ни стало, потратьте несколько недель на обзор, понимание основных моментов и размышление над тем, как сделать программу отличной от других.
«Так, Майк, – строго скажете вы, – это все прекрасно, ну, а как насчет MikeOS? Мало разве ОС, написанных на ассемблере?» Да, верно. И когда я выпускал MikeOS, я совершил упомянутую выше ошибку – не предусмотрел никаких особенностей. Я гордился ею и хотел продолжать разработку, но никто не обращал на нее внимания.
И я решил взять такую уникальную фишку: у меня не было времени на превращение ее в супер-ОС наподобие Linux, но я умею делать описания. Так что я задался целью сделать MikeOS наилучшим образом документированной любительской ОС, где все прокомментировано и объяснено понятным языком. Я написал три тщательно проверенных руководства по работе в ОС, разработке приложений и настройке системы, затем взял код и прокомментировал все, что мог. Это не идеал, лакуны все еще есть, однако мне не встречались похожие ассемблерные проекты с уклоном на обучение, которые были бы документированы с такой степенью подробности.
Создайте нечто практичное
Тут вам, быть может, вспомнилась чудесная идея для приложения, которое вы когда-то написали, а сейчас его можно подправить и изменить мир. Это здорово, однако нужно мыслить практично. Многие разработчики на этом этапе сломя голову рванут вносить проект на SourceForge, сопроводив его грандиозными комментариями о грядущих достижениях программы, даже со сфабрикованными экранными снимками. Я перевидал бессчетное число страниц проектов SourceForge, фонтанирующих претензиями, надеждами и амбициями, но при нажатии на ссылку download становится ясно, что разработчики никогда ничего не выгружали. Так что сперва сделайте упор на создание чего-либо работающего. Оно не обязательно должно быть сверхнадежным или полнофунциональным – лишь бы давало представление о проекте.
Вам нужно, чтобы пользователь подумал: «Круто! Да, здесь нужно еще поработать, но мне уже ясно, что получится». Это не только даст отправную точку тем разработчикам, которые захотят присоединиться, но и заставит других принять вас всерьез и признать, что с течением времени вы сумеете реализовать свои планы.
Установка вех – скажем, «реализовать функцию X в версии 0.4, а функцию Y – в версии 0.5» – также важна, но не слишком за них цепляйтесь. Может выйти, что Y почти завершено, а с X остаются проблемы, и в итоге у пользователей и разработчиков не будет ни того, ни другого. Так что проявляйте гибкость в вопросах планирования; рассчитывайте примерно на несколько месяцев вперед, но не бойтесь менять планы, если вдруг возникнут неприятности.
Одна из известнейших мантр свободного ПО звучит как «выпускайте пораньше, выпускайте почаще». В этом есть смысл, но не нужно сходить с ума: чтобы ваши релизы заметили, они должны создавать импульс. Если вы будете что ни день выпускать релиз всего лишь с исправлением пары ошибок и, возможно, с одной-двумя новыми функциями, и публиковать обновления во Freecode, со стороны это будет выглядеть как бесконечное выдавливание по капле информации о вашем проекте. (Один проект, текстовый редактор Rho, именно так и поступает, ежедневно анонсируя микроизменения. Может, это и хорошая программа, но меня от нее уже тошнит.) Действительно, будет куда лучше подождать, когда у вас будут готовы для демонстрации потрясающие вещи – желательно с экранными снимками – и возбудить интерес.
Это касается и контроля версий. Большей частью это технический выбор, и мы не станем в него углубляться, однако упоминайте его осторожно. Сообщение на сайте, что можно просто «взять самую свежую версию с SVN», не очень волнует: а что там нового-то? Какие вехи преодолены? Для некоторых пользователей: а как я вообще использую SVN? Даже если разработка проекта движется вперед семимильными шагами, на сайте всегда полезно содержать четкие, гарантированно работающие архивы с конкретной версией ваших релизов.
Что в имени тебе?..
Будьте очень-очень осторожны при выборе имени проекта, ведь потом поменять его будет сложно. Скажем, GIMP: это было имя, нормальное для любительской GNU Image Manipulation Program, применяемой парой хакеров Unix еще в 1995, но сейчас для огромного числа пользователей на нескольких ОС имя одного из заветнейших приложений мира открытого ПО звучит глупо и с негативным оттенком [амер. сленг gimp – увечный, ущербный]. Были призывы поменять название, но это задача титаническая. Только представьте, сколько придется переделать ссылок в Интернете, бумажных изданиях и пр.!
Оглядываясь назад, признаю, что я и здесь допустил ошибку. MikeOS – не лучшее название для проекта: оно выглядит эгоистическим и не описывает того, что делается. Изначально это был демонстрационный код, а название дано в шутку, но когда присоединились другие разработчики и счетчик посещений сайта вырос, стало сложно что-то изменить. Имея это в виду, представляем официальный список пяти худших и лучших названий в Linux на 2012 год от Linux Format.
Поясним свою логику: PiTiVi ужасен из-за бессмысленной смеси регистров, а при произнесении вслух в нем слышится «pity [англ. жалость]»; никто не знает, как озвучить Mageia (Магия? Магея? Магайя?); L3afpad сделал попытку выглядеть круто, однако это название достойно малолеток, подражающих leet. Зато Shotwell отсылает именно к тому, что делает – управляет снимками; Inkscape не столь точен, но здесь есть отсылка к черчению чернилами [ink], а «scape» вызывает ассоциации с пейзажем [landscape]. Или – избегать чернил [escaping from ink]; смотря как осмысливать эти вещи.
Отвращение к версии 1.0
Не бойтесь выпустить версию 1.0 – может статься, что это ваше лучшее достижение. Версия 1.0 указывает на вашу веру в широкое распространение программы, и воодушевляет многих попробовать ее. Перед выходом версии 1.0 MikeOS у меня было несколько релизов цикла 0.4, и хотя я не делал специального объявления для этого релиза 1.0, у него было на тысячи больше скачиваний, чем у предыдущих версий.
И снова, взгляд на Freecode обнаружит частокол проектов в стадии 0.x; если среди них попадается 1.0, срабатывает психологический эффект: «Ух, наконец это можно использовать – мне безразлично, когда разрабатывалась версия 0.35.6, но сейчас дело закончено, и я попробую».
У некоторых программ есть трудности с достижением этой цели, что наносит им ущерб. Сколько лет Inkscape пребывал в состоянии 0.4x? Мы заявляем, что это отличная, полнофункциональная, отточенная программа – один из флагманов мира свободного ПО, но до сих пор номер ее версии ставит ее в один ряд с наскоро сляпанными аутсайдерами. У разработчиков есть свои причины делать номера версий такими небольшими, однако, выпустив в свет 1.0 (и приберегая еще больше функций для 2.0) они пошлют миру сигнал: сейчас эта программа доступна для каждого.
И – да, делайте номера версий короткими. Например, у L3afpad, который уже попал в список худших названий, на момент написания этих строк вышла версия 0.8.18.1.6. В чем тут смысл? Формат X.X.X прекрасно работает – первое число для больших изменений, второе – для обновления функций, и номер ревизии для исправленных ошибок/обновлений безопасности.
Изображение имеет значение!
Имеет, это правда. Я не про разукрашивание вашего сайта, а про обдумывание, как он смотрится со стороны. Самый распространенный изъян, обнаруженный мной за 40 выпусков HotPicks, таков: многие сайты проектов свободного ПО даже не сообщают, о чем эти проекты. Вы заходите на сайт, видите список свежих обновлений, ссылки на Твиттер, скачивание и информацию о разработчиках... и ни слова о самом приложении. Иногда это спрятано на странице About, но в основном игнорируется. Пользователь вынужден разгадывать назначение программы по новостям, получит ложное представление и покинет страницу. Поэтому особенно важно дать четкое описание проекта на самом верху страницы. Рассматривайте это как статью: нужен заголовок для привлечения внимания и подзаголовок с краткой информацией, что к чему. На главной странице вашего сайта также стоит довести это до конца, показав список основных функций программы, и только потом последние обновления. Если вы хотите держать новости на отдельной странице, поместите информацию о последнем обновлении сайта, чтобы посетители видели активность проекта.
Экранные снимки выигрышны, даже если ваша программа работает в командной строке. Покажите программу в действии; покажите, как она выполняет интересную работу; покажите ее man-страницу. Для любой программы экранные снимки дают пользователю понимание, как ею пользоваться. Снимки должны обновляться. Я перевидал много игровых сайтов, где игра на продвинутой стадии и прекрасно смотрится, а экранные снимки даны для версии 0.2, где все выглядело тускло.
Создайте логотип, но не тратьте на него всю свою жизнь. Используйте простые формы и цвета – то, что легко воспроизводится. Используйте один и тот же совместимый с названием логотип, чтобы идентифицировать программу. Взгляните, например, на KRename: в описании на сайте KRename названо с прописной R, а на логотипе и в заголовке страницы эта буква строчная (Krename). Пусть это звучит тривиально, но такая путаница в показаниях создает впечатление небрежности.
Приобретение и сортировка разработчиков
Когда у вас появится код, достойный показа, и приличный сайт, начинайте залавливать участников. Помните, что над большинством проектов свободного ПО работают один или двое, и наутро вы не проснетесь с командой. Лучший источник хакеров – обычная доска объявлений, типа Freecode. Если кому-нибудь понравилось то, что вы делаете, он предложит свою помощь. Также попытайтесь поискать на форумах, связанных с вашим приложением, однако излагайте просьбы о помощи покороче. Если у вас проект свободного/открытого ПО, формулируйте это четко, чтобы вас не обвинили в рассылке спама!
По мере выстраивания команды разработчиков для вашего проекта и дискуссий на вашем форуме или в списке рассылки, вы поймете, что они обычно попадают в одну из следующих категорий:
- Генераторы идей Они переполнены блестящими, образными идеями расширить приложение всякими крутыми штуками, но не предлагают способа их реализации. С такими людьми очень трудно иметь дело; они, конечно, неиссякаемый источник вдохновения и позитивности в проекте, но вы ведь не хотите, чтобы вся почтовая рассылка была переполнена предложениями, и не было никого, кто доводит их до дела. С MikeOS это случалось так часто, что мне пришлось быть беспощадным и некоторое время проводить политику «никаких крупных предложений без кода».
- Рвущиеся в лидеры Они то здесь, то там вносят немного кода, но больше озабочены тем, чтобы сделать себе имя в проекте свободного ПО. Им нравится высказывать последнее слово в дискуссиях, которое звучит как точка зрения официального представителя проекта. Это может таить опасность, когда они начинают публиковать «официальные» сообщения о направлении развития вашего проекта на сторонних сайтах и форумах, часто не ставя вас в известность. Твердо, но вежливо напоминайте им, кто в доме хозяин.
- Пробивающиеся новички Все и во всем мы когда-то были новичками, и нелегко осуждать такой тип поведения. Однако раздражает, когда энергичный разработчик не тратит время на изучение языка программирования или предлагает плохие идеи из-за недостатка опыта. В таких случаях направляйте их на более простые задачи проекта, или, возможно, на задачи, не связанные с программированием: например, документацию или оформление.
- Молчаливые гении Они вдруг возникают в списке с хорошо протестированным и прокомментированным кодом, вносящим фантастическую новую функцию. Они мало говорят о себе и могут появляться лишь раз в несколько месяцев. Вы даже можете не знать, откуда они и как узнали о вашем проекте. Однако они выдают чрезвычайно ценный код, так что просто пусть они будут. MikeOS очень повезло, что ему встретилось несколько таких людей, и если вы подписаны на рассылки других проектов открытого ПО, вы сможете найти их и в других местах.
Общение с психами
Пришло время поговорить про ненормальных, да? Интернет битком набит чокнутыми. Большей частью это безобидно. Пусть себе часами создают клипы для YouTube о пристрастившихся к видеоиграм котятам – это развлекает остальных. Но иногда бывает и не так. Если некто с левой резьбой решит сосредоточить свои усилия на вашем проекте, у вас начнутся проблемы. И если у этой личности есть несколько свободных часов, а вам удается выделить для работы только 30 минут, такие встречи оборачиваются кошмаром.
В конце 2010 некто, вступив в список рассылки MikeOS, заявил, что за проект взялась его компания. Его английский был омерзителен – настолько, что мне даже не процитировать его здесь, не осквернив страниц журнала. Я попросил его убрать эту ерунду, и в ответ получил личное письмо с массой оскорблений, угрозами «рассказать Стиву Джобсу» обо мне, что я нарушаю политику его компании и меня накажут, что MikeOS обречен, потому что он сделал респин Linux в SUSE Studio, который собирается продать в Canonical.
И, в довершение картины, с Caps Lock, включенным на всю катушку, мне пять раз было сказано «ТЫ УВОЛЕН!!!» Этого было мало для его безумного гнева: через пару дней он вернулся, публикуя оскорбительные комментарии обо мне на YouTube и заявляя, что он офицер полиции. Тут уж я решил взяться за него серьезнее, провел небольшое расследование и выяснил, что это 14-летний подросток с поведенческими проблемами, член интернет-банды подобных же детей, страдающих от недостатка внимания и воображающих, что они победят Microsoft.
Разузнав это, я написал ему письмо, сказав, что связался с его родителями, и получил в ответ целый шквал извинений: он написал, что сделает меня директором своей компании, и прочую чепуху. Он утверждал, что собирается писать программы для MikeOS, и очень преуспел... присылая мне ASCII-картинки, чтобы я поместил их на диск. Я проигнорировал его, и он исчез, но я подозреваю, что сейчас он краснобайствует в другом любительском ОС- проекте.
Что делать с гиперактивными
Совсем недавно к списку MikeOS присоединился некий беспокойный тип и заявил, что добавил в MikeOS «четыре API». Когда я спросил его, что это значит, он выложил какой-то неуместный код из другой ОС. Я попросил его либо мыслить здраво, либо выйти вон, и это спровоцировало ежедневную ахинею в моем почтовом ящике, совершенно не поддающиеся пониманию сообщения и бессмысленные куски кода в течение двух месяцев. Его коронным достижением был код на C из случайной Unix-подобной ОС, который, по его словам, будучи помещенным на диск MikeOS в каталог «boot», волшебным образом добавит поддержку сети. (Даже если в MikeOS появится компилятор C, этот код в жизни не заработает.)
Обычно я высмеиваю подобных экземпляров, однако он настолько хотел привлечь мое внимание, даже таким смехотворным участием, что я решил, что он меня достал. В конце концов я заявил ему, что свяжусь с его провайдером по поводу домогательства, и он убрался. Его электронная почта, по-видимому, была связана с учетной записью XBox Live, и хотя я знаю, что многим взрослым нравятся игровые консоли (я сам такой!), я подозреваю, что это был очередной гиперактивный ребенок, у которого слишком много досуга.
Некоторые люди просто как будто с другой планеты, и их не собьешь с этих позиций. Лучше всего по возможности игнорировать их, и если у вас есть подозрение, что оскорбитель достаточно молод, скажите ему, что вы примете меры с его провайдером. Почти наверняка за доступ в Интернет платят его родители, и перспектива того, что о его проделках узнают мама и папа, обычно достаточна, чтобы они заткнулись.