|
Эволюция Wiki-Way командной разработки/Презентация — различия между версиями
Материал из CustisWiki
|
|
Строка 1: |
Строка 1: |
− | Статья переехала на http://wiki.4intra.net/Wiki-Way
| + | <slideshow title="" style="custis" scaled="true" font="Calibri, Segoe Print, cursive" footer="" headingmark="⌘⌘" /> |
| + | <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-4intranet}} |
Текущая версия на 17:53, 5 апреля 2012
- Автор
- Стас Фомин
- Дополнительный нижний колонтитул
- Стас Фомин, 17:53, 5 апреля 2012
Эволюция Wiki-Way командной разработки
Виталий Филиппов, Стас Фомин
CUSTIS
Мы хотим кратко рассказать историю развития open-source систем поддержки разработки в нашем корпоративном интранете, которая чудесным образом совпала с мировой тенденцией развития командной разработки.
У нас она начиналась с идей:
- Open-Source
- нет жестких ограничений — гибкость и опыт масс в одном флаконе.
- Wiki + баг-трекер + система контроля версий
- достаточно для всего.
- Правильная вики ⇒ MediaWiki
- мэйнстрим + расширяемость.
Кроме того, мы (в конце 2010г) наконец-то выполнили обещание выйти в Open-Source и теперь существует проект 4intra.net («фор интранет», то есть, «для интранета»), который вы можете попробовать своими руками.
Например, расширяемость превращает MediaWiki не просто в базу знаний или инструмент документирования, а даёт возможность сделать такие нетривиальные «плюшки», как
- система информационных потоков (читай — форумов и блогов),
- презентаций,
- опросов и экзаменов,
- личный «кэш» сетевых закладок
и так далее.
Не говоря уже о расширенных медиа-возможностях — вставке изображений и видео, графов и графиков, UML и MindMap’ов, TeX и прочих «фичах».
О том, как мы пришли к своему выбору, почему он всё больше совпадает с мировой практикой, что представляют из себя все эти, а также многие другие вкусности, реализуемые с помощью MediaWiki, Bugzilla, SVN, ViewVC, FeedOnFeeds и так далее, и о том, куда двигаться дальше, и будет доклад.
Wiki-Way и выбор систем
Парадигма проектирования нового
Инженерная
Парадигма проектирования нового
Wiki-Way
При начале разработки дизайн чего-то нового, доселе неизведанного, обычно либо глубоко проектируется в самом начале (инженерный подход), либо эволюционирует, начиная с заложенного изначально минимума.
Wiki-Way мы называем именно натуральный эволюционный подход с максимально упрощёнными концепциями. Вообще говоря, кто-то другой мог назвать его ещё как-нибудь — хоть «Web 2.0», хоть «гибкий», хоть «Agile», но мы выбрали термин «Wiki-Way» — Wiki являются его апогеем.
Этот конфликт, между «жестким, заданным априори»
и «гибким, адаптирующимся к меняющимся потребностям пользователя и ограничениям среды»
встречается повсеместно.
В культуре разработке кстати тоже, рекомендуем вам взглянуть на книгу «lib:Культуры программных проектов (Энтони Лаудер)» — там этот конфликт выражен противоречием между «заводской» и «сервисной» культурой (offtopic: с очень неоднозначным положением культуры «дизайнерской»).
Выбор систем
Выбор систем
- Ящик Вендора
- Закрытый, сильносвязанный, платный
- Велосипед
- Быстро создать, тяжело поддерживать
- Футбол Хоттабыча
- Кажется идеалом, Не взлетит
- «Ящик Вендора»
- Закрытые платные системы крупных производителей («вендоров»).
- «Велосипед» или «Лунапарк»
- Да, то самое, что нестерпимо хочется изобрести самому, и сделать это обязательно с блекджеком и шлюхами ©.
- «Жадный интегратор» или «Футбол Хоттабыча»
- поставить все что можно (особенно если бесплатные системы) и потом пытаться все это интегрировать, а пользователей учить всем этим пользоваться.
Ящик Вендора: Плюсы? Минусы? ⌘⌘
- Платный, вендорский
-
«☺ Наверное, качественный?»
- ☹ Vendor lock-in !
- ☹ Может быть и недёшев !
- Сильносвязанный
-
«☺ Отлично, всё интегрировано?»
- ☹ Шаг в сторону — считается побег !
- ☹ Меньше думать может оказаться вредно
- Закрытый
-
«☺ Кому в нём копаться?»
- ☹ Недостатки не исправить !
Велосипед
Велосипед
YATUP ⌘⌘
Пользователи: *FACEPALM*
Админы: *FACEPALM*
Программист: (сбежал)
CLOC ⌘⌘
- MediaWiki: 185000 PHP, 577000 локализация
- Bugzilla 3.6: 72000 Perl, 35000 TT
- 4.0: +10000 Perl, +3000 TT
И в них ведь есть какой-то смысл (!)
Может, не стоит писать заново ?
Всё это ☹.
А как ☺?
⇒ MainStream!
Сочетание систем
Идея родилась у нас ещё N (≈ 8) лет назад[1], а в последнее время, похоже, распространяется всё больше и больше, возьмите хотя бы Google Code или любой GitHub / Bitbucket / Launchpad.
Логика была следующая — почти все объекты, с которыми приходится иметь дело разработчику, можно разделить на три части:
- Ответственность
- то, что нужно сделать или исправить, в каком состоянии какие задачи, проблемы и ошибки, кто за них ответственный и т.п.
- Артефакты
- всё то, что является результатом разработки. Код, дистрибутивы, отгружаемая документация.
- Знания
- то, благодаря чему разработка становится возможна. Аналитика, крупные постановки задач, функциональные и нефункциональные требования, документация (внутренняя и внешняя и т.п.).
В этой троице каждому из типов соответствует (одна!) своя система, что и даёт такое удобство.
Wiki для знаний, VCS для артефактов, issue-трекер для задач и багов.
Частично они могут пересекаться. На самом деле, набор этих систем столь мощный, что можно «отрубить» одну или даже две, и оставшиеся всё равно будут пытаться «покрывать» большую часть процессов.
И при этом они будут конкурировать, и вытеснять более специализированные системы[2].
Ну и мы знаем несколько неудачных случаев попытки интеграции большего числа более специализированных систем (подобранных по принципу «футбол Хоттабыча» — «для каждого типа объекта в разработке пусть будет самая лучшая специализированная система его учета»)[3]
С чем имеет дело разработчик? ⌘⌘
- Код, тесты
- Баги, задачи, постановки
- Документация
- Новости, обсуждения
- …
![DevCircles-NoCircles.svg](/images/2/23/DevCircles-NoCircles.svg)
- ↑ Ну вообще-то, эволюция к этому метастабильному состоянию, была примерно такой:
- 1996: CVS
- 2001-2002: Bugzilla
- 2003: MediaWiki
но при этом мы таки немного комплексовали, перед «профессионалами» с крутыми системами «поддержки полного жизненного цикла разработки», и только в 2007 году, мы вылезли с этой темой на конференцию, где внезапно обнаружили, что мы не одиноки, и почти также живут все, включая (!) самих разработчиков этих самых «крутых систем»
- ↑ Например, мы пытались понять, почему непопулярны testmanagement-системы
- ↑ Мы случайно сохранили типичную презентацию такого подхода, который пыталась реализовать очень сильная команда разработчиков.
Мы предлагаем взглянуть на слегка обфускированную версию, где мы, чтобы не бросить тень на уважаемую нами компанию, убрали упоминания названия этой компании, а также брендов и торговых марок.
На данный момент вершина эволюции CVCS :)
Ещё жив CVS(nt) (March Hare)
* А зря nt
А бешеный заяц на слайде выше — это Мартовский заяц из Диснеевской Алисы в Стране чудес, иллюстрирующий CVSnt, очень сомнительного качества доработанный CVS, произведённый на свет компанией March Hare Software.
Кстати, в это трудно поверить, но надо признаться, что у нас в компании до сих пор есть проекты использующие CVS.
Использование CVS обусловлено накопленным legacy-опытом (специальные утилиты deploy и testing, завязанные на CVS), плюс legacy-технологии таковы, что переход на SVN или DVCS почти ничего не дает (ветвится вокруг неизменной терабайтной базы бессмысленно, переименования серверных пакетов чрезвычайно редки и т.п.).
В общем, CVS у нас работает, как до сих пор работают паровозы в Китае, и мы рассчитываем, что он отомрет естественно, вместе со сменой legacy-технологий.
ViewVC
ViewVC[1].
Для нас большой плюс, что он поддерживает и SVN и CVS (см. выше).
ViewVC ⌘⌘
ViewVC → web-интерфейс к CVS & SVN
- Его можно считать частью VCS.
- У git и hg веб-интерфейс вообще в стоке.
- Тоже чуть докручен
![Hackwrench.jpg](/images/d/d0/Hackwrench.jpg)
Трекер и вики
Wiki: MediaWiki
Epic Win’ы MediaWiki ⌘⌘
Альтернативы
Далее мы рассмотрим некоторые альтернативы своему выбору - может быть, не до конца оптимальному, но выросшему эволюционно и используемому успешно.
VCS
VCS*
Централизованные и распределённые
CVS, SVN → Git, Mercurial, Bazaar (, Monotone, Darcs)
* известно почти всем
Что такое VCS (система контроля версий), надеемся, известно всё-таки уже всем[1]. Для тех, кто в танке — это система, помогающая хранить не одну версию файлов продукта, а много сразу, в любой момент возвращаться к любой версии, просматривать информацию о версиях и т. п. Первой системой контроля версий был RCS, потом из него вырос CVS, а после CVS появился Subversion для «свержения» (англ. subversion) и исправления недостатков CVS’а.
CVS и Subversion — наиболее распространённые представители централизованных систем, в который репозиторий (хранилище версий) располагается на одном «центральном» сервере, а на компьютерах разработчиков размещаются только «рабочие копии», соответствующие какой-то одной версии. Модной в последнее время альтернативой этому подходу являются распределённые системы управления версиями, хранящие весь репозиторий в каждой рабочей копии.
Что важно для удобства, DVCS поддерживают расширенные возможности отслеживания ветвлений и объединения изменений, потому что без этого объединять безумные графы изменений, приходящих от разных разработчиках в OpenSource проектах, было бы невозможно.
Самые известные lib:DVCS — это Git, Mercurial (hg) и Bazaar. Возможно, вы также слышали о Darcs и Monotone. Хранение полной истории ревизий в каждой рабочей копии, кроме всего прочего, даёт ещё и «естественное резервное копирование».
DVCS сейчас действительно «в моде», это даже подтверждают данные двух одинаковых опросов от 26 октября 2009 и 2010 годов на Хабре — SVN и CVS потеряли 3 % и 5 %, а Git и Hg приобрели те же 5.5 % и 3 %.
Bazaar, правда, потерял полпроцента (а я говорил! И не только я).
Так или иначе, производимые артефакты хранятся в системе контроля версий, этим уже никого не удивишь, запомним это.
Статистика ⌘⌘
DVCS в моде ⌘⌘
За год:
- Git, Hg ↑ 5.5 %, 3 %
- SVN, CVS ↓ 3 %, 5 %
- Bazaar ↓ 0.5 % (hate and hate)
Недостатки DVCS — текст
Есть у DVCS и некоторые недостатки: например, то, что размер репозитория со временем сильно растёт, не очень удобно. Хороший пример — это исходники Андроида, хранящиеся в Git. Чтобы попытаться собрать хотя бы recovery (образ «консоли восстановления» для телефона), нужно выкачать 4.8 Гб исходников! Также, говорят, бывает, что разработчики начинают много коммитить локально, а потом «сбрасывают кодовые бомбы» на остальных. Как к этому относиться — личное дело каждого, можно считать, что виноваты всё-таки разработчики, а не DVCS (те самые «80 %» разработчиков — наверное, быдлокодеров). Также менеджеры негодуэ, потому что невозможен контроль доступа к частям репозитория. Но если это жмёт, нужно просто разбить репозитории на несколько и немного упростить выдачу прав. Ну, а «корпоративный народ» может отнестись к этим системам, пришедшим из мира Opensource, не очень хорошо. В общем и целом, все недостатки решаемые.
Bug Tracker
Учёт задач
Статистика с хабра, сильно неточная, но даёт повод для размышлений
Bug Tracker — это система отслеживания задач (а не только ошибок). Очень часто «баг» рассматривают именно как «ошибку», хотя это вопрос терминологии — в реальности, «багом» можно назвать любую задачу, запрос и т. п. — любое нечто, исходящее от кого-то одного и требующее реакции от кого-то другого. В силу широты формулировки и наличия большого множества задач, большинство баг-трекеров устроено и выглядит монстровато.
Казалось бы, и баг-трекером уже никого не удивишь, но оказывается, и это не так. Часто для разных задач используется всё что угодно, но только не баг-трекер. Причиной для этого может являться чрезмерная «специфичность» используемой системы, когда менеджерским взглядом в неё вкручены диаграммы Ганта и прочие радости (один из разработчиков Luxproject’а использует для разных задач всё что угодно, только не Luxproject[1]).
Bug Tracker ⌘⌘
- «Bug» != «Ошибка» ! ! !
- «Bug» = ∀ (любая) задача:
- Ошибка, запрос фичи, вопрос поддержке
Хотя различать любят:
…I define a bug as behavior in a «Done» story that violates valid expectations…
Bugzilla
Mantis
Jira
Roundup
Trac *
* Не только Bug Tracker
Баги на Google Code *
* Посимпатичнее, но и возможностей мало
А так — все похожи, все монстроваты
Как ни странно, даже Minimalistic
И Jira — хотели переписать багзиллу, а вышло страшнее :)
Wiki
Wiki
- Первая Wiki — 1995 («WikiWikiWeb»).
- В честь автобусов «Wiki Wiki Shuttle» в аэропорту Гонолулу, вместо «Quick Web»
- Принципы Wiki:
- ☺ Быстрая правка
- ☺ Plaintext разметка
- ☺ Версионность
Сейчас на дворе уже третье тысячелетие, через пару лет, то ли конец света будет, то ли Великая Сингулярность, то ли нефть кончится,
и рассказывать что такое вики-системы и чем они хороши, вроде как страшный баян.
И все же, если вдруг будет время, то у нас (опять-таки!), есть статья и выступление на конференции по этой теме[1].
Вики-движки ⌘⌘
http://wikimatrix.org/ - вики-движков > 130!
Популярные:
MediaWiki
Шаблон:Localimage:MediaWiki-notext.svg" width="64" /> (Wikipedia) | MoinMoin
Шаблон:Localimage:Moinmoin.svg" width="64" /> | DokuWiki
Шаблон:Localimage:Dokuwiki-128.png" width="64" /> |
Win / Fail ⌘⌘
Win: гипертекств абсолюте ! ☺
Fail: плохо с атрибутикой ☹
* Goo… Guess who?
MoinMoin
DokuWiki
Однако «дикая» MediaWiki для компании-разработчика не особо хороша,
и конечно при сравнении «в лоб» проигрывает «специально обученным корпоративным вики-системам».
Но если «укротить» и немного обработать напильником, MediaWiki становится фантастически удобной системой для
компании-разработчика, решающая практически все проблемы управления знаниями, требованиями, тестами и т. п., которые могут возникнуть[1].
Затратив еще немного сил (как обычно, с использованием «напильника и такой-то матери»), можно эффективно «увязать» то небольшое число готовых, вышеупомянутых систем, получив шикарный интранет-разработчика «with Black Jack & Hookers»©[2].
И мы уже прошли этот путь, отобрали самые интересные расширения, доработали и переработали их, написали кучу своих, и даже решали проблемы производительности и разгона[3], управления правами (самое уязвимое место «природной MediaWiki»), научив все веб-системы не только «плеваться почтой», но и смиренно отдавать RSS-feedы, а всех сотрудников — пользоваться RSS-агрегаторами (и даже развернув корпоративный «Google Reader» — FeedOnFeeds.
И все это готовое предлагаем вам совершенно свободно и даром[4].
Нет, это не было изобретением велосипедов, объем доработок по сравнению с объемом trunkа был невелик, сначала это было практически хобби (10 % времени) одного веб-любителя, но теперь этим (хотя и не на 100 %) стал заниматься настоящий веб-профессионал, и нам уже не стыдно выкладывать все это в open-source.
Кроме того, большинство доработок оформлены в виде расширений MediaWiki, и поэтому в будущем не умрут, как это обычно случается с «велосипедами», а останутся рабочими и доступными для сообщества.
FeedOnFeeds ⌘⌘
Opensource с декабря 2010
Mindmap ⌘⌘
Медиавозможности ⌘⌘
Wiki-плюшки ⌘⌘
- Презентации
- Блоги/форумы*
- Календарь
- Опросы, экзамены
|
- ВикиЗакладки
- Развесистые права
- Импорт/экспорт
- ...
|
* что почти одно и то же
Блоги/форумы*
* Разница лишь в способе отображения
Календарь
Резервирование переговорки и т.п…
IntraACL (Сильно развесистые права)
Примеры фич Bugzilla4Intranet:
* При в целом том же внешнем виде
Excel-импорт/экспорт
Массовая загрузка вложений
«Excuse-me» (ошибка с котёнком)
☺
Email-управление, поиск с морфологией, HTML-почта, улучшения Custom полей
И так далее
Интеграция ⌘⌘
Ещё интеграция ⌘⌘
Куда двигаться дальше? ⌘⌘
- Правильная Bugzilla
- Тесты, code review → Wiki
- Semantic Wiki
Правильная Bugzilla ⌘⌘
- С одной стороны, Bugzilla отстаёт от bleeding-edge
- Зато пока остальные делают
![Bicycle.gif](/images/5/52/Bicycle.gif) ![Bicycle.gif](/images/5/52/Bicycle.gif) ![Bicycle.gif](/images/5/52/Bicycle.gif) , она сохраняет HTML-простоту
- А потом нагонит на стандартах
> этих хомячков в сотни раз больше и именно на них ориентируюся производители ОС
Когда делают операционную систему по dfsg, тогда ориентируются, прежде всего, на dfsg, а не играют в волшебников с голубыми вертолётами «хрен с ней, со свободой, главное игрушки». И благодаря этим неволшебникам, и существует, в том числе и убунта.
Ну будет Debian делать всё, как убунта, получится две убунты и ни одного дебиана, и, как следствие, ни одной убунты.
Не учите отцов, как им делать. Особенно, если вообще ничего не понимаете и ничего не решаете, а просто плывёте в потоке, ведь это единственные, кто думают о вашем завтра, чтобы не оказалось, что завтра вы уже не контролируете ровным счётом ничего.
Usability ⌘⌘
- JS grid
- «Форум-функционал»
- Agile
- (вкрутить разумный минимум)
Refactoring ⌘⌘
- Переделать систему прав*
- * кто-то понимает MANDATORY/SHOWN/DEFAULT/NA ?
-
убить YAHOO UI → jQuery
-
копипасту → прокачать объектный движок
-
CGI.pm (детище 90-х…)
-
Template Toolkit
- или хотя бы
обратную связь из шаблонов
Semantic Wiki ⌘⌘
Примечания
Внимание! Данная статья выбрана для репликации во внешнюю базу знаний компании. Пожалуйста, не допускайте в этой статье публикацию конфиденциальной информации, ведения обсуждений в теле статьи, и более ответственно относитесь к качеству самой статьи — проверяйте орфографию, пишите по-русски, избегайте непроверенной вами информации.
|
![](/skins/custisru/headline_right.gif) |