|
|
Строка 1: |
Строка 1: |
− | <slideshow title="" style="custis" scaled="true" font="Calibri, Segoe Print, cursive" footer="" headingmark="⌘⌘" />
| + | Статья переехала на http://wiki.4intra.net/Wiki-Way |
− | <slidecss view="true">
| + | |
− | big { font-size: 200%; }
| + | |
− | </slidecss>
| + | |
− | <slides float="right" width="300">
| + | |
− | Эволюция Wiki-Way командной разработки
| + | |
− | | + | |
− | Виталий Филиппов, Стас Фомин
| + | |
− | | + | |
− | [http://custis.ru/ CUSTIS]
| + | |
− | </slides>
| + | |
− | | + | |
− | Мы хотим кратко рассказать историю развития open-source систем поддержки разработки в нашем корпоративном интранете, которая чудесным образом совпала с мировой тенденцией развития командной разработки.
| + | |
− | | + | |
− | У нас она начиналась с идей:
| + | |
− | ;Open-Source: нет жестких ограничений — гибкость и опыт масс в одном флаконе.
| + | |
− | ;Wiki + баг-трекер + система контроля версий: достаточно для всего.
| + | |
− | ;Правильная вики ⇒ MediaWiki: мэйнстрим + расширяемость.
| + | |
− | | + | |
− | Кроме того, мы (в конце 2010г) наконец-то выполнили обещание выйти в Open-Source и теперь существует проект {{!|[http://wiki.4intra.net/ 4intra.net]}} («фор интранет», то есть, «для интранета»), который вы можете попробовать своими руками.
| + | |
− | | + | |
− | Например, расширяемость превращает MediaWiki не просто в базу знаний или инструмент документирования, а даёт возможность сделать такие нетривиальные «плюшки», как
| + | |
− | * система информационных потоков (читай — '''форумов и блогов'''),
| + | |
− | * '''презентаций''',
| + | |
− | * '''опросов и экзаменов''',
| + | |
− | * личный «кэш» '''сетевых закладок'''
| + | |
− | и так далее.
| + | |
− | | + | |
− | Не говоря уже о расширенных медиа-возможностях — вставке изображений и видео, графов и графиков, UML и MindMap’ов, TeX и прочих «фичах».
| + | |
− | | + | |
− | О том, как мы пришли к своему выбору, почему он всё больше совпадает с мировой практикой, что представляют из себя все эти, а также многие другие вкусности, реализуемые с помощью <tt>[[MediaWiki]]</tt>, <tt>[[Bugzilla]]</tt>, <tt>[[SVN]]</tt>, <tt>[[ViewVC]]</tt>, <tt>[[FeedOnFeeds]]</tt> и так далее, и о том, куда двигаться дальше, и будет доклад.
| + | |
− | | + | |
− | = Wiki-Way и выбор систем =
| + | |
− | | + | |
− | <slides float="right" width="300" split="-----">
| + | |
− | <h2><big>{{c|#0c0|Парадигма проектирования нового}}</big></h2>
| + | |
− | | + | |
− | <div style="float: left">{{UnscaleImage|Blueprint.png|400}}
| + | |
− | | + | |
− | <big>{{c|red|Инженерная}}</big></div>
| + | |
− | <div style="float: left">{{UnscaleImage|Джамшут-Лестница.png|300|top}}</div>
| + | |
− | | + | |
− | -----
| + | |
− | <h2><big>{{c|#0c0|Парадигма проектирования нового}}</big></h2>
| + | |
− | | + | |
− | [[Файл:ParaWiki.jpg]]
| + | |
− | | + | |
− | <big>{{c|red|Wiki-Way}}</big>
| + | |
− | </slides>
| + | |
− | | + | |
− | При начале разработки дизайн чего-то нового, доселе неизведанного, обычно либо глубоко проектируется в самом начале (''инженерный подход''), либо эволюционирует, начиная с заложенного изначально минимума.
| + | |
− | | + | |
− | ''Wiki-Way'' мы называем именно натуральный эволюционный подход с максимально упрощёнными концепциями. Вообще говоря, кто-то другой мог назвать его ещё как-нибудь — хоть «Web 2.0», хоть «гибкий», хоть «Agile», но мы выбрали термин «{{c|blue|Wiki-Way}}» — Wiki являются его апогеем.
| + | |
− | | + | |
− | Этот конфликт, между «жестким, заданным априори»
| + | |
− | и «гибким, адаптирующимся к меняющимся потребностям пользователя и ограничениям среды»
| + | |
− | встречается повсеместно.
| + | |
− | В культуре разработке кстати тоже, рекомендуем вам взглянуть на книгу «[[lib:Культуры программных проектов (Энтони Лаудер)]]» — там этот конфликт выражен противоречием между «заводской» и «сервисной» культурой (offtopic: с очень неоднозначным положением культуры «дизайнерской»).
| + | |
− | | + | |
− | {{----}}
| + | |
− | | + | |
− | == Выбор систем ==
| + | |
− | | + | |
− | <slides split="-----" float="right" width="400">
| + | |
− | Выбор систем
| + | |
− | ;Ящик Вендора: {{c|#a00|Закрытый, сильносвязанный, платный}}
| + | |
− | ;Велосипед: {{c|#f80|Быстро создать}}, {{c|#a00|тяжело поддерживать}}
| + | |
− | ;Футбол Хоттабыча: {{c|#f80|Кажется идеалом}}, {{c|#a00|Не взлетит}}
| + | |
− | </slides>
| + | |
− | | + | |
− | ;«Ящик Вендора»: Закрытые платные системы крупных производителей («вендоров»).
| + | |
− | ;«Велосипед» или «Лунапарк»: Да, то самое, что нестерпимо хочется изобрести самому, и сделать это обязательно с блекджеком и шлюхами ©.
| + | |
− | ;«Жадный интегратор» или «Футбол Хоттабыча»: поставить все что можно (особенно если бесплатные системы) и потом пытаться все это интегрировать, а пользователей учить всем этим пользоваться.
| + | |
− | | + | |
− | <slides split="-----">
| + | |
− | Ящик Вендора
| + | |
− | | + | |
− | {{UnscaleImage|BlackBox.jpg|400}}
| + | |
− | {{UnscaleImage|Interlinked.gif|400}}
| + | |
− | | + | |
− | {{UnscaleImage|LockedLock.jpg|400}}
| + | |
− | {{UnscaleImage|Handcuffs.jpg|400}}
| + | |
− | | + | |
− | </slides>
| + | |
− | | + | |
− | === Ящик Вендора: Плюсы? Минусы? ⌘⌘ ===
| + | |
− | | + | |
− | <div style="float:right">
| + | |
− | * Платный, вендорский
| + | |
− | ** <s>{{c|#0c0|«☺ Наверное, качественный?»}}</s>
| + | |
− | ** {{c|#a00|☹ Vendor lock-in !}}
| + | |
− | ** {{c|#a00|☹ Может быть и недёшев !}}
| + | |
− | </div>
| + | |
− | * Сильносвязанный
| + | |
− | ** <s style="color: #0c0">«☺ Отлично, всё интегрировано?»</s>
| + | |
− | ** {{c|#a00|☹ Шаг в сторону — считается побег !}}<br />
| + | |
− | ** {{c|#a00|☹ Меньше думать может оказаться вредно}}
| + | |
− | * Закрытый
| + | |
− | ** <s>{{c|#0c0|«☺ Кому в нём копаться?»}}</s>
| + | |
− | ** {{c|#a00|☹ Недостатки не исправить !}}
| + | |
− | | + | |
− | === Велосипед ===
| + | |
− | | + | |
− | <slides>
| + | |
− | '''Велосипед'''
| + | |
− | | + | |
− | [[Файл:Bicycle.gif]]
| + | |
− | </slides>
| + | |
− | | + | |
− | ==== YATUP ⌘⌘ ====
| + | |
− | [[Файл:Yatup.avi.flv]]
| + | |
− | <!--[[Файл:Comics-not-reinvent-a-wheel.svg]]-->
| + | |
− | | + | |
− | <slides>
| + | |
− | Пользователи: *FACEPALM*<br />
| + | |
− | Админы: *FACEPALM*<br />
| + | |
− | Программист: (сбежал)
| + | |
− | </slides>
| + | |
− | | + | |
− | ==== CLOC ⌘⌘ ====
| + | |
− | | + | |
− | * MediaWiki: {{c|blue|185000}} PHP, {{c|#0c0|577000}} локализация
| + | |
− | * Bugzilla 3.6: {{c|blue|72000}} Perl, {{c|#0c0|35000}} TT
| + | |
− | ** 4.0: {{c|blue|+10000}} Perl, {{c|#0c0|+3000}} TT
| + | |
− | | + | |
− | И в них ведь ''есть какой-то смысл'' (!)
| + | |
− | | + | |
− | Может, не стоит писать заново ?
| + | |
− | | + | |
− | <slides split="-----">
| + | |
− | Всё это <span style="color: red; font-size: 200%">☹</span>.
| + | |
− | | + | |
− | А как <span style="color: #0c0; font-size: 200%">☺</span>?
| + | |
− | | + | |
− | ⇒ '''MainStream'''!
| + | |
− | </slides>
| + | |
− | | + | |
− | == Сочетание систем ==
| + | |
− | <slides float="right" width="400">
| + | |
− | <tt>Wiki + трекер + VCS</tt> — cочетание используется всё чаще:
| + | |
− | | + | |
− | [http://trac.edgewall.net/ Trac]
| + | |
− | | + | |
− | [https://github.com GitHub], [https://bitbucket.org/ Bitbucket], [https://code.google.com/ Google Code], [https://launchpad.net/ Launchpad]
| + | |
− | | + | |
− | {{UnscaleImage|Github.png|100}}
| + | |
− | {{UnscaleImage|Bitbucket.png|100}}
| + | |
− | {{UnscaleImage|GoogleCode.jpg|100}}
| + | |
− | </slides>
| + | |
− | | + | |
− | Идея родилась у нас ещё N (≈ '''8''') лет назад<ref>Ну вообще-то, эволюция к этому метастабильному состоянию, была примерно такой:
| + | |
− | * 1996: CVS
| + | |
− | * 2001-2002: Bugzilla
| + | |
− | * 2003: MediaWiki
| + | |
− | но при этом мы таки немного комплексовали, перед «профессионалами» с крутыми системами «поддержки полного жизненного цикла разработки», и только в 2007 году, мы вылезли с [[lib:Интеграция Open Source-систем для управления разработкой ПО (SECR-2007)|этой темой на конференцию]], где внезапно обнаружили, что мы не одиноки, и почти также живут все, включая (!) самих разработчиков этих самых «крутых систем»
| + | |
− | </ref>, а в последнее время, похоже, распространяется всё больше и больше, возьмите хотя бы [http://code.google.com/ Google Code] или любой [https://github.com GitHub] / [https://bitbucket.org/ Bitbucket] / [https://launchpad.net/ Launchpad].
| + | |
− | | + | |
− | Логика была следующая — почти все объекты, с которыми приходится иметь дело разработчику, можно разделить на три части:
| + | |
− | ;Ответственность: то, что нужно сделать или исправить, в каком состоянии какие задачи, проблемы и ошибки, кто за них ответственный и т.п.
| + | |
− | ;Артефакты: всё то, что является результатом разработки. Код, дистрибутивы, отгружаемая документация.
| + | |
− | ;Знания: то, благодаря чему разработка становится возможна. Аналитика, крупные постановки задач, функциональные и нефункциональные требования, документация (внутренняя и внешняя и т.п.).
| + | |
− | | + | |
− | В этой троице каждому из типов соответствует (одна!) своя система, что и даёт такое удобство.
| + | |
− | Wiki для знаний, VCS для артефактов, issue-трекер для задач и багов.
| + | |
− | | + | |
− | Частично они могут пересекаться. На самом деле, набор этих систем столь мощный, что можно «отрубить» одну или даже две, и оставшиеся всё равно будут пытаться «покрывать» большую часть процессов.
| + | |
− | И при этом они будут конкурировать, и вытеснять более специализированные системы<ref>Например, мы пытались понять, почему [[lib:Управление тестами с Testopia — недостающее звено? (SECR-2009)|непопулярны testmanagement-системы]]</ref>.
| + | |
− | Ну и мы знаем несколько неудачных случаев попытки интеграции большего числа более специализированных систем (подобранных по принципу «футбол Хоттабыча» — «для каждого типа объекта в разработке пусть будет самая лучшая специализированная система его учета»)<ref>Мы случайно сохранили типичную презентацию такого подхода, который пыталась реализовать очень сильная команда разработчиков.
| + | |
− | Мы предлагаем взглянуть на слегка обфускированную версию, где мы, чтобы не бросить тень на уважаемую нами компанию, убрали упоминания названия этой компании, а также брендов и торговых марок. [[Файл:Some-good-company-tools.pdf|256px|right]]
| + | |
− | </ref>
| + | |
− | | + | |
− | {{----}}
| + | |
− | | + | |
− | === С чем имеет дело разработчик? ⌘⌘ ===
| + | |
− | | + | |
− | * {{c|red|Код}}, тесты
| + | |
− | * {{c|#f80|Баги, задачи, постановки}}
| + | |
− | * {{c|#0a0|Документация}}
| + | |
− | * {{c|#0a0|Новости, обсуждения}}
| + | |
− | * …
| + | |
− | | + | |
− | <slides split="-----" width="300">
| + | |
− | [[Файл:DevCircles-NoCircles.svg]]
| + | |
− | -----
| + | |
− | [[Файл:DevCircles.svg]]
| + | |
− | -----
| + | |
− | [[Файл:DevCirclesGeneralSystems.svg]]
| + | |
− | -----
| + | |
− | [[Файл:DevCirclesMwBzSvn.svg]]
| + | |
− | -----
| + | |
− | [[Файл:Subversion logo.png]]
| + | |
− | | + | |
− | На данный момент вершина эволюции CVCS :)
| + | |
− | -----
| + | |
− | [[Файл:March-hare-2.jpg]]
| + | |
− | | + | |
− | Ещё жив CVS(nt) ({{@|March Hare}})
| + | |
− | | + | |
− | <small>* А зря nt</small>
| + | |
− | </slides>
| + | |
− | А бешеный заяц на слайде выше — это Мартовский заяц из Диснеевской Алисы в Стране чудес, иллюстрирующий CVSnt, очень сомнительного качества доработанный CVS, произведённый на свет компанией March Hare Software.
| + | |
− | | + | |
− | Кстати, в это трудно поверить, но надо признаться, что у нас в компании до сих пор есть проекты использующие CVS.
| + | |
− | Использование CVS обусловлено накопленным legacy-опытом (специальные утилиты deploy и testing, завязанные на CVS), плюс legacy-технологии таковы, что переход на SVN или DVCS почти ничего не дает (ветвится вокруг неизменной терабайтной базы бессмысленно, переименования серверных пакетов чрезвычайно редки и т.п.).
| + | |
− | В общем, CVS у нас работает, как до сих пор работают паровозы в Китае, и мы рассчитываем, что он отомрет естественно, вместе со сменой legacy-технологий.
| + | |
− | | + | |
− | === ViewVC ===
| + | |
− | [[ViewVC]]<ref>
| + | |
− | Более подробно о нем можно [[lib:Одежка_для_Subversion_-_ViewVC_и_SVNSearcher|почитать]] или [[lib:Одежка для Subversion: ViewVC и SVN-Searcher (SECR-2009)|посмотреть наше выступление на конференции]].
| + | |
− | </ref>.
| + | |
− | | + | |
− | Для нас большой плюс, что он поддерживает и SVN и CVS (см. выше).
| + | |
− | | + | |
− | ==== ViewVC ⌘⌘ ====
| + | |
− | | + | |
− | [[Файл:Viewvc-logo.png|right]] [http://viewvc.org/ ViewVC] → web-интерфейс к CVS & SVN
| + | |
− | | + | |
− | * Его можно считать частью VCS.
| + | |
− | ** <small>У <tt>git</tt> и <tt>hg</tt> веб-интерфейс вообще в стоке.</small>
| + | |
− | * Тоже чуть докручен {{UnscaleImage|Hackwrench.jpg|150}}
| + | |
− | | + | |
− | === Трекер и вики ===
| + | |
− | | + | |
− | <slides split="-----">
| + | |
− | | + | |
− | Трекер: <big>Bugzilla{{refstar}}</big>
| + | |
− | | + | |
− | {{refstar}} при всех недостатках. Самый большой →→→
| + | |
− | | + | |
− | {{c|red|→ Сложность расширения!}}
| + | |
− | | + | |
− | <small>(… кривость объектного движка)</small>
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | Wiki: <big>MediaWiki</big>
| + | |
− | | + | |
− | [[Файл:MediaWiki-notext.svg]]
| + | |
− | | + | |
− | </slides>
| + | |
− | | + | |
− | ==== {{c|blue|Epic Win’ы}} MediaWiki ⌘⌘ ====
| + | |
− | | + | |
− | * Расширяемость: <br /><small style="color: blue">1700 расширений и очень легко пишутся</small>
| + | |
− | * Отсутствие суррогатных ID: <br /><small>http://lib.custis.ru/Как_прекратить_писать_(Андрей_Аксенов_на_ADD-2010)</small>
| + | |
− | * Производительность и кэши: <br /><small style="color: blue">Ну, Wikipedia же ворочается!</small>
| + | |
− | * Локализация: <br /><small style="color: blue">352 локали (!)</small>
| + | |
− | | + | |
− | = Альтернативы =
| + | |
− | | + | |
− | Далее мы рассмотрим некоторые альтернативы своему выбору - может быть, не до конца оптимальному, но выросшему эволюционно и используемому успешно.
| + | |
− | | + | |
− | == VCS ==
| + | |
− | | + | |
− | <slides split="-----" float="right" width="300">
| + | |
− | VCS{{refstar}}
| + | |
− | | + | |
− | {{c|#0a0|Централизованные}} и {{c|blue|распределённые}}
| + | |
− | | + | |
− | {{c|#0a0|CVS, SVN}} → {{c|blue|Git, Mercurial, Bazaar}} (, Monotone, Darcs)
| + | |
− | | + | |
− | ----
| + | |
− | <small>{{refstar}} известно почти всем</small>
| + | |
− | </slides>
| + | |
− | | + | |
− | Что такое VCS (система контроля версий), надеемся, известно всё-таки уже всем<ref>Мы тоже внесли некоторый вклад в «пропаганду VCS», [[lib:Категория:Системы_контроля_версий|сериями статей и переводов]], а также [http://www.slideshare.net/belonesox/cvcsordvcs выступлениями на конференциях]</ref>. Для тех, кто в танке — это система, помогающая хранить не одну версию файлов продукта, а много сразу, в любой момент возвращаться к любой версии, просматривать информацию о версиях и т. п. Первой системой контроля версий был <tt>RCS</tt>, потом из него вырос <tt>CVS</tt>, а после <tt>CVS</tt> появился <tt>Subversion</tt> для «свержения» (англ. ''subversion'') и исправления недостатков <tt>CVS</tt>’а.
| + | |
− | | + | |
− | '''CVS''' и '''Subversion''' — наиболее распространённые представители '''централизованных''' систем, в который репозиторий (хранилище версий) располагается на одном «центральном» сервере, а на компьютерах разработчиков размещаются только «рабочие копии», соответствующие какой-то одной версии. Модной в последнее время альтернативой этому подходу являются '''распределённые''' системы управления версиями, хранящие весь репозиторий в каждой рабочей копии.
| + | |
− | | + | |
− | Что важно для удобства, DVCS поддерживают расширенные возможности отслеживания ветвлений и объединения изменений, потому что без этого объединять безумные графы изменений, приходящих от разных разработчиках в OpenSource проектах, было бы невозможно.
| + | |
− | | + | |
− | Самые известные [[lib:DVCS]] — это [http://git-scm.com Git], [http://mercurial.selenic.com/ Mercurial] (hg) и [http://bazaar.canonical.com/ Bazaar]. Возможно, вы также слышали о [http://darcs.net/ Darcs] и [http://monotone.ca/ Monotone]. Хранение полной истории ревизий в каждой рабочей копии, кроме всего прочего, даёт ещё и «естественное резервное копирование».
| + | |
− | | + | |
− | DVCS сейчас действительно «в моде», это даже подтверждают данные двух одинаковых опросов от 26 октября 2009 и 2010 годов на [http://habrahabr.ru/ Хабре] — SVN и CVS потеряли <tt>3 %</tt> и <tt>5 %</tt>, а <tt>Git</tt> и <tt>Hg</tt> приобрели те же <tt>5.5 %</tt> и <tt>3 %</tt>.
| + | |
− | | + | |
− | {{caution}} <tt>Bazaar</tt>, правда, потерял полпроцента (а [[lib:DVCS YAC|я говорил]]! [http://solovyov.net/blog/2011/01/24/bzr-hate-and-hate/ И не только я]).
| + | |
− | | + | |
− | Так или иначе, производимые ''артефакты'' хранятся в системе контроля версий, этим уже никого не удивишь, запомним это.
| + | |
− | | + | |
− | === Статистика ⌘⌘ ===
| + | |
− | | + | |
− | [[Файл:Habrastat_VCS_2010-10-26.svg]]
| + | |
− | | + | |
− | === DVCS в моде ⌘⌘ ===
| + | |
− | | + | |
− | За год:
| + | |
− | * {{c|blue|Git}}, {{c|blue|Hg}} ↑ {{c|#f80|5.5 %}}, {{c|#f80|3 %}}
| + | |
− | * {{c|#0a0|SVN}}, {{c|#0a0|CVS}} ↓ {{c|#f80| 3 %}}, {{c|#f80|5 %}}
| + | |
− | * {{c|blue|Bazaar}} ↓ {{c|#f80|0.5 %}} ([http://solovyov.net/blog/2011/01/24/bzr-hate-and-hate/ hate and hate])
| + | |
− | | + | |
− | === Недостатки DVCS — текст ===
| + | |
− | | + | |
− | <slides title="Но есть у них и недостатки" float="right" width="300">
| + | |
− | * Размер репозитория растёт: <br /> Собрать Android recovery ⇒ качаем {{c|red|>4.8 Гб :(}}
| + | |
− | * [[lib:Version_Control_and_“the_80%25”|80 % и 20 % разработчиков]]: <br /> Синдром кодовой бомбы
| + | |
− | * <s style="color: red">Несколько проектов в репозитории</s>
| + | |
− | </slides>
| + | |
− | | + | |
− | Есть у DVCS и некоторые недостатки: например, то, что размер репозитория со временем сильно растёт, не очень удобно. Хороший пример — это исходники [http://android.com/ Андроида], хранящиеся в Git. Чтобы попытаться собрать хотя бы recovery (образ «консоли восстановления» для телефона), нужно выкачать '''4.8 Гб''' исходников! Также, [[lib:Version_Control_and_“the_80%25”|говорят]], бывает, что разработчики начинают много коммитить локально, а потом «сбрасывают кодовые бомбы» на остальных. Как к этому относиться — личное дело каждого, можно считать, что виноваты всё-таки разработчики, а не DVCS (те самые «80 %» разработчиков — наверное, быдлокодеров). Также менеджеры негодуэ, потому что невозможен контроль доступа к частям репозитория. Но если это жмёт, нужно просто разбить репозитории на несколько и немного упростить выдачу прав. Ну, а «корпоративный народ» может отнестись к этим системам, пришедшим из мира Opensource, не очень хорошо. В общем и целом, все недостатки решаемые.
| + | |
− | | + | |
− | {{----}}
| + | |
− | | + | |
− | == Bug Tracker ==
| + | |
− | | + | |
− | <slides split="-----" float="right" width="480">
| + | |
− | Учёт задач
| + | |
− | | + | |
− | [[Файл:Habrastat_tasks.svg]]
| + | |
− | | + | |
− | Статистика с хабра, сильно неточная, но {{c|#0a0|даёт повод для размышлений}}
| + | |
− | </slides>
| + | |
− | | + | |
− | '''Bug Tracker''' — это система отслеживания задач (а не только '''ошибок'''). Очень часто «баг» рассматривают именно как «ошибку», хотя это вопрос терминологии — в реальности, «багом» можно назвать любую задачу, запрос и т. п. — любое нечто, исходящее от кого-то одного и требующее реакции от кого-то другого. В силу широты формулировки и наличия большого множества задач, большинство баг-трекеров устроено и выглядит монстровато.
| + | |
− | | + | |
− | Казалось бы, и баг-трекером уже никого не удивишь, но оказывается, и это не так. Часто для разных задач используется всё что угодно, но только не баг-трекер. Причиной для этого может являться чрезмерная «специфичность» используемой системы, когда менеджерским взглядом в неё вкручены диаграммы Ганта и прочие радости (один из разработчиков Luxproject’а использует для разных задач '''всё что угодно, только не Luxproject'''<ref>Пруфлинк, см. [[lib:KISS or my own time-management best practice (Антон Зотин, Stratoplan World, 2011-05-17)]], начиная с 23:00. См. также [[lib:Time Management для программиста (Михаил Гедзберг, ADD-2011)]], где опять-таки менеджер из LuxSофта пользуется исключительно Outlookом.</ref>).
| + | |
− | | + | |
− | | + | |
− | === Bug Tracker ⌘⌘ ===
| + | |
− | | + | |
− | * {{c|red|text = «Bug» != «Ошибка» ! ! !}}
| + | |
− | * «Bug» = {{c|#0a0|∀ (любая)}} задача:
| + | |
− | ** Ошибка, запрос фичи, вопрос поддержке
| + | |
− | | + | |
− | Хотя различать любят:
| + | |
− | | + | |
− | <blockquote style="color: blue; font-size: 70%">…I define a bug as behavior in a «Done» story that violates valid expectations…</blockquote>
| + | |
− | | + | |
− | <slides split="-----">
| + | |
− | | + | |
− | Примеры
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>[http://www.graphviz.org/bugs/buglist.html Minimalistic]</big>
| + | |
− | | + | |
− | {{UnscaleImage|GraphvizBugs1.png|300}}{{UnscaleImage|GraphvizBugs.png|300}}{{UnscaleImage|GraphvizBugs2.png|300}}
| + | |
− | | + | |
− | (баги в Graphviz) <big>☺</big>
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>Bugzilla</big>
| + | |
− | | + | |
− | [[Файл:BugzillaBugForm.png]]
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>Mantis</big>
| + | |
− | | + | |
− | [[Файл:MantisBTForm.png]]
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>Jira</big>
| + | |
− | | + | |
− | [[Файл:ProjectManagementWithJiraGreenHopper.pdf|page=17|600px]]
| + | |
− | {{UnscaleImage|JiraIssueForm.png|600}}
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>Roundup</big>
| + | |
− | | + | |
− | [[Файл:RoundupBugForm.png]]
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>Trac {{refstar}}</big>
| + | |
− | | + | |
− | [[Файл:TracBugForm.png]]
| + | |
− | | + | |
− | {{refstar}} Не только Bug Tracker
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>Баги на Google Code {{refstar}}</big>
| + | |
− | | + | |
− | [[Файл:GoogleCodeBugForm.png]]
| + | |
− | | + | |
− | {{refstar}} Посимпатичнее, но и возможностей мало
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | А так — все {{c|blue|похожи}}, все {{c|#0a0|монстроваты}}
| + | |
− | | + | |
− | [[File:Note.svg]] Как ни странно, даже Minimalistic
| + | |
− | | + | |
− | И Jira — хотели переписать багзиллу, а вышло страшнее :)
| + | |
− | | + | |
− | </slides>
| + | |
− | | + | |
− | == Wiki ==
| + | |
− | | + | |
− | <slides float="right" width="400" split="-----" title="Wiki">
| + | |
− | * [http://c2.com/cgi-bin/wiki Первая Wiki] — 1995 («WikiWikiWeb»).
| + | |
− | * В честь автобусов {{c|blue|«Wiki Wiki Shuttle»}} в аэропорту Гонолулу, вместо «Quick Web»
| + | |
− | * Принципы Wiki:
| + | |
− | ** {{c|#0a0|☺ Быстрая правка}}
| + | |
− | ** {{c|#0a0|☺ Plaintext разметка}}
| + | |
− | ** {{c|#0a0|☺ Версионность}}
| + | |
− | </slides>
| + | |
− | | + | |
− | Сейчас на дворе уже третье тысячелетие, через пару лет, то ли конец света будет, то ли Великая Сингулярность, то ли нефть кончится,
| + | |
− | и рассказывать что такое вики-системы и чем они хороши, вроде как страшный баян.
| + | |
− | И все же, если вдруг будет время, то у нас (опять-таки!), есть статья и выступление на конференции по этой теме<ref>См. [[lib:MediaWiki — Серебряная пуля или швейцарский нож?]] — почему вики-системы стали так популярны, и чем хороша именно MediaWiki.</ref>.
| + | |
− | | + | |
− | === Вики-движки ⌘⌘ ===
| + | |
− | | + | |
− | http://wikimatrix.org/ - вики-движков {{c|blue|> 130!}}
| + | |
− | | + | |
− | Популярные:
| + | |
− | <tab sep="bar" class="wikitable" head="top">
| + | |
− | [http://mediawiki.org/ MediaWiki]<br />{{UnscaleImage|MediaWiki-notext.svg|64}}<br /> (Wikipedia) | [http://moinmo.in/ MoinMoin]<br />{{UnscaleImage|Moinmoin.svg|64}} | [http://dokuwiki.org/ DokuWiki]<br />{{UnscaleImage|Dokuwiki-128.png|64}}
| + | |
− | </tab>
| + | |
− | | + | |
− | === Win / Fail ⌘⌘ ===
| + | |
− | | + | |
− | {{c|#0a0|Win}}: гипертекст<sup>в абсолюте</sup> ! <span style="font-size: 150%; color: #0a0">☺</span>
| + | |
− | | + | |
− | {{c|#b00|Fail}}: плохо с атрибутикой <span style="font-size: 150%; color: #b00">☹</span>
| + | |
− | * Однако, гипертекст rules, если есть поиск{{refstar}}
| + | |
− | * Есть [http://semantic-mediawiki.org/ Semantic MediaWiki]
| + | |
− | | + | |
− | <small>{{refstar}} Goo… Guess who?</small>
| + | |
− | | + | |
− | <slides split="-----">
| + | |
− | | + | |
− | <big>Wikipedia</big>
| + | |
− | | + | |
− | [[Файл:RupediaMain.png]]
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>MoinMoin</big>
| + | |
− | | + | |
− | [[File:DebianWikiMain.png]]
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>DokuWiki</big>
| + | |
− | | + | |
− | [[File:DokuwikiMain.png]]
| + | |
− | | + | |
− | </slides>
| + | |
− | | + | |
− | = [http://4intra.net/ 4intra.net] и наши доработки =
| + | |
− | | + | |
− | Однако «дикая» MediaWiki для компании-разработчика не особо хороша,
| + | |
− | и конечно при сравнении «в лоб» проигрывает «специально обученным корпоративным вики-системам».
| + | |
− | | + | |
− | Но если «укротить» и немного обработать напильником, MediaWiki становится фантастически удобной системой для
| + | |
− | компании-разработчика, решающая практически все проблемы управления знаниями, требованиями, тестами и т. п., которые могут возникнуть<ref>
| + | |
− | Тут мы очень рекомендуем вам взглянуть на наши доклады [[lib:Knowledge Management: От Склада к Потоку (Software People-2010)]], [[lib:Все блюда для интранета из MediaWiki: ВикиБлоги, ВикиПрезентации, ВикиЭкзамены и ВикиЗакладки (Виталий Филиппов на ADD-2010)]] и статью [[lib:Оранжерея знаний с MediaWiki]].</ref>.
| + | |
− | | + | |
− | Затратив еще немного сил (как обычно, с использованием «напильника и такой-то матери»), можно эффективно «увязать» то небольшое число готовых, вышеупомянутых систем, получив шикарный интранет-разработчика «with Black Jack & Hookers»©<ref>Рекомендуем взглянуть на [[lib:Свободные системы, спасающие разработчиков (РИТ-2010)]]</ref>.
| + | |
− | | + | |
− | И мы уже прошли этот путь, отобрали самые интересные расширения, доработали и переработали их, написали кучу своих, и даже решали проблемы производительности и разгона<ref>См. [[lib:PHP-разгон: серебряная пуля из автомата Комменца-Вальтера (Commentz-Walter)]]</ref>, управления правами (самое уязвимое место «природной MediaWiki»), научив все веб-системы не только «плеваться почтой», но и смиренно отдавать RSS-feedы, а всех сотрудников — пользоваться RSS-агрегаторами (и даже развернув корпоративный «Google Reader» — [[FeedOnFeeds]].
| + | |
− | И все это готовое предлагаем вам совершенно свободно и даром<ref>"Счастье всем, даром, и пусть никто не уйдет обиженным!" ©</ref>.
| + | |
− | | + | |
− | Нет, это не было изобретением велосипедов, объем доработок по сравнению с объемом trunkа был невелик, сначала это было практически хобби (10 % времени) одного [http://belonesox.moikrug.ru веб-любителя], но теперь этим (хотя и не на 100 %) стал заниматься настоящий [http://yourcmc.ru/wiki/User:VitaliyFilippov веб-профессионал], и нам уже не стыдно выкладывать все это в open-source.
| + | |
− | | + | |
− | Кроме того, большинство доработок оформлены в виде расширений ''MediaWiki'', и поэтому в будущем не умрут, как это обычно случается с «велосипедами», а останутся рабочими и доступными для сообщества.
| + | |
− | | + | |
− | === FeedOnFeeds ⌘⌘ ===
| + | |
− | [[Файл:Feed-on-feeds.avi.flv]]
| + | |
− | | + | |
− | === [http://wiki.4intra.net/ 4intra.net] ⌘⌘ ===
| + | |
− | | + | |
− | Opensource с декабря 2010
| + | |
− | | + | |
− | * [http://wiki.4intra.net/MediaWiki4Intranet MediaWiki4Intranet]
| + | |
− | ** <small>~60 расширений, ~40 патчей, установка <tt>hg clone</tt></small>
| + | |
− | * [http://wiki.4intra.net/Bugzilla4Intranet Bugzilla4Intranet]
| + | |
− | ** <small>> 100 фич/изменений</small>
| + | |
− | | + | |
− | === Mindmap ⌘⌘ ===
| + | |
− | [[Файл:Tools-4intranet.mm]]
| + | |
− | | + | |
− | | + | |
− | === Медиавозможности ⌘⌘ ===
| + | |
− | | + | |
− | * [[Справка:Формулы|LaTeX]]
| + | |
− | * [[Graphviz]], [[Справка:UML|UML]], [[Gnuplot]]
| + | |
− | * SVG, PDF, DjVu, TIFF, [[Справка:Изображения|Flash Video]], Mindmap
| + | |
− | * [[Справка:Коды|подсветка синтаксиса]]
| + | |
− | | + | |
− | === Wiki-плюшки ⌘⌘ ===
| + | |
− | | + | |
− | {| class="wikitable" border="1"
| + | |
− | |
| + | |
− | * Презентации
| + | |
− | * Блоги/форумы{{refstar}}
| + | |
− | * Календарь
| + | |
− | * Опросы, экзамены
| + | |
− | ||
| + | |
− | * ВикиЗакладки
| + | |
− | * Развесистые права
| + | |
− | * Импорт/экспорт
| + | |
− | * ...
| + | |
− | |}
| + | |
− | | + | |
− | <small>{{refstar}} что почти одно и то же</small>
| + | |
− | | + | |
− | <slides split="-----">
| + | |
− | Презентации S<sup>5</sup>{{refstar|#0a0}}
| + | |
− | | + | |
− | <small>HTML+JS, порождаемый из Plaintext</small>
| + | |
− | | + | |
− | <small>{{refstar|#0a0}} такую вы смотрите сейчас</small>
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | Блоги/форумы{{refstar}}
| + | |
− | | + | |
− | <small>{{refstar}} Разница лишь в способе отображения</small>
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | <big>Календарь</big>
| + | |
− | | + | |
− | Резервирование переговорки и т.п…
| + | |
− | | + | |
− | [[Файл:WikiCalendar.png]]
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | IntraACL ({{c|#f80|Сильно развесистые права}})
| + | |
− | | + | |
− | [[Файл:IntraACL rights targets.svg]]
| + | |
− | [[Файл:IntraACL inherit.svg]]
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | Примеры фич Bugzilla4Intranet:
| + | |
− | | + | |
− | <small style="color: #0a0">* При в целом том же внешнем виде</small>
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | Excel-импорт/экспорт
| + | |
− | | + | |
− | [[File:BugsXLSImport.png]]
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | Массовая загрузка вложений
| + | |
− | | + | |
− | [[File:BugzillaAddMultiple.png]]
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | «Excuse-me» (ошибка с котёнком)
| + | |
− | | + | |
− | [[File:KittenErrorNew.jpg]]
| + | |
− | | + | |
− | <span style="font-size: 200%">☺</span>
| + | |
− | | + | |
− | -----
| + | |
− | | + | |
− | Email-управление, поиск с морфологией, HTML-почта, улучшения Custom полей
| + | |
− | | + | |
− | [http://wiki.4intra.net/Bugzilla4Intranet И так далее]
| + | |
− | | + | |
− | </slides>
| + | |
− | | + | |
− | | + | |
− | == Интеграция ⌘⌘ ==
| + | |
− | | + | |
− | | + | |
− | [[File:Tracker-to-vcs.avi.flv]]
| + | |
− | | + | |
− | | + | |
− | | + | |
− | === Ещё интеграция ⌘⌘ ===
| + | |
− | | + | |
− | | + | |
− | [[File:Wiki-to-tracker.avi.flv]]
| + | |
− | | + | |
− | | + | |
− | == Куда двигаться дальше? ⌘⌘ ==
| + | |
− | | + | |
− | * Правильная Bugzilla
| + | |
− | ** {{c|#f80|???}} а стоит ли?
| + | |
− | * Тесты, code review → {{c|#0a0|Wiki}}
| + | |
− | * Semantic Wiki
| + | |
− | | + | |
− | == Правильная Bugzilla ⌘⌘ ==
| + | |
− | | + | |
− | * С одной стороны, Bugzilla {{c|red|отстаёт от ''bleeding-edge''}}
| + | |
− | ** {{c|#f80|Usability}} + {{c|#a00|Refactoring}}
| + | |
− | * Зато пока остальные делают {{UnscaleImage|Bicycle.gif|32}}{{UnscaleImage|Bicycle.gif|32}}{{UnscaleImage|Bicycle.gif|32}}{{UnscaleImage|Bicycle.gif|32}}, {{c|blue|она сохраняет HTML-простоту}}
| + | |
− | * {{c|#0a0|А потом нагонит на стандартах}}
| + | |
− | | + | |
− | === [http://www.linux.org.ru/news/debian/5681284 LOR, Debian vs Ubuntu] ⌘⌘ ===
| + | |
− | | + | |
− | <blockquote>
| + | |
− | ''> этих хомячков в сотни раз больше и именно на них ориентируюся производители ОС''
| + | |
− | | + | |
− | Когда делают операционную систему по dfsg, тогда ориентируются, прежде всего, на dfsg, а не играют в волшебников с голубыми вертолётами «хрен с ней, со свободой, главное игрушки». И благодаря этим неволшебникам, и существует, в том числе и убунта.
| + | |
− | | + | |
− | Ну будет Debian делать всё, как убунта, получится две убунты и ни одного дебиана, и, как следствие, ни одной убунты.
| + | |
− | | + | |
− | Не учите отцов, как им делать. Особенно, если вообще ничего не понимаете и ничего не решаете, а просто плывёте в потоке, ведь это единственные, кто думают о вашем завтра, чтобы не оказалось, что завтра вы уже не контролируете ровным счётом ничего.
| + | |
− | </blockquote>
| + | |
− | | + | |
− | === {{c|#f80|Usability}} ⌘⌘ ===
| + | |
− | | + | |
− | <div class="floatright">{{UnscaleImage|Rugby_scrum.jpg|200}}</div>
| + | |
− | * JS grid
| + | |
− | * «Форум-функционал»
| + | |
− | * Agile
| + | |
− | ** (вкрутить разумный минимум)
| + | |
− | {{----}}
| + | |
− | | + | |
− | === {{c|#a00|Refactoring}} ⌘⌘ ===
| + | |
− | | + | |
− | * Переделать систему прав{{refstar}}
| + | |
− | ** <small>{{refstar}} кто-то понимает MANDATORY/SHOWN/DEFAULT/NA ?</small>
| + | |
− | * {{UnscaleImage|Pistol-icon.png|32}} убить YAHOO UI {{c|#0a0|→ jQuery}}
| + | |
− | * {{UnscaleImage|Pistol-icon.png|32}} копипасту {{c|#0a0|→ прокачать объектный движок}}
| + | |
− | * {{UnscaleImage|Pistol-icon.png|32}} CGI.pm {{c|red|(детище 90-х…)}}
| + | |
− | * {{UnscaleImage|Pistol-icon.png|32}} Template Toolkit
| + | |
− | ** или хотя бы {{UnscaleImage|Pistol-icon.png|32}} обратную связь из шаблонов
| + | |
− | | + | |
− | == Semantic Wiki ⌘⌘ ==
| + | |
− | | + | |
− | * «Семантическая Wiki»,
| + | |
− | * Она же {{c|#0a0|Wiki с атрибутикой}} - http://semantic-mediawiki.org/
| + | |
− | * Semantic Tracker
| + | |
− | ** {{c|red|В пень Custom Fields!}}
| + | |
− | | + | |
− | = Примечания =
| + | |
− | <references/>
| + | |
− | | + | |
− | {{replicate-from-custiswiki-to-lib}}
| + | |
− | {{replicate-from-custiswiki-to-tools}}
| + | |