Rozwijam powoli Paranoię, udało mi się uzyskać full review w Mozilli i teraz rozszerzenie da się zainstalować bez ostrzeżeń (addons.mozilla.org). Chciałem podzielić się wrażeniami.
Rozszerzenia do Thunderbirda pisze się w Javacripcie, który nie należy do moich ulubionych technologii, jest pełen niespodzianek i ma dziwny zasięg zmiennych. Z tego właśnie powodu chciałem uprościć rozszerzenie tak bardzo, jak to tylko możliwe - napisałem je jako zbiór funkcji z prefixem w nazwie. Udało się je opublikować w takiej formie jako wersję 0.1, ale nie otrzymałem "Full Review" za zaśmiecanie globalnej przestrzeni nazw. Nie jestem pewien jakie są szanse na konflikt z drugim rozszerzeniem który będzie używał prefixu "paranoia" przed każdą funkcją, ale styl kodowania to styl kodowania - trzeba się dostosować. Przeczytałem więc zalecenia i zrobiłem refactoring.
Udało mi się przy tym wprowadzić mnóstwo błędów i zyskać dwie złe oceny na addons.mozilla.org. Wszystko sprowadzało się do tego, że używałem swobodnie Array.forEach do iteracji po tablicach, która to funkcja w jakiś sposób używa zmiennej this. Zmienna this wskazywała jednak teraz na obiekt w którym zamknąłem wszystkie funkcje, więc iteracja magicznie zatrzymywała się bez błędu po jednej iteracji. Za takie właśnie problemy kocham JS, chociaż zdaję sobię sprawę że wynikają bardziej z mojego niedouczenia niż samego języka. W niby krótkim kawałku kodu udaje mi się do dziś znajdować różne problemy spowodowane przez zamiane funkcji w metody obiektu.
Jeśli chodzi o dokumentację do pisania rozszerzeń, jest szczątkowa. Mozilla aktywnie usuwa wszystko co związane z Thunderbirdem - strony do których linki wkleiłem w czerwcu w komentarzach przy idiomatycznych fragmentach kodu już częściowo nie istnieją. Dokumentacja interfejsów również jest szczątkowa, o ich jakości nie wspominając. Wydawałoby się, że w kliencie poczty operowanie na ciele wiadomości bądź jej nagłowkach powinno być banalną i dobrze udokumentowaną operacją. Nic bardziej mylnego - łatwo dostępny jest jedynie bardzo okrojony nagłówek zawierający From, To, Date i niewiele więcej. Chcąc uzyskać dostęp do pełnych nagłówków, trzeba było kierować się wątpliwej jakości kodem znalezionym we wpisie z roku 2005 na blogu o nazwie "Thunderbird Docs". Kod okazuje się działać wybiórczo na różnych wersjach Thunderbirda i nie ma porządnego rozwiązania tego problemu, które mogłem znaleźć w publicznie dostępnym kodzie.
Z fajnych rzeczy, plik XPI można sobie zwalidować u Mozilli w walidatorze. Wydaje się być całkiem sprytnym narzędziem, wyłapującym wiele potencjalnych błędów, chociaż nie zawsze dobrze zaimplementowanym. Po automatycznej walidacji czeka się w kolejce na zaaprobowanie przez człowieka - przy pierwszym Full Review trwało to kilka tygodni, kolejka rozszerzeń miała długość prawie 200 sztuk czekających przede mną. Kolejne full reviewy zazwyczaj przechodziły mi tego samego dnia.
Z zabawek, dostępne są fajne statystyki dla developerów, chyba fajniejsze nawet niż te w Android Markecie. Jest liczba użytkowników i ściągnięć dziennie, wersje Thunderbirda wraz z ich procentowym wykorzystaniem, języki, platformy, i różne inne ciekawostki. Wszystko jest do ściągnięcia w CSV i JSON.
Znalazłem jescze ciekawe rozszerzenie umożliwiające uruchamianie całkiem eleganckich unit testów. Nazywa się UxU Test Runner i w tak nieprzyjaznym dla mnie środowisku jak nieobliczalny (albo niedouczony :) JS i nieudokumentowany TB wydaje się niezbędnym narzędziem, jeśli chcę uniknąć podobnych niespodzianek jak przy refactoringu.