Подтвердить что ты не робот

Рекомендации по установке и управлению проектом с открытым исходным кодом

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

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

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

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

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

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

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

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

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

Ответ 2

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

Ответ 3

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

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

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

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

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

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

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

Ответ 4

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

Ответ 5

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

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

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

Ответ 6

Прочитайте Git в качестве альтернативы SVN

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

Согласованный API

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

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

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

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

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

Ответ 8

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

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

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

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

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

Удачи!