Лучшие практики для настройки и управления проектом с открытым исходным кодом - PullRequest
20 голосов
/ 02 апреля 2010

Позже в этом году я хочу выпустить PHP-фреймворк, над которым я работаю, с открытым исходным кодом.Я использую систему контроля версий (SVN), но она чрезвычайно ограничена.Я самоучка, я сам развиваюсь и не имею опыта работы с большими командами.У меня есть некоторые идеи о том, что может помочь сделать проект успешным, но я не совсем понимаю некоторые детали.Поскольку он еще не выпущен, я хочу сделать все возможное, чтобы создать правильную инфраструктуру с самого начала.Что мне нужно знать, чтобы настроить успешный проект и управлять им?

Некоторые идеи, которые мне нужны, чтобы сделать его успешным (помимо маркетинга):

  • Хорошая документация и учебные пособия
  • Автоматизированные модульные тесты и сборки для принудительного обновления на веб-сайте
  • Четкая дорожная карта
  • Отслеживание ошибок, интегрированное с контролем версий
  • Руководство по стилю для сохранениякод соответствует
  • Форум для сообщества, где можно получить поддержку, поделиться идеями и т. д.
  • Хороший пример приложения, созданного с использованием инфраструктуры
  • Блог для информирования сообщества
  • Поддержание обратной совместимости везде, где это возможно

Некоторые из моих вопросов:

  • Как настроить и автоматизировать один шаг submit-test-commit-generateAPI docs-push-обновление процесса веб-сайта? Редактировать : Будут ли муравьи или мавены хорошими кандидатами на это?Если да, знаете ли вы какие-либо ресурсы для настройки PHP-проекта с их использованием?
  • Как я могу обрабатывать (технически) заявки от других пользователей?Как я могу гарантировать, что эти материалы должны быть одобрены перед интеграцией?
  • Каких ошибок можно избежать с точки зрения сообщества проекта?Я бы предпочел, чтобы это было как можно более дружелюбным и полезным, без большого количества драмы.

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

Ответы [ 8 ]

5 голосов
/ 07 апреля 2010

Одно незначительное предложение, которое мне пригодилось: начните использовать местоимения от первого лица во множественном числе , а не в единственном числе. То есть говорить о «мы» и «нас», а не о «я» и «я». Это побуждает других людей участвовать, когда они чувствуют себя частью команды, а не когда они чувствуют, что они вносят свой вклад в самосовершенствование.

5 голосов
/ 02 апреля 2010

Я только начинаю в общественных проектах, но я дам вам несколько советов о том, что я знаю.

Как мне настроить и автоматизировать одношаговое API docs submit-test-commit-generate docs-push-обновление процесса веб-сайта?

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

Вы не хотите выдвигать изменения API, пока он не станет официальным релизом.

РЕДАКТИРОВАТЬ: Рабочая среда

Для PHP большую часть времени я либо редактирую непосредственно на сервере и проверяю его там, используя beta.example.com или аналогичный, перед тем как перейти на example.com. Вы также можете настроить веб-среду на своем домашнем ПК (используя XAMPP для Windows или стандартную установку LAMP в Linux). Вы, вероятно, просто использовали бы здесь зеркало своего репозитория, поэтому вы должны сделать svn commit, или в зависимости от того, что подходит для выбранной вами VCS или DVCS.

Самое интересное - это тестирование с разными версиями PHP. Я сам этого не делал, но вы, вероятно, могли бы использовать файл .htaccess для запуска другого двоичного файла PHP, чтобы проверить его. Я не совсем уверен, что лучший вариант для этого.

Я не так много сделал с API, так как никогда не создавал библиотеку, но просто выполняя быстрый поиск, я нашел http://www.phpdoc.org/. Это похоже на зрелый проект, так что это может быть отправной точкой.

Что касается создания релизов, я обычно создаю сценарий, который включает в себя только файлы, входящие в дистрибутив (он отфильтровывает любые файлы VCS и все, что вам не нужно в распределенном файле). Вы могли бы написать сценарий около find для Linux (что я и делаю большую часть времени), или могут быть другие лучшие варианты.

Как я могу обрабатывать (технически) представления от других пользователей? Как я могу гарантировать, что эти материалы должны быть утверждены перед интеграцией?

Это в основном обрабатывается системой отслеживания ошибок и ограниченным доступом в системе контроля версий. Обычно вы и люди, которым вы разрешаете, можете присоединиться к VCS. Другие пользователи могут отправлять исправления, но тогда вы можете попросить кого-нибудь просмотреть исправление, протестировать исправление и зафиксировать его. Вы можете разделить эти задачи в команде или назначить патч для одного человека и сделать так, чтобы он делал все это.

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

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

4 голосов
/ 10 апреля 2010

Самое важное, что вам нужно сделать, это привлечь пользователей. Без пользователей вы не получите никакой помощи, и разработчики не помогут вам. Поскольку разработчики сначала пользователи, а затем они решают расширить / исправить то, что используют, и могут стать участниками.

Итак, чтобы получить пользователей, вы должны рассмотреть

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

Если вы получили все это, и люди начинают отправлять исправления, вы можете использовать инструмент исправлений, чтобы применить их к своему источнику. В зависимости от вашей системы контроля версий, вы можете использовать либо патч GNU, инструмент diff / patch, который поставляется с вашим контролем версий, или, возможно, даже инструмент GUI, который поможет вам в этом. У SVN нет инструмента исправления (пока), но 'svn diff' создаст файл исправления, который можно затем применить с помощью инструмента исправления GNU, или, если вы используете TortoiseSVN, перетащите файл исправления правой кнопкой мыши на свою рабочую копию. и попросите TortoiseMerge применить его для вас.

И о том, как лучше всего общаться с сообществом:

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

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

2 голосов
/ 07 апреля 2010

Не пытайтесь делать все это самостоятельно - для проектов с открытым исходным кодом есть несколько хостинг-провайдеров, которые решают большинство проблем. Я рекомендую кодекс или код Google.

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

Если вам действительно нужен описанный вами пошаговый процесс, вам нужен сервер сборки. Я использую TeamCity, который я настроил, чтобы следить за любыми изменениями в svn и запускать сборку / тестирование всякий раз, когда что-то проверяется. Сервер сборки обычно может выполнять любые шаги, которые вы вводите в скрипт сборки.

2 голосов
/ 03 апреля 2010

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

1 голос
/ 13 апреля 2010

Взгляните на книгу Карла Фогеля о Создание программного обеспечения с открытым исходным кодом . В нем, вероятно, есть все, что вы просили.

Вы также должны планировать привлечение сообщества. Я бы порекомендовал прочитать «Искусство сообщества» Джоно Бэкона [http://www.artofcommunityonline.org/].

]
1 голос
/ 10 апреля 2010

Читайте Git как альтернативу SVN

  • бесплатный общедоступный репозиторий / трекер ошибок / wiki / сообщество с поддержкой fork в Github (в котором размещены symfony и PHPUnit среди прочих)
  • " Как я могу обрабатывать (технически) представления от других пользователей? Как я могу гарантировать, что эти представления должны быть утверждены перед интеграцией? " - с помощью Git извлеките то, что вы / ваша ближайшая команда находите больше всего интересует мастер ветка

Последовательный API

  • вдохновляйтесь другими публичными API: s
  • изменяется только в основных версиях
  • угадываемы

Интересно как для пользователей, так и для разработчиков

  • ясная цель (ваша дорожная карта - отлично)
  • полезно, в отличие от всего остального
  • простой в использовании, но все же не достаточно легкий для написания / поддержки себя

Вы можете проверить Ant или Phing, чтобы построить свой проект. Включите CodeSniffer в сборку, и вы сэкономите время на проверку основных ошибок форматирования / различий.

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

0 голосов
/ 10 апреля 2010

У вас есть отличный набор идей для начала. Возможно, вам придется начать с обрезки их! Спросите себя, что необходимо для первого выпуска.

  1. Для автоматизации сборок и тестов сценарии можно выполнять с помощью ant, maven или phing для проектов PHP.

  2. Вам, вероятно, понадобится хост, чтобы вы могли продемонстрировать продукт. Для PHP это довольно легко найти.

  3. Вам нужен хостинг-провайдер с открытым исходным кодом, особенно github (но также и код Google, исходный код и т. Д.) Github обеспечивает отслеживание ошибок, лицензии по умолчанию, блог и отличные механизмы для принятия изменений от сообщества. Построенный на git, он довольно хорошо облегчает распределенные проекты.

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

Удачи!

...