Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Distributed Development Practice

971 views

Published on

Russian PHPConf 2009
Distributed Development Practice presentation

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Distributed Development Practice

  1. 1. Практика распределенной разработки в Open-Source проектах. Александр Веремьев ( Zend Framework core team ) alexander.v@zend.com
  2. 2. Инструментарий
  3. 3. Управление кодом <ul><li>Репозиторий : </li></ul><ul><ul><li>Subversion (на начальных стадиях CVS ) http://subversion.tigris.org/ </li></ul></ul>
  4. 4. Управление кодом <ul><li>Репозиторий : </li></ul><ul><ul><li>Subversion (на начальных стадиях CVS ) http://subversion.tigris.org/ </li></ul></ul><ul><li>Отслеживание изменений, Web интерфейс к репозиторию : </li></ul><ul><ul><li>FishEye (Atlassian) http://www.atlassian.com/software/fisheye/ </li></ul></ul>
  5. 5. FishEye notifications
  6. 6. FishEye notifications
  7. 7. FishEye code browser
  8. 8. Управление задачами <ul><li>JIRA issue tracker </li></ul><ul><li>(Atlassian, http://www.atlassian.com/software/jira/ ) </li></ul><ul><ul><li>Bug tracker </li></ul></ul>
  9. 9. Управление задачами <ul><li>JIRA issue tracker </li></ul><ul><li>(Atlassian, http://www.atlassian.com/software/jira/ ) </li></ul><ul><ul><li>Bug tracker </li></ul></ul><ul><ul><li>Feature request tracker </li></ul></ul>
  10. 10. Управление задачами <ul><li>JIRA issue tracker </li></ul><ul><li>(Atlassian, http://www.atlassian.com/software/jira/ ) </li></ul><ul><ul><li>Bug tracker </li></ul></ul><ul><ul><li>Feature request tracker </li></ul></ul><ul><ul><li>Unit tests problems tracker </li></ul></ul>
  11. 11. Управление задачами <ul><li>JIRA issue tracker </li></ul><ul><li>(Atlassian, http://www.atlassian.com/software/jira/ ) </li></ul><ul><ul><li>Bug tracker </li></ul></ul><ul><ul><li>Feature request tracker </li></ul></ul><ul><ul><li>Unit tests problems tracker </li></ul></ul><ul><ul><li>Documentation tasks tracker </li></ul></ul>
  12. 12. JIRA issue ( пример)
  13. 13. Пространство для документов проекта ( project Wiki pages ) <ul><li>Confluence </li></ul><ul><li>(Atlassian, http://www.atlassian.com/software/confluence/ ) </li></ul>
  14. 14. Тестирование <ul><ul><li>PHPUnit ( Sebastian Bergmann) http://www.phpunit.de/ </li></ul></ul><ul><ul><li>Continous Integration Server (Atlassian) http://www.atlassian.com/software/bamboo/ </li></ul></ul>
  15. 15. Коммуникации <ul><ul><li>e-mails </li></ul></ul>
  16. 16. Коммуникации <ul><ul><li>e-mails </li></ul></ul><ul><ul><li>Списки рассылки (внутренние/общие/тематические) </li></ul></ul>
  17. 17. Коммуникации <ul><ul><li>e-mails </li></ul></ul><ul><ul><li>Списки рассылки (внутренние/общие/тематические) </li></ul></ul><ul><ul><li>Аудио-конференции ( Skype ) </li></ul></ul>
  18. 18. Коммуникации <ul><ul><li>e-mails </li></ul></ul><ul><ul><li>Списки рассылки (внутренние/общие/тематические) </li></ul></ul><ul><ul><li>Аудио-конференции ( Skype ) </li></ul></ul><ul><ul><li>IRC </li></ul></ul>
  19. 19. Коммуникации <ul><ul><li>e-mails </li></ul></ul><ul><ul><li>Списки рассылки (внутренние/общие/тематические) </li></ul></ul><ul><ul><li>Аудио-конференции ( Skype ) </li></ul></ul><ul><ul><li>IRC </li></ul></ul><ul><ul><li>Обмен текстовыми данными ( http://paste2.org/ ) </li></ul></ul>
  20. 20. http://paste2.org/
  21. 21. Коммуникации <ul><ul><li>e-mails </li></ul></ul><ul><ul><li>Списки рассылки (внутренние/общие/тематические) </li></ul></ul><ul><ul><li>Аудио-конференции ( Skype ) </li></ul></ul><ul><ul><li>IRC </li></ul></ul><ul><ul><li>Обмен текстовыми данными ( http://paste2.org/ ) </li></ul></ul><ul><ul><li>Wiki pages </li></ul></ul>
  22. 22. Коммуникации <ul><ul><li>e-mails </li></ul></ul><ul><ul><li>Списки рассылки (внутренние/общие/тематические) </li></ul></ul><ul><ul><li>Аудио-конференции ( Skype ) </li></ul></ul><ul><ul><li>IRC </li></ul></ul><ul><ul><li>Обмен текстовыми данными ( http://paste2.org/ ) </li></ul></ul><ul><ul><li>Wiki pages </li></ul></ul><ul><ul><li>Web сайт проекта </li></ul></ul>
  23. 23. Модель разработки, используемая в ZF
  24. 24. Цели проекта
  25. 25. Цели проекта <ul><li>Продвижение PHP в корпоративную среду : </li></ul>
  26. 26. Цели проекта <ul><li>Продвижение PHP в корпоративную среду : </li></ul><ul><ul><li>Обеспечить разработчиков framework’ ом, качество которого отвечало бы корпоративным стандартам </li></ul></ul>
  27. 27. Цели проекта <ul><li>Продвижение PHP в корпоративную среду : </li></ul><ul><ul><li>Обеспечить разработчиков framework’ ом, качество которого отвечало бы корпоративным стандартам </li></ul></ul><ul><ul><li>Гарантировать лицензионную чистоту, создаваемого кода </li></ul></ul>
  28. 28. Цели проекта <ul><li>Продвижение PHP в корпоративную среду : </li></ul><ul><ul><li>Обеспечить разработчиков framework’ ом, качество которого отвечало бы корпоративным стандартам </li></ul></ul><ul><ul><li>Гарантировать лицензионную чистоту, создаваемого кода </li></ul></ul><ul><ul><li>Гарантировать поддержку и сопровождение кода </li></ul></ul>
  29. 29. Цели проекта <ul><li>Продвижение PHP в корпоративную среду : </li></ul><ul><ul><li>Обеспечить разработчиков framework’ ом, качество которого отвечало бы корпоративным стандартам </li></ul></ul><ul><ul><li>Гарантировать лицензионную чистоту, создаваемого кода </li></ul></ul><ul><ul><li>Гарантировать поддержку и сопровождение кода </li></ul></ul><ul><li>Популяризация PHP 5 и ОО подхода в PHP </li></ul>
  30. 30. Цели проекта <ul><li>Продвижение PHP в корпоративную среду : </li></ul><ul><ul><li>Обеспечить разработчиков framework’ ом, качество которого отвечало бы корпоративным стандартам </li></ul></ul><ul><ul><li>Гарантировать лицензионную чистоту, создаваемого кода </li></ul></ul><ul><ul><li>Гарантировать поддержку и сопровождение кода </li></ul></ul><ul><li>Популяризация PHP 5 и ОО подхода в PHP </li></ul><ul><ul><li>Представить на примере создаваемого framework’ а пример “ правильного ” использования OO подхода в PHP </li></ul></ul>
  31. 31. Цели проекта <ul><li>Продвижение PHP в корпоративную среду : </li></ul><ul><ul><li>Обеспечить разработчиков framework’ ом, качество которого отвечало бы корпоративным стандартам </li></ul></ul><ul><ul><li>Гарантировать лицензионную чистоту, создаваемого кода </li></ul></ul><ul><ul><li>Гарантировать поддержку и сопровождение кода </li></ul></ul><ul><li>Популяризация PHP 5 и ОО подхода в PHP </li></ul><ul><ul><li>Представить на примере создаваемого framework’ а пример “ правильного ” использования OO подхода в PHP </li></ul></ul><ul><ul><li>Создать спрос на поддержку PHP 5 </li></ul></ul>
  32. 32. Организационная структура команды разработчиков
  33. 33. Организационная структура команды разработчиков Core team 3-5 чел
  34. 34. Организационная структура команды разработчиков Авторы компонент Core team 3-5 чел
  35. 35. Организационная структура команды разработчиков Other contributors Авторы компонент Core team 3-5 чел
  36. 36. Организационная структура команды разработчиков Community Other contributors Авторы компонент Core team 3-5 чел
  37. 37. Этапы развития проекта Zend Framework
  38. 38. Этапы развития проекта Zend Framework <ul><ul><li>Лето 2005 Старт проекта </li></ul></ul>
  39. 39. Этапы развития проекта Zend Framework <ul><ul><li>Лето 2005 Старт проекта </li></ul></ul><ul><ul><li>Апрель 2006 Выход первой публичной версии ( ZF 0.1.3 ) </li></ul></ul>
  40. 40. Этапы развития проекта Zend Framework <ul><ul><li>Лето 2005 Старт проекта </li></ul></ul><ul><ul><li>Апрель 2006 Выход первой публичной версии ( ZF 0.1.3 ) </li></ul></ul><ul><ul><li>Март 2007 Выход первой beta версии ( ZF 0.9.0 ) </li></ul></ul>
  41. 41. Этапы развития проекта Zend Framework <ul><ul><li>Лето 2005 Старт проекта </li></ul></ul><ul><ul><li>Апрель 2006 Выход первой публичной версии ( ZF 0.1.3 ) </li></ul></ul><ul><ul><li>Март 2007 Выход первой beta версии ( ZF 0.9.0 ) </li></ul></ul><ul><ul><li>Конец мая 2007 Выход первого RC ( ZF 1.0.0 RC1 ) </li></ul></ul>
  42. 42. Этапы развития проекта Zend Framework <ul><ul><li>Лето 2005 Старт проекта </li></ul></ul><ul><ul><li>Апрель 2006 Выход первой публичной версии ( ZF 0.1.3 ) </li></ul></ul><ul><ul><li>Март 2007 Выход первой beta версии ( ZF 0.9.0 ) </li></ul></ul><ul><ul><li>Конец мая 2007 Выход первого RC ( ZF 1.0.0 RC1 ) </li></ul></ul><ul><ul><li>30.06.2007 Первая официальная версия framework’ а </li></ul></ul>
  43. 43. Этапы развития проекта Zend Framework <ul><ul><li>Лето 2005 Старт проекта </li></ul></ul><ul><ul><li>Апрель 2006 Выход первой публичной версии ( ZF 0.1.3 ) </li></ul></ul><ul><ul><li>Март 2007 Выход первой beta версии ( ZF 0.9.0 ) </li></ul></ul><ul><ul><li>Конец мая 2007 Выход первого RC ( ZF 1.0.0 RC1 ) </li></ul></ul><ul><ul><li>30.06.2007 Первая официальная версия framework’ а </li></ul></ul><ul><ul><li>Март 2008 Выход первого за v1.0.0 minor релиза ( ZF 1.5.0 ) </li></ul></ul>
  44. 44. Release policy проекта Zend Framework <ul><li>Major releases (X.0.0): </li></ul><ul><ul><li>Может включать изменения, не поддерживающие обратную совместимость. </li></ul></ul><ul><ul><li>Может включать в себя новые фичи </li></ul></ul>
  45. 45. Release policy проекта Zend Framework <ul><li>Major releases (X.0.0): </li></ul><ul><ul><li>Может включать изменения, не поддерживающие обратную совместимость. </li></ul></ul><ul><ul><li>Может включать в себя новые фичи </li></ul></ul><ul><li>Minor releases (n.X.0) </li></ul><ul><ul><li>BC breaks допустимы только для исправления критических ошибок </li></ul></ul><ul><ul><li>Может включать в себя новые фичи </li></ul></ul>
  46. 46. Release policy проекта Zend Framework <ul><li>Major releases (X.0.0): </li></ul><ul><ul><li>Может включать изменения, не поддерживающие обратную совместимость. </li></ul></ul><ul><ul><li>Может включать в себя новые фичи </li></ul></ul><ul><li>Minor releases (n.X.0) </li></ul><ul><ul><li>BC breaks допустимы только для исправления критических ошибок </li></ul></ul><ul><ul><li>Может включать в себя новые фичи </li></ul></ul><ul><li>Mini releases (n.m.X) </li></ul><ul><ul><li>BC breaks допустимы только для исправления критических ошибок </li></ul></ul><ul><ul><li>Может включать только исправления ошибок </li></ul></ul>
  47. 47. Этапы развития проекта Zend Framework <ul><ul><li>Лето 2005 Старт проекта </li></ul></ul><ul><ul><li>Апрель 2006 Выход первой публичной версии ( ZF 0.1.3 ) </li></ul></ul><ul><ul><li>Март 2007 Выход первой beta версии ( ZF 0.9.0 ) </li></ul></ul><ul><ul><li>Конец мая 2007 Выход первого RC ( ZF 1.0.0 RC1 ) </li></ul></ul><ul><ul><li>30.06.2007 Первая официальная версия framework’ а </li></ul></ul><ul><ul><li>Март 2008 Выход первого за v1.0.0 minor релиза ( ZF 1.5.0 ) </li></ul></ul>
  48. 48. Этапы развития проекта Zend Framework <ul><ul><li>Лето 2005 Старт проекта </li></ul></ul><ul><ul><li>Апрель 2006 Выход первой публичной версии ( ZF 0.1.3 ) </li></ul></ul><ul><ul><li>Март 2007 Выход первой beta версии ( ZF 0.9.0 ) </li></ul></ul><ul><ul><li>Конец мая 2007 Выход первого RC ( ZF 1.0.0 RC1 ) </li></ul></ul><ul><ul><li>30.06.2007 Первая официальная версия framework’ а </li></ul></ul><ul><ul><li>Март 2008 Выход первого за v1.0.0 minor релиза ( ZF 1.5.0 ) </li></ul></ul><ul><ul><li>Сентябрь 2008 ZF 1.6.0 </li></ul></ul>
  49. 49. Этапы развития проекта Zend Framework <ul><ul><li>Лето 2005 Старт проекта </li></ul></ul><ul><ul><li>Апрель 2006 Выход первой публичной версии ( ZF 0.1.3 ) </li></ul></ul><ul><ul><li>Март 2007 Выход первой beta версии ( ZF 0.9.0 ) </li></ul></ul><ul><ul><li>Конец мая 2007 Выход первого RC ( ZF 1.0.0 RC1 ) </li></ul></ul><ul><ul><li>30.06.2007 Первая официальная версия framework’ а </li></ul></ul><ul><ul><li>Март 2008 Выход первого за v1.0.0 minor релиза ( ZF 1.5.0 ) </li></ul></ul><ul><ul><li>Сентябрь 2008 ZF 1.6.0 </li></ul></ul><ul><ul><li>Ноябрь 2008 ZF 1. 7 .0 </li></ul></ul><ul><ul><li>Апрель 2009 ZF 1. 8 .0 </li></ul></ul><ul><ul><li>Июль 2009 ZF 1. 9 .0 </li></ul></ul>
  50. 50. Этапы развития проекта Zend Framework Лето 2005 Апрель 2006 30.06.2007 I II III <ul><ul><li>I . Внутренняя разработка. </li></ul></ul><ul><ul><li>II . Период неофициальных версий. </li></ul></ul><ul><ul><li>III . Официальное развитие framework’ а. </li></ul></ul>
  51. 51. Этап I . Внутренняя разработка. <ul><li>Особенности </li></ul><ul><ul><li>Некоторая изолированность разработчиков. </li></ul></ul><ul><ul><li>Разработка производится как в обычном закрытом проекте </li></ul></ul><ul><ul><li>Общение всей команды происходит ~ раз в месяц </li></ul></ul><ul><li>Задачи </li></ul><ul><ul><li>Наработка функционала </li></ul></ul><ul><ul><li>Подготовка среды, в которой будет существовать проект (репозиторий кода, issue tracker, web сайт, … ) </li></ul></ul><ul><ul><li>Отработка процессов релиза framework’ а </li></ul></ul>
  52. 52. Этап II . Период неофициальных версий. <ul><li>Особенности </li></ul><ul><ul><li>Необходимость сверхбыстрого реагирования на обращения пользователей и сторонних разработчиков. </li></ul></ul><ul><ul><li>Отработка методов принятия коллегиальных решений в отношении действий сторонних разработчиков * . </li></ul></ul><ul><ul><li>Общение всей команды происходит ~ раз в неделю. </li></ul></ul><ul><li>Задачи </li></ul><ul><ul><li>Получить версию продукта 1.0.0 </li></ul></ul><ul><ul><li>Привлечение к проекту сторонних разработчиков. </li></ul></ul><ul><ul><li>Получить feedback от первых пользователей продукта </li></ul></ul>
  53. 53. Этап III . Официальное развитие framework'а. <ul><li>Особенности </li></ul><ul><ul><li>Повышенный overhead на коммуникации </li></ul></ul><ul><ul><li>Увеличение доли задач по сопровождению </li></ul></ul><ul><ul><li>Общение всей команды происходит каждый день </li></ul></ul><ul><li>Задачи </li></ul><ul><ul><li>Развитие проекта, поддержка </li></ul></ul>
  54. 54. Вопросы <ul><li>Александр Веремьев [email_address] </li></ul>

×