Эволюция Wiki-Way командной разработки

Виталий Филиппов, Стас Фомин, CUSTIS

Парадигма проектирования нового

Blueprint.png Инженерная
Джамшут-Лестница.png

Парадигма проектирования нового

ParaWiki.jpg

Wiki-Way

Выбор систем

Ящик Вендора
Закрытый, сильносвязанный, платный
Велосипед
Быстро создать, тяжело поддерживать
Футбол Хоттабыча
Кажется идеалом, Не взлетит

Ящик Вендора

BlackBox.jpg Interlinked.gif

LockedLock.jpg Handcuffs.jpg

Ящик Вендора: Плюсы? Минусы?

  • Платный, вендорский
    • «☺ Наверное, качественный?»
    • ☹ Vendor lock-in !
    • ☹ Может быть и недёшев !
  • Сильносвязанный
    • «☺ Отлично, всё интегрировано?»
    • ☹ Шаг в сторону — считается побег !
    • ☹ Меньше думать может оказаться вредно
  • Закрытый
    • «☺ Кому в нём копаться?»
    • ☹ Недостатки не исправить !

Велосипед

Bicycle.gif

YATUP

Пользователи: *FACEPALM*
Админы: *FACEPALM*
Программист: (сбежал)

CLOC

  • MediaWiki: 185000 PHP, 577000 локализация
  • Bugzilla 3.6: 72000 Perl, 35000 TT
    • 4.0: +10000 Perl, +3000 TT

И в них ведь есть какой-то смысл (!)

Может, не стоит писать заново ?

Всё это .

А как ?

MainStream!

Wiki + трекер + VCS — cочетание используется всё чаще:

Trac

GitHub, Bitbucket, Google Code, Launchpad

Github.png Bitbucket.png GoogleCode.jpg

С чем имеет дело разработчик?

  • Код, тесты
  • Баги, задачи, постановки
  • Документация
  • Новости, обсуждения

DevCircles-NoCircles.svg

DevCircles.svg

DevCirclesGeneralSystems.svg

DevCirclesMwBzSvn.svg

Subversion logo.png

На данный момент вершина эволюции CVCS :)

March-hare-2.jpg

Ещё жив CVS(nt) (March Hare)

* А зря nt

ViewVC

Viewvc-logo.png
ViewVC → web-интерфейс к CVS & SVN
  • Его можно считать частью VCS.
    • У git и hg веб-интерфейс вообще в стоке.
  • Тоже чуть докручен Hackwrench.jpg

Трекер: Bugzilla*

* при всех недостатках. Самый большой →→→

→ Сложность расширения!

(… кривость объектного движка)

Wiki: MediaWiki

MediaWiki-notext.svg

Epic Win’ы MediaWiki

VCS*

Централизованные и распределённые

CVS, SVNGit, Mercurial, Bazaar (, Monotone, Darcs)


* известно почти всем

Статистика

Habrastat VCS 2010-10-26.svg

DVCS в моде

За год:

  • Git, Hg5.5 %, 3 %
  • SVN, CVS 3 %, 5 %
  • Bazaar0.5 % (hate and hate)

Но есть у них и недостатки

  • Размер репозитория растёт:
    Собрать Android recovery ⇒ качаем >4.8 Гб :(
  • 80 % и 20 % разработчиков:
    Синдром кодовой бомбы
  • Несколько проектов в репозитории

Учёт задач

Habrastat tasks.svg

Статистика с хабра, сильно неточная, но даёт повод для размышлений

Bug Tracker

  • «Bug» != «Ошибка» ! ! !
  • «Bug» = ∀ (любая) задача:
    • Ошибка, запрос фичи, вопрос поддержке

Хотя различать любят:

…I define a bug as behavior in a «Done» story that violates valid expectations…

Примеры

Minimalistic

GraphvizBugs1.pngGraphvizBugs.pngGraphvizBugs2.png

(баги в Graphviz)

Bugzilla

BugzillaBugForm.png

Mantis

MantisBTForm.png

Jira

ProjectManagementWithJiraGreenHopper.pdf JiraIssueForm.png

Roundup

RoundupBugForm.png

Trac *

TracBugForm.png

* Не только Bug Tracker

Баги на Google Code *

GoogleCodeBugForm.png

* Посимпатичнее, но и возможностей мало

А так — все похожи, все монстроваты

Note.svg Как ни странно, даже Minimalistic

И Jira — хотели переписать багзиллу, а вышло страшнее :)

Wiki

  • Первая Wiki — 1995 («WikiWikiWeb»).
  • В честь автобусов «Wiki Wiki Shuttle» в аэропорту Гонолулу, вместо «Quick Web»
  • Принципы Wiki:
    • ☺ Быстрая правка
    • ☺ Plaintext разметка
    • ☺ Версионность

Вики-движки

http://wikimatrix.org/ - вики-движков > 130!

Популярные:

MediaWiki
MediaWiki-notext.svgTemplate:Localimage:MediaWiki-notext.svg" width="64" />
(Wikipedia)
MoinMoin
Moinmoin.svgTemplate:Localimage:Moinmoin.svg" width="64" />
DokuWiki
Dokuwiki-128.pngTemplate:Localimage:Dokuwiki-128.png" width="64" />

Win / Fail

Win: гипертекств абсолюте !

Fail: плохо с атрибутикой

  • Однако, гипертекст rules, если есть поиск*
  • Есть Semantic MediaWiki

* Goo… Guess who?

Wikipedia

RupediaMain.png

MoinMoin

DebianWikiMain.png

DokuWiki

DokuwikiMain.png

FeedOnFeeds

4intra.net

Opensource с декабря 2010

Mindmap

Медиавозможности

Wiki-плюшки

  • Презентации
  • Блоги/форумы*
  • Календарь
  • Опросы, экзамены
  • ВикиЗакладки
  • Развесистые права
  • Импорт/экспорт
  • ...

* что почти одно и то же

Презентации S5*

HTML+JS, порождаемый из Plaintext

* такую вы смотрите сейчас

Блоги/форумы*

* Разница лишь в способе отображения

Календарь

Резервирование переговорки и т.п…

WikiCalendar.png

IntraACL (Сильно развесистые права)

IntraACL rights targets.svg IntraACL inherit.svg

Примеры фич Bugzilla4Intranet:

* При в целом том же внешнем виде

Excel-импорт/экспорт

BugsXLSImport.png

Массовая загрузка вложений

BugzillaAddMultiple.png

«Excuse-me» (ошибка с котёнком)

KittenErrorNew.jpg

Email-управление, поиск с морфологией, HTML-почта, улучшения Custom полей

И так далее

Интеграция

Ещё интеграция

Куда двигаться дальше?

  • Правильная Bugzilla
    • ??? а стоит ли?
  • Тесты, code review → Wiki
  • Semantic Wiki

Правильная Bugzilla

  • С одной стороны, Bugzilla отстаёт от bleeding-edge
    • Usability + Refactoring
  • Зато пока остальные делают Bicycle.gifBicycle.gifBicycle.gifBicycle.gif, она сохраняет HTML-простоту
  • А потом нагонит на стандартах

LOR, Debian vs Ubuntu

> этих хомячков в сотни раз больше и именно на них ориентируюся производители ОС

Когда делают операционную систему по dfsg, тогда ориентируются, прежде всего, на dfsg, а не играют в волшебников с голубыми вертолётами «хрен с ней, со свободой, главное игрушки». И благодаря этим неволшебникам, и существует, в том числе и убунта.

Ну будет Debian делать всё, как убунта, получится две убунты и ни одного дебиана, и, как следствие, ни одной убунты.

Не учите отцов, как им делать. Особенно, если вообще ничего не понимаете и ничего не решаете, а просто плывёте в потоке, ведь это единственные, кто думают о вашем завтра, чтобы не оказалось, что завтра вы уже не контролируете ровным счётом ничего.

Usability

Rugby_scrum.jpg
  • JS grid
  • «Форум-функционал»
  • Agile
    • (вкрутить разумный минимум)

Refactoring

  • Переделать систему прав*
    • * кто-то понимает MANDATORY/SHOWN/DEFAULT/NA ?
  • Pistol-icon.png убить YAHOO UI → jQuery
  • Pistol-icon.png копипасту → прокачать объектный движок
  • Pistol-icon.png CGI.pm (детище 90-х…)
  • Pistol-icon.png Template Toolkit
    • или хотя бы Pistol-icon.png обратную связь из шаблонов

Semantic Wiki

  • «Семантическая Wiki»,
  • Она же Wiki с атрибутикой - http://semantic-mediawiki.org/
  • Semantic Tracker
    • В пень Custom Fields!