Latarnik Wyborczy – nie ufaj wynikom

Już w najbliższy weekend wybory prezydenckie. Kampania z przyległościami w toku, tradycyjnie niewiele się dzieje merytorycznego, bardziej plebiscyt popularności kandydatów. Media się cieszą, bo „to ważne”. Ponieważ ludzie mało naprawdę (AKA dogłębnie) interesują się polityką, powstały narzędzie mające pomóc w wyborze kandydata. Chyba najpopularniejszy jest Latarnik Wyborczy.

Już 22 kwietnia VaGla na Twitterze pokazał coś, co mną wstrząsnęło. Dla nie mam zdania dla wszystkich kwestii system pokazuje kandydata. W twittnięciu jest napisane, że wynik mylący, bo B. Komorowski nie wziął udziału[1], ale zupełnie nie o to chodzi. Wyniki są mylące, bo traktują nie mam zdania kandydata i nie mam zdania ankietowanego jako zbieżność poglądów. To błąd, bo nie mam zdania nie wskazuje tylko brak stosunku do danej rzeczy, ale obejmuje także zupełną niewiedzę o jej istnieniu oraz totalnie inne rozwiązania.

Weźmy na przykład stwierdzenie (nie ma takiego w pytaniach LW i celowo takie biorę) podatek VAT powinien być obniżony. W tym momencie odpowiedź nie mam zdania obejmuje zarówno niewiedzę co to podatek VAT, zmianę zasad opodatkowania w ogóle (np. likwidacja VAT) jak i faktyczną obojętność.

Żeby sobie unaocznić jak fatalny jest algorytm Latarnika Wyborczego, proponuję spojrzeć na wyniki (dziś rano), gdzie dla wszystkich pytań jest nie mam zdania oraz kwestia mało ważna:

Latarnik Wyborczy nie mam zdania, mało ważne

To samo, tylko ze zmianą wagi kwestii na ważna:

Latarnik Wyborczy nie mam zdania, ważne

I wisienka na torcie. Wszędzie nie mam zdania, a kwestia bardzo ważna:

Latarnik Wyborczy nie mam zdania, bardzo ważne

Nie chodzi zatem o samą kwestię doboru pytań, choć tu oczywiście jest największe pole do wypaczenia wyników. Zakładam, że pytania są sensowne. Oczywiście ciężko jest zredukować całe spektrum poglądów kandydata do raptem 20 kwestii, ale taki urok tego typu ankiet.

Natomiast to, co się dzieje w algorytmie LW jest IMO co najmniej dziwne. Po pierwsze to, o czym pisałem wyżej. Nie mam zdania powoduje przewagę określonych kandydatów. Ja bym po prostu odrzucił te odpowiedzi i normalizował wagę pozostałych (najprostsze, nieidealne).

Po drugie, ustawienie bardzo ważne powoduje jak widać wypłaszczenie wykresu. To też słabość algorytmu, bo jeśli działa tak jak przypuszczam, to sprowadza się do przesunięcia wyniku. No i niska istotność danego pytania to spadek wprowadzenie mnożnika 0,5 dla zgodności, a wysoka istotność – wprowadzenie mnożnika 2. Czyli tak naprawdę zmiana istotności w górę jest bardziej znacząca, niż zmiana w dół. Może zamierzone, ale IMO bezpieczniej byłoby przesuwać o stałą wartość. Typu mało istotne pytanie to 75%, bardzo istotne – 125%. Czy tam 50% i 150%, odpowiednio, ale nie nagły boost do 200%…

Last but not least… Teoretycznie między mało ważne a ważne jest po prostu mnożnik, przynajmniej tak wygląda dla większości kandydatów. Ale już JKM w pierwszym ma 26%, w drugim 50% (podobnie jak ci kandydaci, którzy mieli w pierwszym 25%), natomiast w trzecim spada na 95%. Jako jedyny. Bug w algorytmie? A może cichy nerf JKM?

Pozytyw jest taki, że LW dostarcza gotowe odpowiedzi poszczególnych sztabów. Jeśli ktoś ma ochotę, to łatwo można przerzucić do tabeli i zrobić własną, niezależną, poprawioną wersję LW. Choćby w arkuszu kalkulacyjnym. Tymczasem nie sugerowałbym się zbytnio wynikami LW…

[1] Obecne wyniki są inne, bo 24. kwietnia Latarnik Wyborczy dodał odpowiedzi B. Komorowskiego.

UPDATE: Latarnik Wyborczy przyjął do wiadomości uwagi nt. algorytmu i wyjaśnia (może niezupełnie mnie to przekonuje, ale zapewne przyczyna jest trafnie wskazana, a moje niezrozumienie pewnie rozbija się o detale algorytum) z czego wynika różnica w przypadku JKM. Szczegóły w dyskusji na Twitterze.

UPDATE2: Siadłem i popełniłem własną wersję. Oparta o arkusz kalkulacyjny, brzydka (bez frontendu, bez odporności na błędy), ale algorytm wydaje się działać poprawnie. Czas realizacji (wliczając przeklepanie odpowiedzi kandydatów z LW, na co zeszła większość czasu – 45 min). Publikacja prawdopodobnie jutro.

Wybory – sytuacja, pomysły

Początkowo z wyborami było trochę śmiesznie (no dobrze, śmiech przez łzy), zrobiło się trochę strasznie (okupacja PKW, nie ma zgody na kwestionowanie wyników przez miłościwie nam panującego, wygrana PSL). Pojawiły się też głosy o konieczności stworzenia otwartego, wolnoźródłowego systemu i inicjatywy w tym temacie. Cieszy, bo oznacza, że to nie moje paranoje i pomysł ma sens.

Trochę na FB pisałem, ale to znika, więc dla pamięci (i szerszego grona). Do głowy przyszedł mi wariant minimum. Zaznaczam, że bazuje na starych procedurach ręcznych (ale cóż więcej trzeba?) i starych, sprawdzonych technologiach, choć korzystając z nowych warunków.

Wystarczyłoby, żeby komisje wysyłały proste tekstowe dokumenty o ustalonym formacie (formatkę, czyli odpowiednik protokołu powinny dostać wcześniej) przy pomocy emaila (stara sprawdzona technologia, dobrze się skalująca). W ramach ustalenia autentyczności i tajności[1] podpisanego/zaszyfrowanego GPG. Oczywiście członkowie komisji (a przynajmniej 2-3 z każdej komisji) musieli by mieć potwierdzone klucze, ale z tym nie ma problemu – i tak są na szkoleniu dla członków komisji. Maila każdy w dzisiejszych czasach ma (wystarczą 2-3 osoby z komisji, powtórzę) i wysłać umie. Czyli tak, wysyłali by wyniki podpisane GPG z dowolnych, nawet prywatnych, darmowych kont. Potwierdzenie dostarczenia jest opcjonalne (delivery notification), ale dostępne w programach pocztowych, czyli komisja wie, czy/kiedy protokół dotarł do serwera poczty PKW. Z nowoczesnych dodatków i zwiększania wiarygodności – można załączyć „skany” papierowego protokołu. Wystarczy smartfon z aparatem (znaczy: smartfon)…

Po stronie serwera email PKW nic specjalnego się nie dzieje. Jeśli chodzi o dalszą część serwerową, to program do liczenia łączy się do serwera poczty, odbiera maila, na podstawie tematu przypisuje do komisji (albo z treści formularza…). Następnie weryfikuje autentyczność podpisu GPG i w przypadku zgodności parsuje plik tekstowy.

Gdyby pliki były wysyłane w dokładnie określonym formacie, to całość jest do naklepania w Perlu w parę godzin. No ale pewnie nie będą, bo maile umożliwiają dość dużą dowolność formatu wysyłki pliku i co program, to wynalazki… (szczególne ukłony w stronę Microsoft). Można się bawić oczywiście w napisanie prostego klienta poczty dla komisji. Zaleta rozwiązania jest taka, że po wyborach PKW może udostępnić publicznie wyniki. Albo wręcz przeforwardować wyniki z danej komisji wszystkim zainteresowanym, którzy np. wcześniej zgłoszą takie zapotrzebowanie.

W kontekście wysokiego wyniku PSL i ponownie sporej ilości głosów nieważnych dla przypomnienia kawałek historii:

wybory 2010 głosy nieważne

Źródło: http://uczciwe-wybory.pl/analiza-glosow-niewaznych-wyborach-parlamentarnych-2005-2007-2011-samorzadowych-2010/

W odpowiedzi na to kolejny pomysł – kamery w komisjach i albo streaming online, albo przynajmniej rejestracja i udostępnienie obywatelom bezpośrednio po wyborach[2]. Jeśli jest podejrzenie fałszowania głosów przez członków komisji (a właśnie o dostawianiu krzyżyków mowa), to powinno to rozwiązać problem. Plus obowiązek przebywania głosów „na oczach kamer” od momentu wyjęcia ich z urny do czasu sporządzenia protokołu przez komisję.

W ten sposób obywatele mieliby możliwość prostego zweryfikowania wyborów ze swojej komisji i nadzorowania pracy (przypomnę, po zamknięciu lokali poza członkami komisji i mężami zaufania obywatele nie mają dostępu do lokali).

[1] Tajność wygląda na zbędną. Wysyłki są dokonywane już po zamknięciu lokali, więc nie ma potrzeby utajniać wyniku.

[2] Zdaję sobie sprawę, że danych jest sporo i nakłady na infrastrukturę (kamery plus streaming) nie są małe. Być może wystarczyłaby możliwość montowania kamer (z publicznym streamingiem) przez obywateli.

Porażka systemu wyborczego PKW

Jak powszechnie wiadomo, przy wyborach samorządowych zaliczyliśmy malowniczego w tym roku malowniczego faila. Nie, żeby było to trudne do przewidzenia, biorąc pod uwagę błędy w zabezpieczeniach widoczne już wcześniej. No, ale powiedzmy, że niezabezpieczenie maszyn developerskich może się zdarzyć najlepszym i nie musi rzutować na zachowanie produkcji.

Tak się składa, że w pewnym okresie mojego życia miałem regularne doświadczenia z komisjami. Pierwszy raz pracowałem w komisji dawno temu, gdy jeszcze każdy mógł się zgłaszać samodzielnie (a nie przez partię) i było losowanie wśród zgłoszonych. Miało to pewne wady, więc zmieniono sposób zgłaszania kandydatów do komisji – musiały robić to komitety wyborcze. I z tym sobie poradziłem, bo zawsze znalazł się ten czy inny komitet wyborczy, który nie wymagał bycia partyjnym aktywistą i po prostu zgłaszał studenta, który chciał sobie dorobić. Tu też mam pewne ciekawe doświadczenia i przemyślenia, ale to może przy innej okazji. Koniec końców, w młodym wieku miałem całą procedurę dobrze opanowaną, parokrotne doświadczenie, spory dystans do którejkolwiek partii politycznej… Jednym słowem, bezstronny wyborczy gun for hire.

Zwieńczeniem mojej kariery okołowyborczej było wystawienie mnie przez jeden z komitetów jako… męża zaufania. Tu akurat znajomi organizowali partii kampanię i szukali zaufanych ludzi znających się na rzeczy. Pamiętam, że już wtedy średnio się kwapiłem do pracy w komisjach ze względu na stawki. No ale jako mąż zaufania jakoś lepsze pieniądze dostałem (a pracy mniej), więc jakoś poszedłem.

Pamiętam, że były to chyba pierwsze „zinformatyzowane” wybory. Pamiętam, że samo liczenie poszło komisji, nawet sprawnie, natomiast pojawiły się „problemy z systemem”. IIRC rzecz działa się w szkole. Szkolny informatyk robił za obsługę informatyczną lokalu i rozłożył ręce przy wprowadzaniu. System „nie przyjmował” danych z karty (poprawnie wypełnionej). IIRC poszło m.in. o nieprzyjmowanie ilości kart nieważnych innej niż zero. Komisja wpadła na pomysł, że w sumie w takim razie najprościej będzie… poprawić na protokołach na zero, bo w sumie i tak nieważne. I byliby to chyba zrobili, gdybym nie uświadomił, że od razu mogą wpisać mój protest na protokole i najpewniej do rana nie wyjdą, bo centrala ich cofnie do poprawki.

Atmosfera na moment zgęstniała, ale niedługo później okazało się, że nie tylko my mamy problem (wcześniej jakoś nikt takiej informacji nie udzielił), nie działa więcej rzeczy i przyszło z centrali zarządzenie, że olać system informatyczny, przechodzimy na ręczne. Czyli, że robimy wszystko po staremu i wszystko mamy gotowe do zawiezienia. Tak czy inaczej, wtedy system zaliczył malowniczą porażkę. Swoją drogą przez tego typu akcje (robisz dobrze, siedzisz parę godzin dłużej) i brak przewidywalności czasu trwania pracy (bo w komisji jednak różni ludzie się trafiają) zniechęciłem się ostatecznie do siedzenia w komisjach.

Teraz mamy powtórkę. Znajomi z IT są bardzo rozbawieni słysząc o problemach z 3 tys. jednoczesnych połączeń. Nie dziwię się. Zaprojektowanie systemu, który przyjmie dane nie jest trudne. Dziwi mnie – i nie tylko mnie – co innego. Mianowicie, czemu co roku projektuje się i wykonuje system od zera, bez żadnego doświadczenia z lat ubiegłych? Jaki byłby problem z tym, żeby specyfikacja protokołu była prosta i jawna, część zarówno serwerowa, jak i kliencka rozwijana jako open source i używana ponownie przy każdych wyborach? Przecież format protokołu praktycznie się nie zmienia. I jest bardzo prosty. Spokojnie można studentom jako zadanie na zaliczenie semestru zadać opracowanie formatu przesyłu danych[1]. Dokumentacja systemu też na wolnej licencji, żeby łatwo można było odtworzyć – i w razie potrzeby poprawić – środowisko.

Żeby nie było, że tylko firma winna, IMHO sporą winę za sytuację ponosi PKW, która powinna być w stanie w dowolnym momencie przejść skutecznie na system ręczny. Informatyzacja wyborów to jedynie bonus, nie ich sedno. Ale u nas pokutuje wciąż – nie tylko przy wyborach – bożek systemu informatycznego, najwyższej wyroczni i zarazem wykładni. System nie pozwala i koniec, bo system to rzecz święta.

Na Niebezpieczniku jest dobry artykuł nt. wyborów, w którym jest więcej informacji nt. systemu oraz przyczyn porażki. Osobiście najbardziej przerażony jestem tym, co tam wyczytałem:

Nikt nie weryfikuje protokołów papierowych opracowanych przez GKW i wprowadzonych do kalkulatora a następnie zatwierdzonych przez TKW o ile nie pojawią się protesty wyborcze, bodajże po 30 dniach od upłynięcia czasu na zgłaszanie protestów protokoły oryginalne są utylizowane, na kolejnych szczeblach sprawdzana jest tylko suma kontrolna. (chodzi o skan kodu z protokołu papierowego i jego porównanie z sumą kontrolną danych dostarczonych elektronicznie — dop. red.)

Mam nadzieję, że suma kontrolna jest wyliczana w taki sposób, że weryfikuje jednocześnie dane nt. oddanych głosów. Tak czy inaczej spodziewałbym się, że w tak ważnym wydarzeniu nie będzie polegać się tylko na widzimisię wprowadzającego, tylko ktoś dane z papierowego protokołu wklepie dla pewności jeszcze raz. Bo prosta suma kontrolna, czy też suma kontrolna o znanym algorytmie wyliczania jak najbardziej zabezpieczy przed literówką, ale nie przed celową manipulacją (partii A dodać 50, partii B odjąć 10, partii C odjąć 40). A do komputera nie wprowadza komisja, tylko pojedynczy operator.

[1] Przynajmniej za czasów moich studiów można było, nie wiem jaki teraz jest poziom na uczelniach. Z systemem już bym nie polegał na studentach, tu się jednak trochę praktyki przydaje.