distributed development practice

54
Практика распределенной разработки в Open-Source проектах. Александр Веремьев (Zend Framework core team) [email protected]

Upload: alexander-veremyev

Post on 07-Jul-2015

675 views

Category:

Technology


0 download

DESCRIPTION

Russian PHPConf 2009Distributed Development Practice presentation

TRANSCRIPT

Page 1: Distributed Development Practice

Практика распределенной разработки в Open-Source проектах.

Александр Веремьев (Zend Framework core team) [email protected]

Page 2: Distributed Development Practice

2

Инструментарий

Page 3: Distributed Development Practice

3

Управление кодом

Репозиторий:

Subversion (на начальных стадиях CVS)http://subversion.tigris.org/

Page 4: Distributed Development Practice

4

Управление кодом

Репозиторий:

Subversion (на начальных стадиях CVS)http://subversion.tigris.org/

Отслеживание изменений, Web интерфейс к репозиторию:

FishEye (Atlassian)http://www.atlassian.com/software/fisheye/

Page 5: Distributed Development Practice

5

FishEye notifications

Page 6: Distributed Development Practice

6

FishEye notifications

Page 7: Distributed Development Practice

7

FishEye code browser

Page 8: Distributed Development Practice

8

Управление задачами

JIRA issue tracker

(Atlassian, http://www.atlassian.com/software/jira/)

Bug tracker

Page 9: Distributed Development Practice

9

Управление задачами

JIRA issue tracker

(Atlassian, http://www.atlassian.com/software/jira/)

Bug tracker

Feature request tracker

Page 10: Distributed Development Practice

10

Управление задачами

JIRA issue tracker

(Atlassian, http://www.atlassian.com/software/jira/)

Bug tracker

Feature request tracker

Unit tests problems tracker

Page 11: Distributed Development Practice

11

Управление задачами

JIRA issue tracker

(Atlassian, http://www.atlassian.com/software/jira/)

Bug tracker

Feature request tracker

Unit tests problems tracker

Documentation tasks tracker

Page 12: Distributed Development Practice

12

JIRA issue (пример)

Page 13: Distributed Development Practice

13

Пространство для документов проекта(project Wiki pages)

Confluence

(Atlassian, http://www.atlassian.com/software/confluence/)

Page 14: Distributed Development Practice

14

Тестирование

PHPUnit (Sebastian Bergmann)http://www.phpunit.de/

Continous Integration Server (Atlassian)http://www.atlassian.com/software/bamboo/

Page 15: Distributed Development Practice

15

Коммуникации

e-mails

Page 16: Distributed Development Practice

16

Коммуникации

e-mails

Списки рассылки (внутренние/общие/тематические)

Page 17: Distributed Development Practice

17

Коммуникации

e-mails

Списки рассылки (внутренние/общие/тематические)

Аудио-конференции (Skype)

Page 18: Distributed Development Practice

18

Коммуникации

e-mails

Списки рассылки (внутренние/общие/тематические)

Аудио-конференции (Skype)

IRC

Page 19: Distributed Development Practice

19

Коммуникации

e-mails

Списки рассылки (внутренние/общие/тематические)

Аудио-конференции (Skype)

IRC

Обмен текстовыми данными (http://paste2.org/)

Page 20: Distributed Development Practice

20

http://paste2.org/

Page 21: Distributed Development Practice

21

Коммуникации

e-mails

Списки рассылки (внутренние/общие/тематические)

Аудио-конференции (Skype)

IRC

Обмен текстовыми данными (http://paste2.org/)

Wiki pages

Page 22: Distributed Development Practice

22

Коммуникации

e-mails

Списки рассылки (внутренние/общие/тематические)

Аудио-конференции (Skype)

IRC

Обмен текстовыми данными (http://paste2.org/)

Wiki pages

Web сайт проекта

Page 23: Distributed Development Practice

23

Модель разработки, используемая в ZF

Page 24: Distributed Development Practice

24

Цели проекта

Page 25: Distributed Development Practice

25

Цели проекта

Продвижение PHP в корпоративную среду:

Page 26: Distributed Development Practice

26

Цели проекта

Продвижение PHP в корпоративную среду:

Обеспечить разработчиков framework’ом, качество которого отвечало бы корпоративным стандартам

Page 27: Distributed Development Practice

27

Цели проекта

Продвижение PHP в корпоративную среду:

Обеспечить разработчиков framework’ом, качество которого отвечало бы корпоративным стандартам

Гарантировать лицензионную чистоту, создаваемого кода

Page 28: Distributed Development Practice

28

Цели проекта

Продвижение PHP в корпоративную среду:

Обеспечить разработчиков framework’ом, качество которого отвечало бы корпоративным стандартам

Гарантировать лицензионную чистоту, создаваемого кода

Гарантировать поддержку и сопровождение кода

Page 29: Distributed Development Practice

29

Цели проекта

Продвижение PHP в корпоративную среду:

Обеспечить разработчиков framework’ом, качество которого отвечало бы корпоративным стандартам

Гарантировать лицензионную чистоту, создаваемого кода

Гарантировать поддержку и сопровождение кода

Популяризация PHP 5 и ОО подхода в PHP

Page 30: Distributed Development Practice

30

Цели проекта

Продвижение PHP в корпоративную среду:

Обеспечить разработчиков framework’ом, качество которого отвечало бы корпоративным стандартам

Гарантировать лицензионную чистоту, создаваемого кода

Гарантировать поддержку и сопровождение кода

Популяризация PHP 5 и ОО подхода в PHP

Представить на примере создаваемого framework’а пример “правильного” использования OO подхода в PHP

Page 31: Distributed Development Practice

31

Цели проекта

Продвижение PHP в корпоративную среду:

Обеспечить разработчиков framework’ом, качество которого отвечало бы корпоративным стандартам

Гарантировать лицензионную чистоту, создаваемого кода

Гарантировать поддержку и сопровождение кода

Популяризация PHP 5 и ОО подхода в PHP

Представить на примере создаваемого framework’а пример “правильного” использования OO подхода в PHP

Создать спрос на поддержку PHP 5

Page 32: Distributed Development Practice

32

Организационная структура команды разработчиков

Page 33: Distributed Development Practice

33

Организационная структура команды разработчиков

Core team3-5 чел

Page 34: Distributed Development Practice

34

Организационная структура команды разработчиков

Авторы компонент

Core team3-5 чел

Page 35: Distributed Development Practice

35

Организационная структура команды разработчиков

Other contributors

Авторы компонент

Core team3-5 чел

Page 36: Distributed Development Practice

36

Community

Организационная структура команды разработчиков

Other contributors

Авторы компонент

Core team3-5 чел

Page 37: Distributed Development Practice

37

Этапы развития проекта Zend Framework

Page 38: Distributed Development Practice

38

Этапы развития проекта Zend Framework

Лето 2005 Старт проекта

Page 39: Distributed Development Practice

39

Этапы развития проекта Zend Framework

Лето 2005 Старт проекта

Апрель 2006 Выход первой публичной версии (ZF 0.1.3)

Page 40: Distributed Development Practice

40

Этапы развития проекта Zend Framework

Лето 2005 Старт проекта

Апрель 2006 Выход первой публичной версии (ZF 0.1.3)

Март 2007 Выход первой beta версии (ZF 0.9.0)

Page 41: Distributed Development Practice

41

Этапы развития проекта Zend Framework

Лето 2005 Старт проекта

Апрель 2006 Выход первой публичной версии (ZF 0.1.3)

Март 2007 Выход первой beta версии (ZF 0.9.0)

Конец мая 2007 Выход первого RC (ZF 1.0.0 RC1)

Page 42: Distributed Development Practice

42

Этапы развития проекта Zend Framework

Лето 2005 Старт проекта

Апрель 2006 Выход первой публичной версии (ZF 0.1.3)

Март 2007 Выход первой beta версии (ZF 0.9.0)

Конец мая 2007 Выход первого RC (ZF 1.0.0 RC1)

30.06.2007 Первая официальная версия framework’а

Page 43: Distributed Development Practice

43

Этапы развития проекта Zend Framework

Лето 2005 Старт проекта

Апрель 2006 Выход первой публичной версии (ZF 0.1.3)

Март 2007 Выход первой beta версии (ZF 0.9.0)

Конец мая 2007 Выход первого RC (ZF 1.0.0 RC1)

30.06.2007 Первая официальная версия framework’а

Март 2008 Выход первого за v1.0.0 minor релиза (ZF 1.5.0)

Page 44: Distributed Development Practice

44

Release policy проекта Zend FrameworkMajor releases (X.0.0):

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

Может включать в себя новые фичи

Page 45: Distributed Development Practice

45

Release policy проекта Zend FrameworkMajor releases (X.0.0):

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

Может включать в себя новые фичи

Minor releases (n.X.0)

BC breaks допустимы только для исправления критических ошибок

Может включать в себя новые фичи

Page 46: Distributed Development Practice

46

Release policy проекта Zend FrameworkMajor releases (X.0.0):

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

Может включать в себя новые фичи

Minor releases (n.X.0)

BC breaks допустимы только для исправления критических ошибок

Может включать в себя новые фичи

Mini releases (n.m.X)

BC breaks допустимы только для исправления критических ошибок

Может включать только исправления ошибок

Page 47: Distributed Development Practice

47

Этапы развития проекта Zend Framework

Лето 2005 Старт проекта

Апрель 2006 Выход первой публичной версии (ZF 0.1.3)

Март 2007 Выход первой beta версии (ZF 0.9.0)

Конец мая 2007 Выход первого RC (ZF 1.0.0 RC1)

30.06.2007 Первая официальная версия framework’а

Март 2008 Выход первого за v1.0.0 minor релиза (ZF 1.5.0)

Page 48: Distributed Development Practice

48

Этапы развития проекта Zend Framework

Лето 2005 Старт проекта

Апрель 2006 Выход первой публичной версии (ZF 0.1.3)

Март 2007 Выход первой beta версии (ZF 0.9.0)

Конец мая 2007 Выход первого RC (ZF 1.0.0 RC1)

30.06.2007 Первая официальная версия framework’а

Март 2008 Выход первого за v1.0.0 minor релиза (ZF 1.5.0)

Сентябрь 2008 ZF 1.6.0

Page 49: Distributed Development Practice

49

Этапы развития проекта Zend Framework

Лето 2005 Старт проекта

Апрель 2006 Выход первой публичной версии (ZF 0.1.3)

Март 2007 Выход первой beta версии (ZF 0.9.0)

Конец мая 2007 Выход первого RC (ZF 1.0.0 RC1)

30.06.2007 Первая официальная версия framework’а

Март 2008 Выход первого за v1.0.0 minor релиза (ZF 1.5.0)

Сентябрь 2008 ZF 1.6.0

Ноябрь 2008 ZF 1.7.0

Апрель 2009 ZF 1.8.0

Июль 2009 ZF 1.9.0

Page 50: Distributed Development Practice

50

Этапы развития проекта Zend Framework

Лето 2005 Апрель 2006 30.06.2007

I II III

I. Внутренняя разработка.

II. Период неофициальных версий.

III. Официальное развитие framework’а.

Page 51: Distributed Development Practice

51

Этап I. Внутренняя разработка.

Особенности

Некоторая изолированность разработчиков.

Разработка производится как в обычном закрытом проекте

Общение всей команды происходит ~раз в месяц

Задачи

Наработка функционала

Подготовка среды, в которой будет существовать проект (репозиторий кода, issue tracker, web сайт, …)

Отработка процессов релиза framework’а

Page 52: Distributed Development Practice

52

Этап II. Период неофициальных версий.

Особенности

Необходимость сверхбыстрого реагирования на обращения пользователей и сторонних разработчиков.

Отработка методов принятия коллегиальных решений в отношении действий сторонних разработчиков*.

Общение всей команды происходит ~раз в неделю.

Задачи

Получить версию продукта 1.0.0

Привлечение к проекту сторонних разработчиков.

Получить feedback от первых пользователей продукта

Page 53: Distributed Development Practice

53

Этап III. Официальное развитие framework'а.

Особенности

Повышенный overhead на коммуникации

Увеличение доли задач по сопровождению

Общение всей команды происходит каждый день

Задачи

Развитие проекта, поддержка

Page 54: Distributed Development Practice

54

Вопросы

Александр Веремьев [email protected]