This is default featured slide 1 title

This is default featured slide 1 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »

This is default featured slide 2 title

This is default featured slide 2 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »

This is default featured slide 3 title

This is default featured slide 3 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »

This is default featured slide 4 title

This is default featured slide 4 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »

This is default featured slide 5 title

This is default featured slide 5 title

You can completely customize the featured slides from the theme theme options page. You can also easily hide the slider from certain part of your site like: categories, tags, archives etc. More »

 

Welcome to our website. Neque porro quisquam est qui dolorem ipsum dolor.

Lorem ipsum eu usu assum liberavisse, ut munere praesent complectitur mea. Sit an option maiorum principes. Ne per probo magna idque, est veniam exerci appareat no. Sit at amet propriae intellegebat, natum iusto forensibus duo ut. Pro hinc aperiri fabulas ut, probo tractatos euripidis an vis, ignota oblique.

Ad ius munere soluta deterruisset, quot veri id vim, te vel bonorum ornatus persequeris. Maecenas ornare tortor. Donec sed tellus eget sapien fringilla nonummy. Mauris a ante. Suspendisse quam sem, consequat at, commodo vitae, feugiat in, nunc. Morbi imperdiet augue quis tellus.

Internationalization FAD, Pune 2017

Po raz drugi w krótkim czasie uczestniczyłem w ważnym dla społeczności Fedory wydarzeniu. W dniach 20-22 listopada 2017 roku grupa współtwórców Fedory z Red Hat Pune zorganizowała FAD poświęcony internacjonalizacji oprogramowania. FAD, czyli Fedora Activity Day, to mini-konferencja. Od dużych konferencji, jak np. Flock, różni ją mniejsza liczba uczestników oraz to, że jest poświęcona jednemu wąskiemu tematowi.

Dzień 0.

19 listopada 2017

Właściwie powinienem napisać dzień -1 (18 listopada) i dzień 0, bo dla mnie i dla wielu innych uczestników podróż trwała ponad 24 godziny. Z racji różnicy stref czasowych i całego zamieszania trudno określić kiedy dzień się kończył, a kiedy zaczynał. Ogólnie jednak podróż poszła sprawnie i bez żadnych większych komplikacji, poza jedną: na lotnisku w Mumbaju utknąłem w gigantycznej kolejce do odprawy wizowo-paszportowej, w której spędziłem 1,5 godziny. Gdzieś daleko za mną stał Mike Fabian, a jeszcze dalej za nim Takao Fujiwara, Akira TagohPeng Wu, którzy przylecieli nieco później, niż ja.

Długa kolejka na lotnisku w Mumbaju

Długa kolejka na lotnisku w Mumbaju

Dlaczego tak długo zeszło — nie wiem. Być może dlatego, że w krótkim czasie przyleciało kilka wielkich samolotów z zagranicznymi turystami. Sami urzędnicy przeprowadzali swoje czynności dość sprawnie i bez zbędnych opóźnień. Jednak wszyscy razem zebraliśmy się i wyjechaliśmy z Mumbaju dopiero po 4 rano miejscowego czasu, a do hotelu w Pune dojechaliśmy przed 8. Wielkie brawa należą się Sundeepowi AnandowiParagowi Nemade za to, że mimo nocy i weekendu przez cały czas byli z nami w kontakcie, udzielali rad i sprawdzali, czy wszystko z nami w porządku.

Pierwszy dzień w Indiach musiał być przeznaczony na odpoczynek po podróży. Hotel okazał się bardzo luksusowy. Parag idealnie zorganizował nasz czas: pozwolił nam odpocząć do woli, a po południu zaprosił nas na zwiedzanie biura Red Hata. Pierwszy raz byłem w jakimkolwiek biurze Red Hata, więc wszystko zrobiło na mnie duże wrażenie. Pachnący nowością biurowiec, gdzieniegdzie jeszcze trwają prace wykończeniowe, wszystko idealnie zorganizowane.

Dzień 1.

20 listopada 2017

Pierwszy dzień właściwego FAD był przeznaczony na prezentacje. Zaczął się od oficjalnego przywitania i przedstawienia się sobie nawzajem.

Otwarcie i przedstawienie się

Otwarcie i przedstawienie się: Jens Petersen, Pooja YadavPravin Satpute.

Następnie każdy miał okazję przedstawić krótką prezentację na temat tego, nad czym pracuje. Okazuje się, że każdy z nas pracuje nad tym, co jest mu osobiście bliskie. Takao Fujiwara, Akira Tagoh i Peng Wu pracują nad wyświetlaniem (np. biblioteka Pango) i wprowadzaniem tekstu (IBus) w językach dalekowschodnich. Niestety, prawie nic nie wiem o tych językach, więc niewiele rozumiem z ich pracy — poza oczywistymi faktami, że jest to bardziej skomplikowane, niż w językach europejskich i potrzebne ich użytkownikom. Z drugiej strony z kolei ja opowiedziałem o swojej pracy nad formatowaniem dat w językach fleksyjnych, np. polskim. Zawsze kiedy o tym opowiadam w gronie międzynarodowym mam wrażenie, że słuchacze nie wiedzą o czym mówię. Pewnie tak samo było i tym razem.

Moja prezentacja o formatowaniu dat. Fot.: Jens Petersen.

Moja prezentacja o formatowaniu dat. Fot.: Jens Petersen.

Fleksyjność to cecha języka praindoeuropejskiego, która jednak w większości współczesnych języków indoeuropejskich zanikła całkowicie albo prawie całkowicie. Przetrwała jedynie w językach słowiańskich, bałtyckich, greckim, sanskrycie i kilku innych. Ale ta rozmaitość poruszonych tematów świadczy tylko o tym, że termin „internacjonalizacja” jest bardzo szeroki, obejmuje zjawiska występujące lokalnie w niektórych grupach języków. Jest w niej miejsce i dla języków fleksyjnych, i dla pism logograficznych, i dla wielu innych zjawisk, które nawet nam nie przychodzą do głowy.

Bliższe mi tematy przedstawili Mike Fabian, z którym od lipca tego roku współpracuję bezpośrednio nad aktualizacją danych lokalizacyjnych w projekcie glibc, i Jens Petersen, który pracuje nad obsługą języków w Fedorze (oddzielenie plików z tłumaczeniami od głównych pakietów z oprogramowaniem, instalowanie ich zgodnie z wyborem języków przez administratora itd.).

Miłym akcentem jest to, że Mike Fabian, Takao Fujiwara i inni pracują nad ulepszeniem obsługi (wprowadzania i wyświetlania) emotek w Fedorze.

Coraz bardziej obiecujący jest projekt Transtats. Przy tej okazji zorientowałem się, że Sundeep Anand nie pracuje nad nim sam. W FAD uczestniczyło kilka osób z działu testowania Red Hata, które wspierają go w tym projekcie. Ten sam dział aktywnie testuje też inne projekty, jak IBus i azjatyckie fonty.

Dzień 2.

21 listopada 2017
Praca nad naszymi projektami

Praca nad naszymi projektami. Fot.: Jens Petersen.

Drugi i trzeci dzień był przeznaczony na wspólną pracę nad naszymi projektami. W zasadzie większość czasu spędziłem pracując z Mike’iem Fabianem. Wbrew moim początkowym planom nie pracowaliśmy ani nad moim projektem obsługi nazw miesięcy w dopełniaczu w glibc ani nad automatycznym importem wszystkich danych lokalizacyjnych z CLDR do glibc. Mike mówi, że moja praca w zasadzie jest kompletna i nic więcej nie możemy do niej dodać, czekamy tylko na więcej pozytywnych recenzji. Za to spędziliśmy ten czas nad poprawianiem porządków sortowania alfabetycznego w języku łotewskimpolskim, w dalszych planach są też następne języki, w tym czeskigórnołużycki. Jest to ciężka i niewdzięczna praca. W większości języków są ustalone zasady sortowania liter z ich własnego alfabetu, ale co zrobić jeśli pojawią się litery obcojęzyczne? Językoznawcy mają ten luksus, że mogą odpowiedzieć „to się raczej nie zdarzy” albo „nie definiujemy co z tym zrobić”, natomiast my programiści musimy obsłużyć każdy ciąg znaków z Unicode. Do tego niektóre języki mają naprawdę nietypowe wymagania co do sortowania. Zwykle jest tak, że porównujemy litery od początku do końca. Jeśli jest różnica między literami, to ona ostatecznie przesądza o kolejności sortowania. Jeśli litery różnią się tylko znakami diakrytycznymi, to w niektórych językach są one traktowane jako różne litery (np. w polskim), a w niektórych jako jednakowe. Tymczasem w języku francuskim jest, a raczej była, taka zasada, że jeśli dwa słowa różnią się tylko znakami diakrytycznymi, to do sortowania alfabetycznego bierzemy pod uwagę znaki diakrytyczne… licząc od końca słowa! Ta zasada jest tak dziwaczna, że została ostatecznie odrzucona w większości odmian francuskiego, jednak nadal jest stosowana we francuskojęzycznej części Kanady. Co z tym zrobić? Jednak Mike dał radę naprawić.

Rozmawialiśmy z Jensem na temat błędu Fedory 1401096. Chodzi w nim o to, że podczas instalacji Fedora Workstation można wybrać język interfejsu użytkownika, ale pakiety z tłumaczeniami nie są instalowane, bo nie ma ich na płycie instalacyjnej, a nie ma ich, bo wszystkie razem są za duże, żeby umieścić je na płycie. Muszą być pobrane z sieci. Nie ma tego problemu w instalatorze sieciowym, bo on z założenia pobiera pakiety z sieci. Wydaje mi się, że jest potrzebne zaznaczenie w systemie, że są potrzebne jakieś pakiety, i że trzeba będzie je zainstalować w przyszłości, jak tylko sieć stanie się dostępna. To istotne, że udało mi się zrozumieć ten problem, bo w przeszłości współpracowałem z projektem gnome-software (i nadal mam nadzieję współpracować), a wydaje się, że to zadanie dla tego projektu, a właściwie dla działającego w tle PackageKitu.

Innym niespodziewanym problemem, którym zajmowaliśmy się wspólnie z Mike’iem i Pravinem Satpute było dodanie do Fedory obsługi języka filipińskiego. Właściwie sprowadziło się to do skoordynowania paru prac, bo większość albo okazała się już zrobiona, albo i tak musimy poczekać, aż tłumaczenie co najmniej jednej aplikacji będzie gotowe.

Po ciężkim dniu wieczór spędziliśmy w Amanora Mall na kręglach i grillu. Świętowaliśmy też urodziny Takao Fujiwary.

Dzień 3.

22 listopada 2017

Ostatni dzień FAD był podobny do drugiego: prace nad projektami. Jeśli o mnie chodzi, kontynuowaliśmy z Mike’iem wczorajsze prace. Oprócz tego zgłosiłem też parę nowych propozycji zmian w glibc:

Po południu odbyło się też Fedora 27 Release Party. Jak wyglądało? Pojawiło się więcej osób, pracujących w tym samym biurze, a na stół wjechało ciasto z pięknie wydrukowanym obrazkiem.

Mam wrażenie, że Release Party było zdominowane przez nas, uczestników FAD. Organizatorzy poprosili najstarszych z nas, czyli Mike’a, Jensa Petersena i mnie o pokrojenie ciasta. Było naprawdę pyszne!

To był, niestety, mój ostatni (jak dotąd!) dzień w Indiach. Serdecznie dziękuję organizatorom za wszelką pomoc, szczególnie Satyabrata Maitrze, a także Paragowi Nemade, Pravinowi SatputeSundeepowi Anandowi. Bardzo żałuję, że nie mogłem dłużej zostać.

Dzień 4.

23 listopada 2017

Większość tego dnia spędziłem w drodze, która tym razem upłynęła już absolutnie bez jakichkolwiek problemów. Do zobaczenia online albo w realu! नमस्ते!

Jesień Linuksowa 2017

Jesień

Jesień Linuksowa jest doroczną konferencją, poświęconą wolnemu oprogramowaniu i GNU/Linuksowi. W tym roku odbyła się już 15. raz, miała miejsce od 22 do 24 września w Ośrodku Rehabilitacyjno-Wypoczynkowym Muflon w Ustroniu.

Krótko mówiąc: konferencja była ciekawa, ale mój udział w niej był ograniczony z powodu ataku wirusa¹.

Dzień 1: 22 września

Niewiele było zaplanowane na ten dzień, bo uczestnicy w większości dopiero przyjeżdżali. Impreza wystartowała o godzinie 16, a pierwszym prelegentem był Igor Gnatenko z Red Hata. Opowiadał o specyfikowaniu zależności między pakietami, a zwłaszcza o nowych rodzajach zależności, dodanych w RPM 4.14. Trochę się spóźniłem na tę prelekcję, ale dzięki YouTube wiem, o czym było i muszę przyznać, że było ciekawie. Podoba mi się pomysł prezentacji, które koncentrują się na niewielkim problemie, którego zrozumienie nie wymaga zaawansowanych umiejętności, a jednocześnie dostarczają uczestnikom istotne dla nich informacje.

Jako drugi prelegent wystąpiłem ja sam. Mówiłem o tym jak przygotować aplikację do tłumaczenia i uniknąć typowych błędów. Jak wyszło – niech każdy oceni sam.

Wieczorem była kolacja i długie rozmowy na tematy zawodowe i nie tylko.

Dzień 2: 23 września

Rano obudziłem się z wielkim bólem gardła i już wtedy wiedziałem, że dla mnie konferencja jest w zasadzie skończona. Na szczęście swoją prezentację miałem poprzedniego dnia, kiedy jeszcze czułem się dobrze. Mimo to w dzień jakoś się zebrałem i wysłuchałem wszystkich prelekcji. Chciałbym wspomnieć o dwóch moim zdaniem najciekawszych. Pierwsza to wystąpienie Macieja Nabożnego o jego bibliotece libdinemic (część 1, część 2, część 3). Ta prezentacja objęła wiele tematów pobocznych, takich, jak kryptografia, certyfikaty, a przede wszystkim Maciej w przystępny sposób wytłumaczył jak działa blockchain na przykładzie bitcoinu. Druga to prezentacja Dariusza Puchalaka o OpenSSH, Ansible i innych narzędziach sieciowych (część 1, część 2, część 3, część 4, część 5). Zwykle sprawy administracyjne mniej mnie interesują, niż programowanie, a mimo to prezentacja Dariusza wciągnęła mnie. Polecam każdemu, bo jest to wielki mówca.

Piotr Kliczewski z Red Hata opowiada o platformie oVirt

Dzień 3: 24 września

Na tym koniec z mojej strony. W nocy dopadła mnie gorączka, rano zaraz po śniadaniu spakowałem się, pożegnałem i wyjechałem. Polecam oglądanie nagrań z konferencji na YouTube, a za rok przyjedźcie osobiście.

PS. Co do wirusa: jak to z nimi bywa, następnego dnia czułem się już lepiej, a dwa dni później już zupełnie dobrze.


¹ Wirusy: twory organiczne, podobne do wirusów komputerowych, chociaż całkowicie z nimi niezwiązane. Atakują komórki żywych organizmów, są całkowicie niegroźne dla komputerów.

Jesień Linuksowa: wspomnienia z zeszłego roku

Zbliża się Jesień Linuksowa 2017, zostało do niej zaledwie 3 dni. W oczekiwaniu na to wydarzenie przypomnijmy sobie jednen fragment z zeszłego roku.

Flock 2017

Flock to Fedora, doroczna konferencja użytkowników i współtwórców Fedory, odbyła się w tym roku w dniach od 29 sierpnia do 1 września w Hyannis, turystycznym miasteczku na wschodnim wybrzeżu USA. Jako że miałem okazję uczestniczyć w tym wydarzeniu chciałbym napisać parę słów jak było.

Dzień 0.

28 sierpnia 2017

Zwykle tego dnia uczestniczy przyjeżdżają i zakwaterowują się w hotelu. Czasami zdarzają się jakieś mniej lub bardziej oficjalne imprezy typu pre-party, na przykład wspólne wyjścia do knajpy. Tym razem dodatkowo o godzinie 19 odbyło się szkolenie wolontariuszy-operatorów sprzętu audio/video. Niestety, nie było mi dane w nim uczestniczyć, mimo iż zgłosiłem się do pomocy. Jedyne, co mogłem zrobić, to z żalem napisać na kanale dyskusyjnym, że nie zdążę, bo nadal jestem w podróży z lotniska do Hyannis, na co kilka osób jadących razem ze mną tym samym autobusem odpisało „ja też”. Wobec tego organizatorzy nie mieli innego wyjścia, jak tylko napisać, że szkolenie zostanie powtórzone następnego dnia o 8:00.

Dzień 1.

29 sierpnia 2017

Na początek mieliśmy krótkie zaległe szkolenie z obsługi sprzętu audio/video i zaraz zaczęła się właściwa część konferencji. Każdy dzień zaczynał się od krótkiego wprowadzenia, w którym Brian Exelbierd zapowiadał jakie wydarzenia są przewidziane na ten dzień i jakich bilecików należy użyć, aby móc w nich uczestniczyć. Następnie Matthew Miller wygłosił keynote. Jak zwykle, było to podsumowanie statystyk dotyczących popularności Fedory. Matthew zaznaczył przy tym, że statystyki mogą być bardzo niedokładne, bo Fedora szanuje prywatność użytkowników, nie identyfikuje ich i nie śledzi ich aktywności. Jedynym źródłem informacji jest ruch na serwerach, z których pobierane są obrazy instalacyjne i aktualizacje. Nie zawsze wiadomo, czy pod jedym adresem IP kryje się jedna osoba, czy więcej. Nie ma też danych na temat rozkładu geograficznego użytkowników – kraje, w których Internet jest drogi lub użytkownicy wręcz nie mają do niego dostępu mogą być niedoszacowane. Ponadto tylko GNOME i KDE zawierają wbudowane mechanizmy automatycznego sprawdzania aktualizacji, inne środowiska graficzne nie robią tego często. Nie są też zbierane dane z podziałem na różne spiny i wydania Fedory.

Matthew Miller i statystyki Fedory

Następnie wszyscy prelegenci mieli okazję krótko zaprezentować o czym będą mówić. Miało to na celu przyciągnięcie potencjalnych słuchaczy. Świety pomysł moim zdaniem, bo nie każdy mógł zainteresować się samym tytułem i podsumowaniem prelekcji, a co gorsza, można było ją zwyczajnie przeoczyć.

Długa kolejka prelegentów chętnych do zapowiedzenia swoich prelekcji

Lunch celowo trwał aż 2 godziny, bo intencją organizatorów było stworzenie okazji do swobodnych, nieoficjalnych i niezaplanowanych rozmów między uczestnikami. Naprawdę świetny pomysł, ileż to już razy zdarzyło mi się spędzić konferencję nie na oficjalnych prezentacjach, tylko na długich rozmowach w kuluarach!

Po lunchu wysłuchałem prezentacji o tym, jak przerobić aplikację na Flatpaka, prowadzonej przez Owena Taylora. Muszę przyznać, że Flatpak, bardzo obiecująca technologia dystrybucji aplikacji, nadal jest dla mnie „czarną magią”. Jako że przypomina mi (choć nie wiem, czy słusznie) sposób dystrybucji aplikacji w systemach OS X i Android, zapytałem Owena, czym te technologie się różnią. Owen podkreślił, że Flatpak oferuje znacznie lepsze zabezpieczenia. Domyślnie bowiem aplikacja we Flatpaku nie ma żadnych uprawnień, dostaje je dopiero wtedy, kiedy jest to konieczne. Oprócz tego byłem jeszcze na prezentacji Adama Williamsona poświęconej interpretowaniu wyników testów automatycznych w serwisie Bodhi i na krótkiej prezentacji Petera Robinsona na temat IoT.

Wreszcie nadszeł czas na prezentację, która podobała mi się najbardziej. Dan Horák i Sinny Kumari opowiedzieli o swoich doświadczeniach z poprawianiem błędów podczas przenoszenia programów na alternatywne architektury. Według Dana największym problemem jest przejście z najpopularniejszej kolejności bajtów od najmłodszego do najstarszego (ang. little endian) na odwrotną. Oprócz tego problem sprawiają różne długości typów, zwłaszcza char, i różne definicje size_t: ze znakiem czy bez. Sinny natomiast opowiedziała o trudności w poprawianiu programów hybrydowych, napisanych w Pythonie z wykorzystaniem bibliotek współdzielonych, pisanych w C. Debuggery nie umieją na razie wejść do środka funkcji pisanych w C. Czasami poprawka błędu zajmuje zaledwie jedną linijkę, ale jest ona tak głęboko ukryta, że jej znalezienie jest bardzo pracochłonne. Niestety, tej prezentacji słuchało zaledwie parę osób. Dzień później Paul Frields, któremu o tym opowiedziałem, skomentował to słowami „Właśnie dlatego te architektury nazywają się alternatywnymi”. Ale miało to swój urok: prezentacja przerodziła się w swobodną dyskusję, w czasie której wszyscy dzieliliśmy się swoimi doświadczeniami. Zaciekawiła mnie wzmianka o architekturach big endian. Nie miałem z nimi do czynienia, dlatego zapytałem czy Fedora faktycznie działa na którejś z nich. Dan podał przykłady: komputery mainframe serii IBM System z i klasyczne PowerPC. Prezentacja się skończyła, kamera została wyłączona, a my kontynuowaliśmy konwersacje.

Wskutek tego nie uczestniczyłem w warsztacie „Zbuduj swojego własnego Fedoratora”, prowadzonej przez Sanquiego, która zresztą pokrywała się z początkiem Wieczoru Gier. Kiedy wreszcie dotarłem, zobaczyłem już działające Fedoratory. Ale niewiele straciłem: Sanqui i Nick Bebout, prywatnie mój współlokator, krótko opowiedzieli mi co to takiego ten Fedorator i nawet pozwolili przetestować. Otóż jest to urządzenie, które wewnątrz zawiera komputerek Raspberry PI, na zewnątrz ma dołączony dedykowany ekran dotykowy, wyprowadzony jeden port USB, a całość jest zamknięta w trapezowatej obudowie, zresztą wydrukowanej na drukarce 3D. Oprogramowanie oparte na Raspbianie, ma tylko jeden cel: nagrywanie dowolnie wybranego obrazu Fedory (tak, dowolnego spinu, architektury itp.) na pendrive’ie. Bardzo przydatne na wszelkiego rodzaju targach, wystawach i konferencjach, gdzie można na bieżąco generować i rozdawać widzom gotowe pendrive’y.

Działający Fedorator

Równolegle z Wieczorem Gier odbyła się Międzynarodowa Wymiana Słodyczy, tym razem oficjalnie zorganizowana przez Justina Flory'ego. Ja przywiozłem Mieszankę Krakowską (jako wspomnienie z zeszłorocznego Flocka), a najlepszym słodyczem moim – i nie tylko moim – zdaniem była bakława, przywieziona przez Jonę Azizaj. Interesujące były też liofilizowane lody, przeznaczone dla uczestników misji kosmicznych NASA, przywiezione przez Suzanne Hillman.

Bałkańskie przysmaki: bakława (na środku), łokum (powyżej), oraz Mieszanka Krakowska (po prawej)

Dzień 2.

30 sierpnia 2017

Jak każdy dzień zaczął się od wprowadzenia, wygłoszonego przez Briana, oraz jeszcze kilku zapowiedzi prezentacji.

Potem bezpośrednio rozpoczął się warsztat na temat tworzenia stron webowych Fedory, prowadzony przez Andrea Masalę i Roberta Mayra. Trochę dziwne, że na niego trafiłem, bo prawie nigdy nie miałem do czynienia ze stronami WWW, ale podobała mi się ta odmiana. Dowiedziałem się, że strony używają do tłumaczeń frameworku Genshi, a same tłumaczenia są robione w fedorowym serwisie Zanata. Autorzy dużo wysiłku włożyli w takie przygotowanie stron, żeby tłumacze nie mogli zepsuć np. linków. Dużym zakoczeniem było dla mnie, że strony używają języka Python. W ramach warsztatu każdy z uczestników miał okazję poprawić jeden lub więcej błędów, zgłoszonych w systemie pagure. Ja zostałem poproszony o usunięcie linku do mołdawskiej społeczności Fedory, bo strona przestała istnieć. Przy tej okazji sprawdziłem, czy działają linki do wszystkich europejskich społeczności Fedory – spokojnie, było ich zaledwie kilka sztuk – okazało się, że strona rumuńska też przestała działać, więc też ją usunąłem za jednym razem.

Po lunchu, od godziny 14 do 16:30 Stephen Smoogen poprowadził dwie połączone sesje na temat EPEL (Extra Packages for Enterprise Linux). EPEL obchodzi w tym roku 10. rocznicę istnienia. Dostarcza dodatkowe pakiety dla komercyjnych dystrybucji Red Hata od wersji RHEL 4.0. Stephen podkreślił po co tak naprawdę istnieje EPEL: ludzie go używają do budowania naprawdę wielkich konstrukcji informatycznych, porównywalnych z równie trudnym inżynierskim zadaniem, jakim jest budowa mostów. Tym użytkownikom nie zależy na używaniu najnowszych wersji oprogramowania. Godzą się na używanie starych, niewspieranych programów, ponieważ akurat ich potrzebują w skryptach do swoich projektów. EPEL dostarcza im potrzebne oprogramowanie: narzędzia bezpieczeństwa, statystyczne (np. język R), alternatywne serwery WWW (np. nginx).

Stephen Smoogen przedstawia swoje nierealistyczne oczekiwania co do wzrostu EPEL

Druga część, a właściwie druga prezentacja Stephena, przerodziła się w dyskusję na temat tego, czego użytkownicy EPEL będą potrzebowali w przyszłosci. Stephen zapowiedział, że repozytoria EPEL zostaną podzielone tak samo, jak repozytoria Fedory: release (oprogramowanie w wersji oryginalnej) + updates (przetestowane aktualizacje) + updates-testing (aktualizacje przeznaczone do testowania). Zapowiedział też, że planowana jest wersja RHEL 5.11, mimo iż wersja 5.10 miała być ostatnią z serii 5.

Wieczorem tego dnia mieliśmy zarezerwowany na wyłączność Wackenhammer’s Clockwork Arcade and Carousel. Jest to w zasadzie salon gier wideo i zręcznościowych z karuzelą w stylu wesołego miasteczka. Mieliśmy też dostarczone jedzenie z food trucka i napoje.

Gry w Wackenhammer’s Clockwork Arcade

Dzień 3.

31 sierpnia 2017

Świetnym pomysłem organizatorów było rozpoczynanie każdego dnia nieco później, niż poprzedniego. Tego dnia zajęcia zaczęły się o godzinie 9, jako pierwszy wystąpił Michael McGrath, który opowiedział jakie plany ma Red Hat względem Fedory. Krótko podsumowując: użytkownicy mają rozmaite wymagania: jedni chcą jak najnowszych wersji oprogramowania, inni chcą, aby aktualizacje były dostarczane rzadziej, jeszcze inni mają wymagania mieszane: jedne programy mają być aktualizowane częściej, inne rzadziej. Fedora, w zamyśle Red Hata, nie ma być dystrybucją, w której wszystko zostaje bez zmian.

O 14:00 zaczęła się seria prezentacji na temat globalizacji, internacjonalizacji i lokalizacji. Jako pierwsi wystąpili Parag Nemade, Jens Petersen i Pravin Satpute. Podsumowali znane od dawna cele do osiągnięcia: dostarczanie tłumaczeń oraz danych lokalizacyjnych, obsługiwanych przez glibc, takich, jak formatowanie dat, wartości monetarnych, sortowanie alfabetyczne, rozmiar papieru. Omówili też zmiany w metodach wprowadzania tekstu.

Postęp w metodach wprowadzania tekstu

Wspomnieli o ostatnio wprowadzonych w Fedorze udoskonaleniach: pakiety językowe, instalowane jako słabe zależności, dane lokalizacyjne w bibliotece glibc rozbite na podpakiety (nie ma potrzeby instalowania i umieszczania na obrazach ISO danych do wszystkich języków, bo zajmują one dużo miejsca). W tej chwili Fedora obsługuje ok. 80 pakietów językowych i na tym nie zamierza poprzestać. Fedora 25 wprowadziła ułatwienia we wprowadzaniu znaków Emoji przez interfejs IBus oraz pełną obsługę Unicode 9.0. Przez chwilę dyskutowaliśmy na temat tego w jaki sposób użytkownicy mają wybierać preferowane pakiety językowe. Zasugerowałem, żeby nie wiązać tego z programami GNOME Initial Setup ani GNOME Software, bo one są związane ze środowiskiem GNOME, które nie jest jedynym w Fedorze. Lepszym pomysłem wydaje mi się umieszczenie tej funkcjonalności w pakiecie initial-setup, który jest częścią Anacondy, ewentualnie przeniesienie jej do PackageKitu, który stara się być rozwiązaniem uniwersalnym, dla wszystkich środowisk graficznych, a nawet wszystkich dystrybucji. Pravin Satpute opowiedział o swojej pracy nad fontami.

Pravin Satpute opowiada o fontach

Następnie Sundeep Anand opowiedział o Transtats. To bardzo obiecujący projekt, jego celem jest zorganizowanie komunikacji między programistami, tłumaczami i pakowaczami, ma ułatwić przygotowanie programów do dystrybucji. Nieco więcej o nim napiszę za chwilę.

W ostatniej prezentacji z tej serii wystąpili Pravin Satpute, Alex Eng i Jean-Baptiste Holcroft. Pravin podsumował dotychczasowe osiągnięcia w lokalizacji. Sprinty tłumaczeń gromadzą ponad 50 współtwórców jednorazowo. Dni testowania gromadzą więcej testerów z lokalnych społeczności, niż jakiekolwiek inne wydarzenie tej klasy. Alex Eng opowiedział o przeszkodach, na jakie napotyka projekt Zanata i planach na przyszłość. Na koniec wystąpił Jean-Baptiste Holcroft, który tak naprawdę pozamiatał swoją krótką, ale bardzo interesującą prezentacją, z sugestywą ilustracją co do tej pory osiągnęliśmy i dokąd zmierzamy.

Jean-Baptiste Holcroft…

Plany dotyczące lokalizacji, zwłaszcza projekt Transtats, wywołały tak długą dyskusję z udziałem samego Briana Exelbierda, że musieliśmy się przenieść do innej sali, bo w kolejce czekali następni prelegenci. Transtats wydaje się być narzędziem przyszłości: łączy ze sobą wiele serwisów (Zanata, git itp.). Zapobiegnie niekorzystnym zjawiskom, takim, jak tłumaczenie przez tłumaczy starych napisów, które programiści już usunęli z kodu, zautomatyzuje przepływ pracy od programistów do tłumaczy, a następnie do pakowaczy, oraz ułatwi wprowadzanie zamrożeń napisów.

Dzień 4.

1 września 2017

Przeznaczony był na podsumowanie. Chętni prelegenci mogli opowiedzieć co udało się osiągnąć podczas tej konferencji. Ten dzień był naprawdę krótki, bo do godziny 11 musieliśmy opuścić pokoje. Obsługa hotelu była jednak tak miła, że pozwoliła nam zostać nieco dłużej, żeby dokończyć rozmowy i spokojnie pożegnać się z przyjaciółmi. Jednak wiele mi to nie dało. Autobus na lotnisko i samolot powrotny nie czekałyby na mnie, godzina 15 była ostatnią chwilą na opuszczenie Hyannis.

Pożegnanie z (tylko niektórymi!) przyjaciółmi

Dziękuję organizatorom za zaproszenie mnie, pozdrawiam starych i nowych przyjaciół, których spotkałem na konferencji. Do zobaczenia za rok, a może wcześniej!

O błędach w polskich liczbach mnogich w środowisku graficznym MATE

13 marca 2017 roku opublikowana została nowa wersja 1.18 środowiska graficznego MATE. Jedną z ostanich poprawek była aktualizacja tłumaczeń dostarczanych przez Transifex. Zwykle jest to dobra wiadomość, ale tym razem w przypadku języka polskiego okazała się małą katastrofą, bo zostały zmienione (niepotrzebnie) zasady obsługi liczb mnogich.

Reguły liczb mnogich

Jak pewnie wszyscy wiemy, zasady obsługi liczb mnogich w języku polskim (podobnie jak w wielu innych językach słowiańskich) są nieco bardziej skomplikowane niż w językach zachodnioeuropejskich, np. w angielskim. Liczebniki główne łączą się z trzema różnymi formami rzeczownika:

  • 1 – liczba pojedyncza – to oczywiste i język polski nie różni się tu od innych języków indoeuropejskich.
  • 2, 3, 4 i wszystkie liczby kończące się na 2, 3, 4 oprócz 12, 13, 14 (np.: 22, 23, 24, 32, 33, 34 itd.) – mianownik liczby mnogiej. Ta grupa liczb jest określana przez niektóre narzędzia do internacjonalizacji jako niewiele (ang. few).
  • Pozostałe liczby (od 5 wzwyż oprócz liczb wymienionych powyżej) – dopełniacz liczby mnogiej. Ta grupa jest czasami określana jako wiele (ang. many).

Obsługa liczb mnogich w pakiecie gettext jest poprawna i kompletna. Jedyne, co musimy zrobić, to podać poprawne dla danego języka reguły liczb mnogich w nagłówku właściwego pliku *.po. To zadanie powinno być wykonane jednorazowo, te same reguły powinny być używane we wszystkich tłumaczeniach na ten sam język, ponieważ zasady gramatyki nie zmieniają się często; właściwie możemy spokojnie założyć, że nie zmieniają się nigdy. Zwykle w języku polskim używamy następującej reguły:

"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

To wyrażenie nie jest proste, ale też nie jest bardzo skomplikowane. Jest dokładnie takie, jakie musi być, żeby opisać wymagania języka polskiego.

Nadchodzi katastrofa

13 marca poprawka aktualizuąca tłumaczenia dostarczane przez Transifex zmieniła zasady konstruowania liczb mnogich w języku polskim. Nowa formuła jest następująca:

"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>=14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"

To dopiero jest skomplikowane, prawda? Przyjrzyjmy się co jest nie tak z tym wyrażeniem:

  • stwierdza, że język polski wymaga 4 form do poprawnej obsługi liczb mnogich, co oczywiście jest nieprawdą;
  • jest niepotrzebnie skomplikowane: jeśli pierwsza część mówi, że wyrażenie z liczbą n==1 należy do grupy 0, nie ma potrzeby sprawdzać w dalszej części, że n!=1;
  • złożoność wyrażenia nie tylko grozi błędami, ale faktycznie do nich prowadzi: druga grupa obejmuje wszystkie liczby kończące się na 2, 3, 4 (poprawnie) oprócz 12 i 13 (błąd – 14 też powinno być wyłączone z tej grupy);
  • wynik 3 jest nieosiągalny, co jest słuszne, ale wprowadza tłumaczy w błąd.

Jako że MATE to duży projekt, składający się z wielu aplikacji (np. menedżer plików Caja, edytor tekstu Pluma itp.), ten sam problem dotyczy każdej aplikacji, wchodzącej w skład projektu.

Ciężkie do naprawienia

Błąd został zgłoszony programistom MATE tak szybko, jak to możliwe. Ci jednak odpowiedzieli, że źródłem błędu jest Transifex: nie ma sensu poprawiać go w kodzie źródłowym MATE, bo następna aktualizacja tłumaczeń zamaże poprawkę.

Niestety, zgłaszanie błędu Transifeksowi nie jest proste. Serwis ten nie ma Bugzilli ani żadnego innego systemu obsługi błędów. Mimo to paru osobom udało się skontaktować z zespołem Transifeksa. W odpowiedzi usłyszeli, że Transifex skopiował zasady dotyczące liczb mnogich z bazy danych CLDR, która wymienia 4 formy liczb występujące w języku polskim, chociaż jednocześnie przyznali, że zaliczenie liczby 14 do grupy niewiele było ich błędem i poprawili to po swojej stronie. W miarę jak projekt MATE będzie aktualizował tłumaczenia pobierając je z Transifeksa, kolejne aplikacje będą poprawnie obsługiwać liczbę 14. Część z nich została już niedawno zaktualizowana, poprawka jest częścią wersji deweloperskiej 1.19.

Co na ten temat mówi CLDR

Przyjrzyjmy się co na temat liczb mnogich w języku polskim mówi baza CLDR. Faktycznie, podaje ona 4 grupy i wspomina o tajemniczym parametrze v, który ma coś wspólnego z ułamkami, bo przykłady użycia zawierają właśnie formę ułamkową (1,5 miesiąca). Jednak pakiet gettext obsługuje tylko liczby całkowite, dlatego przypadki ułamkowe powinniśmy odrzucić całkowicie.

Trudno jest znaleźć dokumentację opisującą co to jest ten parametr v, ale jak już uda nam się ją znaleźć, możemy przeczytać, że oznacza on ilość widocznych cyfr po przecinku, z zerami na końcu (ang. number of visible fraction digits in n, with trailing zeros), przy czym n jest po prostu liczbą, która ma określać liczbę rzeczownika (pojedynczą lub mnogą).

Inne języki

Również w innych językach CLDR podaje oddzielne formy dla liczb ułamkowych: czeskim, manx, rosyjskim, słowackim i ukraińskim. Z kolei w niektórych innych językach (bośniackim, chorwackim, filipińskim, dolno- i górnołużyckim, macedońskim) reguły są jeszcze bardziej skomplikowane: liczby ułamkowe łączą się z różnymi formami, normalnie przeznaczonymi dla różnych grup liczb całkowitych.

Cała ta sytuacja powinna być ostrzeżeniem dla innych języków, że ich reguły w tłumaczeniach obsługiwanych przez Transifex także mogą być błędne. Jednak po dokładniejszym zbadaniu kodu źródłowego projektu MATE nie znaleziono żadnych zmian w zasadach liczb mnogich w innych językach.

Wnioski

Okazuje się, że automatyczne kopiowanie reguł dotyczących liczb mnogich z CLDR nie jest dobrym pomysłem.

Tłumacze i koordynatorzy zespołów tłumaczy powinni się upewnić, że ich reguły liczb mnogich są nadal poprawne.

Transifex i inne platformy zarządzania tłumaczeniami nie powinny kopiować reguł dotyczących liczb mnogich z CLDR bez ich dokładnej analizy. Najlepiej skonsultować się z zespołami tłumaczy i korzystać z już istniejących reguł.

CLDR powinien uprościć opis reguł dotyczących liczb mnogich i ułatwić dostęp do ich dokumentacji.

glibc 2.26: Nowości w obsłudze języków

2 sierpnia 2017 roku została opublikowana wersja 2.26 biblioteki glibc (The GNU C library). Wśród wielu rozwiązanych w tym wydaniu problemów znalazły się również te związane z lokalizacją. Większość z poprawek została wprowadzona krótko przed publikacją. Przyjrzymy się zmianom.

Nowe wersje językowe

W porównaniu z poprzednią bieżąca wersja wprowadza wsparcie dla 6 nowych języków: aguaruna, bislama, hindi fidżyjskiego, samoańskiego, tok pisin i tongijskiego, a także dla 2 nowych odmian regionalnych: południowoazerskiego dla Iranu i maithili dla Nepalu.

Aguaruna jest językiem używanym przez 38–45 tys. rdzennych mieszkańców Peru. Bislama jest oficjalnym językiem Vanuatu, choć faktycznie posługuje się nim zaledwie 10 tys. osób. Hindi fidżyjskie jest językiem pochodzącym, ale jednocześnie różniącym się od hinduskiego. Posługuje się nim około 300 tys. mieszkańców Fidżi, co stanowi około ⅓ jego całkowitej populacji, i jest jednym z oficjalnych języków tego kraju. Do jego zapisu używa się zarówno alfabetu łacińskiego, jak i pisma dewanagari. Bieżąca wersja glibc wprowadza wyłącznie hindi fidżyjskie pisane alfabetem łacińskim, ale odmiana pisana w dewanagari także jest rozważana. Tok pisin jest jednym z oficjalnych języków Papui-Nowej Gwinei. Choć jest używany tylko przez 120 tysięcy mieszkańców, co stanowi 1,7% całkowitej populacji, jest jednocześnie najszerzej znanym językiem tego kraju. Nic dziwnego, skoro w Papui-Nowej Gwinei mówi się w 850 językach.

Język południowoazerski jest odmianą azerskiego, używaną przez ok. 13 mln osób (16% całkowitej populacji) w Iranie, zaś maithili jest używany przez ok. 3 mln osób (11,5% całkowitej populacji) w Nepalu. Oba te języki były już poprzednio wspierane przez glibc jako używane odpowiednio w Azerbejdżanie i Indiach. Teraz ich użytkownicy będą mogli korzystać z wariantów dopasowanych do ich właściwych krajów.

Poprawki

Usunięte zostały błędy w sortowaniu alfabetycznym w języku węgierskim i malajalam (zobacz także: tu). Ale znacznie więcej poprawek wprowadzono w elementach formatowania daty i czasu, zwłaszcza w nazwach miesięcy. Poprawiono literówki w pełnych lub skróconych, albo nawet w obu wersjach nazw, między innymi w językach: arabskim (w wielu odmianach lokalnych), białoruskim, bretońskim, friulskim, hinduskim, hiszpańskim (Peru i Urugwaj), joruba, kannada, konkani, malajalam, marathi, mongolskim, północnolapońskim, serbskim (tylko wersja łacińska), uzbeckim, zulu — aż 55 języków zaktualizowano do zawartości zgodnej z CLDR w wersji 31. Nazwy dni tygodnia poprawiono w arabskim, czeczeńskim i kaszmirskim — użytkownicy z Arabii Saudyjskiej jak dotąd mieli je wyświetlane wyłącznie po angielsku. W wielu językach dodano albo poprawiono tłumaczenia standardowych odpowiedzi tak i nie.

W kilku językach usunięto błędnie doklejone spacje na końcach słów, najczęściej nazw dni tygodnia. Zmiana dotyczy głównie języków Indii, ale także albańskiego (w którym problem został po raz pierwszy dostrzeżony), haitańskiego, maltańskiego i innych. Ta poprawka ułatwi estetyczne formatowanie dat w tych językach.

Unicode 10.0

Nowa wersja wprowadza też pełne wsparcie Unicode 10.0. Zmiany obejmują głównie dodanie nowych znaczków emoji.

Warto przy tym wspomnieć, że pełne wsparcie Unicode 10.0 zostało dodane do glibc zaledwie 2 dni po oficjalnej publikacji standardu.