Distributed Development Practice

902 views

Published on

Russian PHPConf 2009
Distributed Development Practice presentation

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
902
On SlideShare
0
From Embeds
0
Number of Embeds
238
Actions
Shares
0
Downloads
5
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

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>

×