Sunday, August 1, 2010

Maszyna integracyjna dla Drupala

Od kilku miesięcy śledzę spadającą i rosnącą momentami liczbę krytycznych bugów zgłoszonych na drupal.org. Zwane beta-blockers, ponieważ są to błędy nie pozwalające wydać wersji beta, to pojawiają się to giną. Dzisiaj przyjrzałem się treściom i komentarzom do zgłoszonych problemów.

Z grubsza wygląda to tak. Jest zgłoszony bug i w pierwszych trzech komentarzach zaraz opublikowana łatka. Potem następuje seria odpowiedzi w stylu "działa", "nie działa", " a u mnie zgłasza błąd ABC", "ja dostaję Exception takie" itd... W międzyczasie ktoś jeszcze opublikuje unit test, który ma sprawdzać poprawność rozwiązania. Dlaczego o tym piszę?

Wychodzi na to, że zgłoszony problem może wydawać się naprawiony do czasu kiedy jakaś osoba stwierdzi, że u niej nie działa i nie pojawi się znowu na liście beta-blockerów. Najgorsze w tym wszystkim, że to może trwać tygodniami. Zanim ktoś odpisze, odpali u siebie testy, zgłosi swój komentarz. Architektur może być wiele i problemy mogą wynikać z różnych przyczyn. Dramat.

O ile szybciej Drupal rozwiązywałby takie problemy gdyby posiadać maszynę integracyjną, na której wszystkie testy byłyby odpalane i testowane w znanym,wspieranym środowisku? Na przykład mieć na VirtulBox kilkanaście konfiguracji z różnymi systemami, wersjami MySQL/PHP i odpalać na nich testy proponowanych łatek. Polegać na wynikach tych testów pochodzących z maszyn integracyjnych a nie temu co mówi społeczność.

Łatwo zauważyć, że w prosty sposób wydanie projektu może być sabotowane przez zgłaszanie fikcyjnego problemu. Może, nie zablokowałoby to wydania w ogóle ale na pewno je opóźniło. Bardzo pod tym względem podoba mi się rozwijanie Google Chrome gdzie infrastrukturę - choć skromną - zapewnia Google. Testy automatyczne są i działa to wszystko - powoli, ale sprawnie.

Nie wiem z czego wynika brak zdefiniowanego procesu w Drupalu - braku infrastruktury czy doświadczenia głównych członków stojących za projektem. Moim zdaniem można byłoby się pokusić o rozproszony system testów - coś na zasadzie SETI@HOME. Ja osobiście chętnie udostępniłbym po sieci jakiegoś VirtualBoxa nocami. Zobaczymy.

@EDIT
Najpierw strzelam potem pytam. Istnieje rozproszony system testów przebudowywany obecnie. Można o nim poczytać na: http://qa.drupal.org/ oraz http://groups.drupal.org/drupal-org-testing-infrastructure. Jest też wtyczka do review o nazwie Coder :)