понедельник, 14 января 2008 г.

Trac 0.11 beta

Сегодня ставил Trac на корпоративный сервер и мучался с подключением к базе MS SQL EXPRESS через JDBC. Со вторым спасибо помогли, а вот про первое - хотелось бы немного рассказать...

Trac - Integrated SCM & Project Management. Система отслеживание проблем разработки ПО (Issue tracking management) с расширенной Wiki-функциональностью. Плюс очено важная вещь - интеграция с SVN (наиболее популярная система управления исходным кодом). Крайне полезная вещь - все изменения в проекте отслеживаются и доступны через RSS. Кроме того есть большое количество подключаемых модулей сторонних разработчиков, при помощи которых его можно наворотить до необходимого вам уровня (блоги, графики, ...).

С CVS системами знаком довольно давно. Работали с TeamSource, TeamCoherence ... меряли MS SourceSafe и в какое-то время остановились на Borland StarTeam. Последний понравился именно расширенной функциональностью к самому репозиторию исходного кода - документации, форуму, учету времени, графикам и отчетам. Однако сейчас ставил Trac не для исходного кода а для документирования методов работы в новой системе для пользователей 1С 8.1 "Управление торговлей для Украины" (поэтому SVN интеграцию не трогал и пропущу) плюс возникла необходимость в простом управлении внутренними проектами компании, не связанными с ПО (просто первое что попалось под руку, тем более, что пользователи уже умеют писать реквесты ... "если его заслать в Сибирь - вся сибирь будет на Basic разговаривать" шутка 91 года)

Вообще про Trac уже писано много, в том числе много и по его установке. Многие старые документы о установке предыдущих версий проекта просто пугают, сам ставил первый раз целый день, пока не прочитал инструкцию правильно :) Поэтому вставлю свои 5 копеек - как поставить Trac за 10 минут. Да и сегодня обнаружился бета-релиз 0.11, в котором все еще более упростилось. Встроенный webadmin и поддержка easy_install, кроме того идет работа по локализации проекта, кстати на основе классического gettext, и обещает появится уже в версии 0.12

Система написана на Python и для быстрой установки модулей используется easy_install. В качестве БД можно выбрать SQLITE, Postgree или MySQL. Поставить можно на штатном веб сервере и на Apache. Самый быстрый способ это SQLITE и штатный сервер, чего для локальной сети вполне достаточно.

Итак:

- ставим Python (setup) и SQLITE (просто копируем в каой-нибудь каталог) и easy_install

- определяем переменные среды (AUTOEXEC.BAT) и перегружаемся (или Logout/Login)
set PYTHON=C:\Python25
set SQLITE=C:\SQLITE35
set PATH=%PATH%;%PYTHON%;%PYTHON%\Scripts;%SQLITE%

- через консоль ставим необходимые компоненты и саму систему
easy_install Pygments
easy_install Genshi
easy_install Trac

- создаем новый репозиторий проекта, указывая параметры (svn можно пропустить)
trac-admin /path/to/myproject initenv

- при помощи trac-digest.py (ищем в справке файл по созданию Digest.txt) создаем первого пользователя
trac-digest.py -u admin -p password >> c:\digest.txt

- делаем его администратором проекта
trac-admin /path/to/projenv permission add admin TRAC_ADMIN

- запускаем штатный сервер
tracd -p port --auth=base_project_dir, password_file_path, trac project_path

- запускаем браузер и видим список проектов
http://localhost:/

- входим под администратором, устанавливаем и настраиваем AccountManagerPlugin, добавляем пользователей проекта

... далее неплохо бы настроить систему оповещений по e-mail, но это уже сами прочитаете в руководстве, которое уже встроено в Trac и доступно на первой Wiki странице. Удачного отслеживания! Позже поделюсь впечатлениями от бизнес-пользователей (поскорее бы русификация случилась)

PS.

Шпаргалка по Trac - часто выполняемые операции

Скорее всего SVN таки пригодится (правда обучать бизнес-пользователей использованию SVN и объяснять что такое история версий и ветки релизов ...). Тогда действительно можно поставить VisualSVN и управлять пользователями из интерфейса консоли VisualSVN - смысл такой же как у файла хешей md5, который можно использовать для авторизации пользователя в системе

PS2

Посмотрел еще раз пост из Алена С++ и увидел еще один очень похожий проект на Rubby - Redmine - посмотрите на него обязательно. Он очень похож на Trac, но в базовом варианте содержит немного больше полезной функциональности. Диаграммы ганта, оценка времени, форумы ... и русский интерфейс тоже есть, что немаловажно для бизнес-пользователей. Коротко по функциональности:

  • Multiple projects support
  • Flexible role based access control.
  • Flexible issue tracking system
  • Gantt chart and calendar
  • News, documents & files management
  • Feeds & email notifications.
  • Per project wiki
  • Per project forums
  • Simple time tracking functionality
  • Custom fields for issues, projects and users
  • SCM integration (SVN, CVS, Mercurial, Bazaar and Darcs)
  • Multiple LDAP authentication support
  • User self-registration support
  • Multilanguage support
  • Multiple databases support

15 комментариев :

Roman V. Babenko aka romb комментирует...

Желательно все таки поставить svn. Хотябы бля того чтобы EasyInstall мог таскать исходники прямо из svn Trac.
+
tracd -p port --auth=*, password_file_path, trac trac_project_dir\* заставить сервер обслуживать все проекты находящиеся в каталоге проектов трака.
Проще всего поставить VisualSVNServer, отпадет морока с синхронизацией версий модулей апача и svn + визуальный интерфейс управления репозитариями. Встраивается в консоль управления компьютером.

Николай Войнов комментирует...

Добавил шпаргалку с частыми операциями http://nvoynov.googlepages.com/trac-helper.bat

С SVN тоже соглашусь, т.к. похоже что проект поддержки понравился и ожидается продолжение в виде общего информационного сервера компании на Wiki с файлами. Кстати что-то подобное было в Софтлайне - общая корпоративная Wiki. На чем она была сделана не знаю, но был как раз вход для всех сотрудников и можно было найти всю информацию там.

Roman V. Babenko aka romb комментирует...

Я тоже имел практику на JSP Wiki в большой компании. Щас тоже ввожу портал на основе трака и SVN. Можно еще вынести настройки проектов в общий файл и переписать темплайты страниц так, что-бы получился портал для видения нескольких проектов + форум + блог. В общем получается CMS ориентированная на корпоративніе разработки и ведение документации.

Litnimaxster's blog комментирует...
Этот комментарий был удален автором.
Litnimax комментирует...

Вот уж не ожидал на Вашем блоге встретить пост про Trac (использую его уже несколько лет).Супер система, единственное, чего всегда не хватало - возможности тонко подстраивать полномочия. Интересно как это сделали в 0.11...

P.S. ИМХО зря они версии так делают. 0.10 и 0.11 концептуально отличаются, про стабильность я и не говорю, давно можно 5.0 выпускать :-)

P.P.S. Интересно, а Trac как компонент BPMS имеет шансы? И можно ли вот так вместе их ставить?

Николай Войнов комментирует...

> to litnimax
икс национальный поэт - "что вижу то пою" ...

Trac как компонент BPMS пока не смотрится. Если в плане тикетов, то у Trac простые фиксированные workflow. Для BPMS эти процессы, ИМХО, вряд-ли интересны - мелковато. По интеграции с хранилищем версий файлов, вроде бы тоже не его задача. Немного о интеграции с ECM
http://nvoynov.blogspot.com/2007/08/bpm-ecm-esb-and-security.html
т.е. пока не видно куда его, а строить процессы разработки ПО в BPMS дурная работа.

Кстати про WiKi, CVS, Баг-трекинг вчера буквально написала Алена С++
http://alenacpp.blogspot.com/2008/01/wiki.html

Litnimax комментирует...

> Trac как компонент BPMS пока не смотрится
Ну да, наверное так. А не потому ли, что Trac - это инструмент для проектного управления, а не процессного?

P.S. Я, кстати, прокоментировал пост Алены насчет Trac. Мне интересно, разделяете ли Вы мое мнение насчет использования Trac
в компаниях уровня SMB в качестве автоматизации workflow, communication & collaboration инструмента? (Интересно, что скажет человек из мира BPMS :-)

Николай Войнов комментирует...

Почитал комментарий и в принципе то я согласен, что можно попробовать именно в силу его простоты. Однако для проектов, кроме создания самих билетиков и простых workflow, крайне нужен deadline и оповещение о просроченных задачах .. а этого так с ходу и нету

Litnimax комментирует...

> нужен deadline и оповещение о просроченных задачах

Minimalistic approach подразумевает также, что не надо что-то писать, если есть возможность собрать "по кирпичикам" :-). Это как GUI в винде и шел в юникс. Зачем мне кодить мою бизнес-логику, когда можно дать конструктор?
Как это делается в стиле Trac на примере реального сайта.

1) http://trac.edgewall.org/report - зарегенный юзер может создать свой отчет, например, "Тикеты, просроченные сегодня", или "Тикеты, просроченные на 3 дня".

2) После этого этот отчет будет доступен по постоянной ссылке типа http://trac.edgewall.org/report/25

3) Внизу страницы есть ссылка на RSS feed - http://trac.edgewall.org/report/25?format=rss&USER=anonymous

4) Настроить уведомление о появлении нового тикета в RSS ридере по e-mail или SMS - вообще не вопрос.

Вот так вот "нетрадиционно", но штатно решается вопрос уведомления не только о тикетах, а о любом событии, так как Trac "пронизан" RSS. Другое дело, что это надо еще суметь использовать :-)

P.S. Вот тут тикет по теме - http://trac.edgewall.org/ticket/1962. Последний пост навел на мысли о интеграции due date с календарем, надо подумать как это сделать без кодинга или установки плагинов....

А вообще мне понравился ответ по этой же теме в тикете 4781:
"""
Why does this functionality need to be built into Trac? IMO "schedule report of foo to such and such people" is too specialized, and can easily be implemented as a cron job or otherwise where needed.
"""

Николай Войнов комментирует...

спасибо за подсказки - просто особо не было времени разбираться детально со всеми возможностями и полезными модулями ... однако нужно знать еще бизнес-пользователей - они никогда этого не найдут, бросят искать раньше ...

Почитал пост - много кто хочет due date и извращаются ... в общем вопрос конструктор или полнофункциональное решение из коробки вопрос еще тот ...

Будет время покопаюсь еще с отчетами, на самом деле это не такое уж и плохое решение ... формировать утром в обед и вечером

С другой стороны тот же Pentaho может по расписанию проверить некоторые факты, подготовить отчет и послать заинтересованным лицам сам.

Litnimax комментирует...

Мне сейчас подумалось... Trac отдает отчеты в RSS... Тут один шаг до обертки в WEB сервис.... Далее на BPEL моделируем процесс донесения сообщения с просроченными тикетами и их владельцами... Скажем, процесс запускается по таймеру BPEL сервером, обращается к Траку за просроченными тикетами, и в случае наличия оных отправляет сообщение начальнику. Начальник оценивает информацию, и принимает решение о закрытии этих тикетов. А вот тут бы WEB сервис для Трака closeTicketsWithComment, и у нас сквозная автоматизация.
Хаха :-)
Не так уж и далеко Траку до BPMS как показалось в начале. Поглядим насколько 0.11 окажется готов для интеграции в ESB ;-)

P.S. Интересный документ - http://trac.edgewall.org/wiki/TracObjectModelProposal.
Думаю, что когда какая-то компания с развитой инфраструктурой СОА захочет интегрировать Trac в качестве HelpDesk системы, ее девелоперам будет весьма просто обернуть ядро трака в WEB Services API.

Litnimax комментирует...

Случайно обнаружил, что Keyintegrity используют Trac - http://forge.keyintegrity.com/

P.S. Кто не в курсе, они ведут неплохой журнал по СОА - http://magazine.keyintegrity.com/

Николай Войнов комментирует...

тут иногда появляется разработчик keyintegrity - Дмитрий Гусев - есть линк на его блог в персоналиях

Николай Войнов комментирует...

вышла .11 Beta 2

2 Litnimax не подскажете как обстоят дела с локализацией? В голове нет места разбираться (:

Litnimax комментирует...

Честно - никогда не использовал. Быстрый обзор вывел сюда - http://trac.edgewall.org/wiki/TracL10N, обратите внимание на http://trac.edgewall.org/wiki/TracTermsRu.