Google Summer of Code – podsumowanie

Google Summer of Code właśnie się zakończył, więc warto się pokusić o małe podsumowanie. Komunikator Pidgin został zaakceptowany wraz z czterema projektami, z których trzy (ten również) zakończyły się sukcesem. Mój projekt trochę się zmienił od czasu zaakceptowania, ale wciąż jestem zadowolony z postępów – możecie to sami ocenić czytając ten post. Niektóre obiecane funkcje nie zostały jeszcze ukończone, głównie z powodu konieczności zmian w libgadu. One kiedyś zostaną zrobione, ale to wymaga czasu: dyskusji, implementacji libgadu, wydania libgadu, aktualizacji libgadu w Pidginie, implementacji w Pidginie i w końcu wydania Pidgina.

Jednak projekt nie był tylko okrajany. Pojawiły się poprawki, które nie były planowane, ale okazały się istotne dla wprowadzenia lepszej jakości obsługi protokołu Gadu-Gadu. To jest miejsce, w którym korzystamy z przejścia na wersję 3.0.0 – mogłem zmieniać co mi się tylko podobało w API libpurple. To również miejsce, w którym zyskują inne protokoły. Czytaj dalej

Finisz GSoC: nowe funkcje, więcej poprawionego kodu

Wczoraj minął ostateczny termin ukończenia projektów. To znaczy, że ta paczka poprawek jest ostatnią przygotowaną w ramach tegorocznego GSoC. Nie jest jednak ostatnią rozwijającą wtyczkę Gadu-Gadu – mam zamiar kontynuować moją pracę w międzyczasie, aby komunikator Pidgin posiadał możliwie aktualne wsparcie dla tego protokołu.

Największą funkcją wykonaną w tym tygodniu jest przeglądanie i edycja danych w katalogu publicznym, z użyciem protokołu GG10.5. Niestety, podobnie jak w przypadku innych funkcji, nie ma w tej chwili możliwości użycia aktualnego protokołu GG11, ponieważ ta usługa wymaga wartości IMToken (niedostępnej w bieżącym libgadu) do uwierzytelniania. Czytaj dalej

Możliwości Libpurple rozszerzone dla lepszej obsługi Gadu-Gadu

Libpurple jest biblioteką z bardzo stabilnym API. Jest to z jednej strony wygodne, ponieważ nawet stare pluginy działają z nowymi wersjami Pidgina. Z drugiej strony krępuje to możliwości rozwoju, dostosowania biblioteki do nowych funkcji obsługiwanych protokołów. Na szczęście, pracujemy nad Pidginem/Libpurple 3.0.0, co oznacza, że można zmieniać API na tyle, ile tylko potrzeba.

W związku z tym, skupiłem się ostatnio na przystosowaniu Libpurple do poprawnej obsługi Gadu-Gadu, tam, gdzie mogło by to nie być możliwe po wydaniu wersji 3.0.0. Na przykład, zaimplementowałem sprawdzanie poprawności nazw użytkownika: GG używa tylko numerów jako identyfikatorów, podczas gdy Pidgin pozwalał na podawanie czegokolwiek. Teraz, dialogi takie jak dodawanie użytkowników, lub konfiguracji konta nie pozwolą na wprowadzenie nieprawidłowego ciągu jako numeru GG. Czytaj dalej

Nowy protokół wysyłania plików odkryty

Udało mi się odkryć protokół wysyłania plików w GG11. Dobra wiadomość jest taka, że zaimplementowałem własnego klienta wysyłającego plik. Zła jest taka, że do autoryzacji potrzebuje on tokenu, który jest wysyłany przez serwer Gadu-Gadu po udanym logowaniu w protokole GG11.

Oznacza to, że Pidgin (a także Kadu) będzie mógł wspierać nową metodę transferu plików dopiero, gdy libgadu będzie obsługiwał protokół GG11. Z kolei implementacja starego protokołu połączeń bezpośrednich przedstawia wątpliwą wartość, skoro producent oryginalnego klienta się z niego wycofuje. Czytaj dalej

Nowa funkcja: synchronizacja listy kontaktów

Ostatnio pracowałem nad nową funkcją: synchronizacją listy kontaktów (#9463). Sieć Gadu-Gadu wspiera ją już od jakiegoś czasu – działa to podobnie, jak w protokole xmpp. Zmiany były dość rozległe, więc nie wszystko może na razie działać idealnie. W związku z tym, przydał by się ktoś, kto by pomógł to testować (w tej chwili da się uruchomić ten kod tylko na systemie Linux). Możecie pytać mnie bezpośrednio o źródła do kompilacji, lub samemu pobrać je bezpośrednio z repozytorium. Jednak przez następny tydzień mogę mieć utrudniony dostęp do internetu, więc ta druga opcja może być rozsądniejsza. Czytaj dalej

Lepsze wsparcie dla przesyłania obrazków i zarządzania kontem

Tym razem skupiłem się na poprawie jakości kodu, co przyniosło poprawki drobnych błędów oraz opisane niżej ulepszenia.

Naprawiłem odbieranie przesyłanych obrazków, które przestało działać po zmianach w API nowego libpurple. Poza tym jest jeszcze jeden problem związany z API: wysyłane obrazki nie wyświetlają się w oknie rozmowy. Nie dotyczy on jednak wtyczki protokołu Gadu-Gadu, a samego komunikatora Pidgin.

Dodana została nowa funkcja: powiadomienia o statusie wysyłania obrazków. Czytaj dalej

Nowy protokół Gadu-Gadu

Wpis ten dodaję z opóźnieniem względem angielskojęzycznej wersji, ale kolejne postaram się dodawać na bieżąco. W tamtym wpisie wspominałem o drobnych postępach w pracach nad samym pluginem dla Pidgina oraz znacznych w pracach nad protokołem.

Nowa metoda zapytań DNS dla libgadu jest już gotowa. Dzięki temu poprawi się stabilność (szczególnie pod Windowsem: #6263) oraz została usunięta spora część zbędnego kodu.

Ponadto, nasza wersja libgadu różni się od oryginalnej tylko jednym wierszem kodu (#343). A przynajmniej tak będzie po publikacji wersji 1.12.0, ponieważ w tej chwili mamy stamtąd wciągnięte trochę zmian z wersji rozwojowej. Czytaj dalej

Porządki i aktualizacje

Zacząłem pracę nad tegorocznym GSoC małymi porządkami. Wyniki mojej pracy są dostępne w repozytorium Pidgina, w gałęzi im.pidgin.soc.2012.gg.

Doprowadzenie trunka do używalności: domyślny styl okna rozmów był nieużywalny (rozjeżdżał się layout), więc upodobniłem go maksymalnie jak się dało (w rozsądnym czasie) do oryginalnego, znanego z wersji 2.x. Wymaga on jeszcze pracy, ale już da się używać (#15129). Czytaj dalej

Nowy projekt w GSoC: rozwój wtyczki Gadu-Gadu w komunikatorze Pidgin

Po ubiegłorocznej przerwie, Pidgin w tym roku znowu wystartował w programie Google Summer of Code. Jedną z zaakceptowanych propozycji projektów jest rozwój wtyczki obsługującej protokół Gadu-Gadu, którą się właśnie będę zajmował. Na tym blogu będę publikował informacje o postępach prac. Jeżeli znajdą się chętni, będę też publikował buildy do testowania.

Poniżej przedstawiam najważniejsze ulepszenia, o które mam zamiar wzbogacić wspomnianą wtyczkę:

  • transfer plików;
  • synchronizacja listy kontaktów – podobną funkcjonalność oferuje protokół xmpp/jabber;
  • obsługa szyfrowania połączeń pod Windows – w tej chwili jest ono dostępne jedynie pod systemem Linux;
  • poprawa jakości kodu (zmiana niewidoczna dla użytkownika);
  • połączenia głosowe – spróbuję coś zrobić w tym kierunku, ale nic nie obiecuję.

Czytaj dalej