Parę razy podchodziłem do Traca - i zawsze odbijałem się o denerwującą konieczność namnażania stada projektów nie mających ze sobą związku. Zajrzałem znowu, znowu zobaczyłem zaawansowane dyskusje na temat wieloprojektowego Traca i ... postanowiłem w końcu obejrzeć Redmine.
Jaka to śliczna aplikacja!
Pochwalne pienia
Redmine ma wszystko to, co ma Trac - zgłoszenia, kamienie milowe, monitorowanie postępu prac, wiki, podgląd repozytorium kodu źródłowego (6 systemów do wyboru, od Subversion i CVS po Mercuriala i GITa). Ma też dużo więcej:
-
dobre wsparcie dla wielu projektów - projekty normalnie się zakłada z interfejsu, można zobaczyć swoje zgłoszenia z wielu projektów naraz, można przenosić zgłoszenia między projektami, można ustalać uprawnienia do każdego z nich osobna, można dla każdego projektu ustalić jakie elementy funkcjonalności Redmine są w nim używane (od samego issue trackera czy samego wiki po kombajn obejmujący kilkanaście modułów i przebijający sourceforge),
-
obsługę forum, archiwum dokumentów, dystrybucji plików, newsów projektu, rejestracji użytkowników, ...
-
pełną konfigurowalność wszystkiego - od stanów jakie mogą przyjmować zgłoszenia (i schematów przejść) , po kategorie zadań,
-
wsparcie kilku baz danych (w tym mego ulubionego Postgresa).
Interfejs Redmine jest po prostu ładny, klarowny i wygodny. Szczególne wrażenie robi eleganckie używanie Ajaxu, np. wyświetlając listę zgłoszeń można prawo-kliknąć któreś z nich i zmienić mu priorytet, kategorię, czy status bez przeładowywania strony czy otwierania czegokolwiek.
Łyżka dziegciu
Redmine ma też pewien problem. Kłopotliwie się instaluje i dość żarłocznie wykorzystuje zasoby komputera. U podłoża obu problemów leży Ruby.
Instalacja - mimo paru prób nie udało mi się zainstalować stabilnej wersji w oparciu o obecne w Ubuntu pakiety Ruby-ego (choć teoretycznie wersje pasowały). Skończyłem na używaniu developerskiej wersji Redmine (checkout
aktualnego trunk
-a). A problemy z pakietami rozwiązałem niechcący przy okazji zmniejszania problemów wydajnościowych.
Wydajność - Ruby on Rails jak wiadomo bardzo lubi zjadać pamięć. Problem ogranicza trochę Ruby Enterprise Edition w połączeniu z Passengerem. Dalej nie jest zupełnie słodko, ale aplikacja działa sprawnie (czuć opóźnienia jedynie przy pierwszych żądaniach po okresie nieaktywności). Przy okazji instalacja Ruby Enterprise Edition zapewnia wszystkie potrzebne pakiety Ruby-ego.
Innymi słowy, instalacja Redmine w wersji bezproblemowej to:
-
zainstalowanie Ruby Enterprise Edition i Passengera (według instrukcji, wszystko działa jak tam opisano)
-
wyciągnięcie
trunk
-a Redmine i uruchomienie aplikacji na jego bazie (znowu, wszystko działa według podręcznika instalacji)
Miałem też problem przy imporcie danych z Traca, wyraźnie związany z używaniem przeze mnie PostgreSQL 8.3 jako bazy danych Traca (błędy przy próbie wyszukiwania id = 1, gdzie id jest kolumną tekstową). Przy użyciu starszego Postgresa albo SQLite raczej kłopotów być nie powinno.
Dopisek: zgłosiłem ten błąd, poprawka pojawiła się w niecałe dwa dni (patrz issue 1759).
Na angielskiego bloga wrzuciłem przykład pythonowego skryptu do importowania danych z nietypowego źródła
Posłowie
Mam jakiegoś pecha... Lubię szczególnie Pythona i Perla, a w ostatnich tygodniach najpierw po długich poszukiwaniach wybrałem PHP-owy blog, teraz napisany w Ruby-on-Rails issue-tracker. Cóż, często twierdzę, że jestem w stanie w ciągu paru tygodni nauczyć się nowego języka programowania i sprawnie go używać, być może będę miał okazję to przetestować...
A wracając do Redmine. Używać - nie używać, na pewno warto je zobaczyć. Pokazuje, czym może być narzędzie wspomagające prowadzenie projektu...