Więcej Windowsa i więcej funkcji

Z pomocą programisty LRN, który wysłał pierwsze łatki poprawiające build oparty o autotoolsy i pomagał mi w pracy, udało mi się w końcu umożliwić kompilację 3.0.0 dla Windowsa z poziomu Linuksa. Przy okazji poprawiłem kilka mniejszych lub większych problemów związanych z Windowsem i włączyłem kilka funkcji wcześniej niedostępnych dla tego systemu.

Najważniejszą zmianą jest to, że teraz kompilacja pod Linuksem dla Windows jest prawie tak prosta, jak zwykła kompilacja. Cały wysiłek (nie licząc instalacji paczek mingw*) jest ograniczony do ustawienia dwóch zmiennych systemowych (PKG_CONFIG i PKG_CONFIG_PATH) oraz dodania jednego przełącznika przy wywołaniu skryptu konfiguracyjnego: ./configure --host=i686-w64-mingw32 && make. To wszystko! Na chwilę obecną nie da się jeszcze zbudować w ten sposób instalatora.

Finch uruchomiony pod Windowsem Z drugiej strony, najbardziej widoczną zmianą dla użytkownika jest wersja komunikatora Finch dla Windowsa. Wymagało to poprawek zarówno w bibliotece libgnt, jak i w samym komunikatorze, ale dzięki temu da się w końcu używać tego konsolowego klienta pod systemem Microsoftu.

Co więcej, w końcu zaimplementowałem funkcje potrzebne do prawidłowej obsługi szyfrowania OTR w komunikatorze Finch. Wciąż brakuje jednej – nie da się przeglądać listy kluczy, ale nie jest to potrzebne do codziennego użytku. Ta zmiana nie jest bezpośrednio związana z Windowsem i mogą wystąpić problemy przy testach na tym systemie, ale postaram się z nimi zmierzyć przy okazji dodawania wtyczki OTR do kolekcji domyślnych wtyczek, instalowanych razem z Pidginem.

Przykładem mniej istotnej, ale wciąż przydatnej zmiany jest możliwość kompilacji z GTK3 i GStreamerem 1.0, co było łatwe do osiągnięcia dzięki autotoolsom. Poza tym usunąłem zależność od Bonjour SDK przy budowaniu dla win32, z powodu problemów z licencją – w tej chwili można budować wtyczkę Bonjour bez instalacji tej biblioteki.

Ostatnia funkcja może być uznana przez część z Was za bezużyteczną, ale niektórym się spodoba – dlatego jest opcjonalna. Można włączyć strukturę katalogów opartą o Filesystem Hierarchy Standard poprzez jeden przełącznik skryptu konfiguracyjnego: --with-win32-dirs=fhs. W tej chwili jest to najprostszy sposób kompilacji dla Windowsa, ponieważ (jak wspomniałem) nie da się jak na razie zbudować instalatora.

Kilka kroków w kierunku wersji finalnej

Pidgin 3 nie jest kompatybilny na poziomie API/ABI z Pidginem 2 i jest tylko częściowo kompatybilny na poziomie plików konfiguracyjnych. Podczas gdy to pierwsze jest konieczne, aby projekt się mógł rozwijać, drugie może być problemem dla użytkowników. Z powodu niekompatybilności ABI, wtyczki dla libpurple2 nie będą działać z libpurple3 – ich autorzy w końcu przepiszą je dla nowego interfejsu. Z kolei niekompatybilność w plikach konfiguracyjnych może prowadzić do utraty danych – ustawień, kontaktów itp.

Pidgin 3 jest prawie kompatybilny wstecz, co pozwala na bezbolesną aktualizację. Z drugiej strony, Pidgin 2 nie był kompatybilny wprzód. Na przykład usuwał wszystkie zaszyfrowane hasła, zapisane pod Pidginem 3. W tej chwili, wciąż nie będzie w stanie ich odczytać (ponieważ funkcje menedżera haseł nie będą zaimplementowane w gałęzi 2.x.y), ale przynajmniej zostawi te zaszyfrowane bez zmian. Poprawiłem jeszcze więcej problemów z kompatybilnością tego typu: obsługa kont GTalk i Facebook XMPP, utworzonych w wersji 3.0.0 oraz problemy ze spolszczeniem nazwy domyślnej grupy („Buddies” kontra „Znajomi”). Wszystkie te poprawki będą wydane w gałęzi 2.x.y, dzięki czemu będzie możliwe przejście z wersji 3.0.0 na 2.10.10 i z powrotem, z mniejszą szansą na utratę danych.

Poprawiłem też mniejsze, ale również uciążliwe problemy. Kolory nicków innych uczestników czatów XMPP lub IRC nie powinny już mieć zbyt małego kontrastu. Udało mi się również naprawić poprawianie błędów pisowni, dzięki zaimplementowaniu menu wyboru języka dla WebKitGTK. Wciąż jest z tym kilka problemów, które spróbuję kiedyś poprawić: największym jest to, że wybrany język jest wspólny dla wszystkich rozmów.

Aby poprawić stabilność gałęzi rozwojowej, zdecydowałem się skupić na raportach błędów Coverity. Niestety możemy tam sprawdzać tylko jedną gałąź, więc najpierw poprawię wszystkie błędy gałęzi 2.x.y, a później przestawię sprawdzanie na 3.0.0. Do tej pory udało mi się poprawić prawie wszystkie, a zmiany włączyłem do gałęzi 3.0.0, więc ta powinna być odrobinę bardziej stabilna. Ponadto zaktualizowałem wszystkie zależności pod win32, co powinno również pozytywnie wpłynąć na stabilność.

Jednak proszę nie zrozumieć mnie źle – jeszcze długa droga do stabilnego Pidgina 3.0.0. Ale już w tej chwili da się z niego korzystać.

Pokaż, co masz na pulpicie

Przykład użycia wtyczki od zrzutów ekranu Przeniosłem się z Konnekta na Pidgina w okolicach roku 2007. Bardzo mi brakowało pewnej funkcji, z której korzystałem w tamtym komunikatorze: łatwego wysyłania zrzutów ekranu. Co prawda była wtyczka dla Pidgina 2.x.y, ale nie do końca mi odpowiadała, a poza tym nie działała z Pidginem 3.

W końcu zdecydowałem poświęcić dwa dni i stworzyć własną wtyczkę. Ona po prostu działa, pokrywając wszystkie cechy które mi się podobały w podobnych funkcjach innych komunikatorów. Jest prosta, stabilna i dobrze pasuje do interfejsu Pidgina.

Planuję rozszerzyć jej funkcjonalność kolejną wtyczką. W tej chwili można wysyłać zrzuty ekranu tylko za pośrednictwem protokołów, które wspierają wysyłanie obrazków. Tak więc nie można jej użyć z protokołem XMPP albo IRC. Druga wtyczka pozwoli wysyłać obrazki (nie tylko zrzuty ekranu) poprzez serwis imgur (lub podobny) dla protokołów, które nie wspierają wspomnianej funkcji.

8 myśli nt. „Więcej Windowsa i więcej funkcji

  1. No właśnie kiedy jest można się spodziewać Pidginem 3 :)
    a i dzięki że rozwijacie ten genialny komunikator :3

    • Tak, jak już wspominałem, nie ma jeszcze żadnych konkretnych planów wydania stabilnej wersji. W tej chwili nad programem pracuję właściwie tylko ja, a pracy jest jeszcze dużo, więc naprawdę trudno powiedzieć.

      Postaram się za to w najbliższym czasie wydać jakąś nieoficjalną wersję testową. Obiecywałem zrobić to tuż po wydaniu libgadu 1.12.0, więc wypada dotrzymać obietnicy.

  2. Cześć

    Czy widać już na horyzoncie stabilną wersję Pidgina3?

    Pytam, bo na horyzoncie Waylanda widzę „drapieżnego”, i szykuje się moje pożegnanie z Gnome-2 . tymczasowo jest jeszcze Mate, ale w przyszłości to będzie na 85% środowisko oparte na QT5, gdzie ze wsparciem dla Gtk2 może być różnie.

    Najlepszy byłby Pidgin działający na Qt + QTwebkit (idealnie Qt5 ),
    albo ewentualnie na Gtk3, byle w miarę stabilny.

    Na Waylanda się przeprowadzę niedługo po dniu, kiedy Nvidia będzie tak uprzejma pokazać sterownik obsługujący Waylanda, nad którym pracują już od roku, i który już w październiku 2014 był prawie gotowy.
    Spodziewany termin przeprowadzki na Waylanda, to lato -jesień 2015. ;)

    Pozdro

    • Ostatnio rozwój Pidgina mocno zwolnił, nikt z developerów nie ma wystarczająco dużo czasu, a nowych chętnych nie widać. Mam nadzieję, że sytuację poprawi tegoroczny GSoC. W międzyczasie zachęcam do używania developerskiej wersji Pidgina – wg mnie jest bardziej stabilna, niż oficjalne wydanie.

      Jeżeli chodzi o Qt, to dwa lata temu jeden student robił takie UI, ale niestety nie nadaje się to do używania. Za to wersja GTK3 chodzi całkiem nieźle. Myślimy nawet o zaprzestaniu wsparcia dla GTK2.

  3. No cóż, nie ma w QT, trudno.

    Ale tak się składa, że mam ostatnio sporo wolnego czasu, więc może się pobawię troszkę QT (zabieram się za nie jak pies do jeża już o pół roku),
    Moje dotychczasowe największe osiągniecie programistyczne, to 292 linijki czystego kodu w Perlu (w jednym skrypcie, garść regexów), dlatego ciekaw jestem, w ilu liniach kodu (orientacyjnie) mieści się interfejs Gtk nowego Pidgina wraz z Webkitem?

    W C/C++ na razie wyrabiam się w tempie max 10 linijek dziennie ;),
    ale zamierzam troszkę potrenować. :D

    Czy poza samymi źródełkami programu, jest gdzieś dokładny opis API biblioteki Libpurple (planowanej, docelowej wersji stabilnej)?

    PS:
    EJabberd w wersji 15.xx ma wbudowany serwer SIP, mnie wiem, ile w nim jest wzięte z Astreriska (pewnie 97%), ale wygląda na to, że będzie dalej postępowała integracja telefonu i komunikatora.
    Dlatego natywny protokół SIP (np przez bibliotekę Linphone.so)
    w przyszłości może się przydać bardziej, niż support do Skype. xD

    Pozdro
    ;-)

    • Jeżeli chcesz się porywać na interfejs Qt dla Pidgina, to polecam zacząć od tamtego projektu GSoC. Zaoszczędzisz jakiś miesiąc-dwa pracy.

      Możesz sobie wygenerować dokumentację API poleceniem ‚build docs’ (musisz mieć zainstalowany gtk-doc), ale nie mamy żadnego „planowanego” API.

      Zarówno linki do tamtego projektu, jak i do reszty dokumentacji znajdziesz na stronie Pidgina, w zakładce Developers.

  4. Porywać, to za mocno powiedziane. ;)

    Mam w głowie projekt klienta RSS, który będzie korzystał z bazy SQL, otwierał każdy kanał w wybranej przeglądarce, np sznurki z Youtuba w Minitube lub Vlc, inne w Firefoxie, jeszcze inne w Operze lub Chrome.

    Już parę razy się zabierałem za to, ale ciągle coś mi nie wychodzi, jestem na etapie studiowania dokumentacji, ale projekt od zera to troszkę za duża sprawa, jak na pierwszy program w życiu

    GUI do Pidgina? raczej łatwiejsze, bez baz SQL, można się w dużej części oprzeć na kodzie Fincha (API libpurple), jeśli Webkita wymaga tylko wersja Gtk, to znaczy, że cały środek programu GUI (lub jego spora częśc) jest stronką WWW, podobnie, jak w tym nowym gadu na Linuxa, gdzie po wypakowaniu widać przede wszystkim bibliotekę libxul,so.
    A małe stronki WWW na wszystkich Webkitach chodzą tak samo, nie ma różnicy, czy Gtk czy Qt.
    Pomysł GUI w QT i tak ma umiarkowane szanse, bo trudno będzie zmusić autorów wtyczek, żeby pisali podwójne GUI na Gtk i na Qt., natomiast stosunkowo łatwo, do konfiguracji wtyczki przez ministronkę Webkita, co raczej nie wszyscy „kupią”.

    Ale jeśli w bibliotece Purple już wylądował OTR, i jeszcze wyląduje XEP-0016, to zbyt wiele do szczęścia już nie będzie potrzebne, przy czym i tak są potrzebne wtyczki typu Privacy działające lokalnie, bo liczenie na to, ze np MSN, Gadu czy Tlen, czy inne sieci będą zgodne z XEP-0016, to mrzonki..
    Krótko pisząc, strasznie to nie wygląda, ale marsz od takich skryptów, jak ten: https://drive.google.com/file/d/0BxnxcErK-vmSSC1tcmEzMVVEUFE/view
    do programowania w C++ to kawal drogi. ;)

    Także to będzie na razie raczej na razie zabawa, niż poważne programowanie….
    Z programowania raczej będę się utrzymywał po kliku latach takiej zabawy, na razie głównie adminka serwerami, dlatego też na codzień używam Gentoo Hardened z Grsec& Pax & Apparmor i czasem SELinuxa.
    A to daje okazję do testowania softu w najbardziej skrajnych i straszliwych warunkach. xD

    Pozdro

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *