Migracja, której nie było

Obwąchiwałem się z serwisem Codeberg od jakiegoś czasu. Nie miałem może silnego postanowienia migracji z GitHub i motywacji do niej[1], ale gdzieś tam taka opcja istniała. Nawet zrobiłem skrypt do backupu repozytoriów z GH i pisałem o Codeberg, na którym założyłem konto.

Jednak pozmieniało się. Codeberg zmienił warunki korzystania z usług. Najpierw pojawił się zakaz utrzymywania repozytoriów, w których kod pisał głównie LLM. Bo rzekomo pojawiają się niejasności związane z copyright i nie ma gwarancji, że nie będzie szkodliwego kodu. Chwilę później dołączył zakaz projektów związanych z kryptowalutami gdyż szkodzą reputacji serwisu. I opcja migracji przestała dla mnie istnieć.

Dlaczego? Powodów jest wiele, ale najważniejszy jest chyba niesmak. Nie wiem, czy bardziej spowodowany pokazową deklaracją światopoglądową, czy podawaniem pretekstowych uzasadnień czy wypaczaniem idei FOSS. Pierwszego tłumaczyć chyba nie trzeba – manifestacja antyAI i antykryptowalutowa i chęć jej „zaistnienia” w warunkach usługi jest czytelna. A przy tym zbędna – istniejące punkty jak najbardziej już zabraniały hostowania projektów naruszających zasady. Nic nowego się nie pojawiło, po prostu zakazy są z góry, tematycznie, bez zastanawiania się.

Uzasadnienia uważam za pretekstowe, gdyż… po krótkim zastanowieniu łatwo dostrzec, że nie mają sensu. Zabronione są projekty pisane głównie przez LLMy[2]. Kluczowe słowo to oczywiście głównie. Bo czy w projekcie, gdzie tylko trochę kodu jest pisane przez LLM mogłoby dojść do naruszenia copyright lub pojawić się szkodliwy kod? Oczywiście przy założeniu, że takie rzeczy w ogóle występują, ale tę część można wyłączyć przed nawias jako nieistotną dla dalszych rozważań. Otóż mógłby, bo nie zależy to od udziału kodu generowanego przez LLM.

Kolejna sprawa to brak możliwości stwierdzenia, jak powstał kod – ręcznie czy z użyciem LLM. I w jakim stopniu. Czyli pozostaje ocena po deklaracji autora lub owocach. A zapisy dotyczące copyrightu oraz szkodliwego kodu już przecież istniały.

Podobnie jest z nieprecyzyjnym słowem powiązany (z kryptowalutami). Czy jeśli zrobiłem skrypt, który pobiera dane m.in. o kursach kryptowalut i robi analizę statystyczną/korelację z kursem walut i akcji spółek giełdowych, to już szkodzi reputacji?

Zresztą przy krótkiej rozmowie z jedną z osób, które współpodejmowały decyzję, usłyszałem „nie chce też żeby moje składki szły na bandwidth i storage dla ludków co se robią 5 projektów i puszczają armię botów w samopas”. No rozumiem, że ktoś nie chce[3]. Ale nie uzasadniajmy tego copyrightem czy szkodliwym kodem. Wystarczy napisać wprost, że takie projekty zużywają więcej zasobów.

Zostało wypaczanie idei FOSS. Chodzi o cztery wolności, których Codeberg zresztą wymaga w warunkach usługi. Dokładnie o możliwość dowolnej modyfikacji oraz o możliwość rozpowszechniania ulepszeń. Wyobraźmy sobie, że jest projekt open source, który tworzy plugin zabezpieczający przed botami przez zastosowanie PoW (proof of work). Ot, np. policzenie czegoś stosunkowo złożonego w JS. Ktoś wpada na pomysł, żeby zamiast zużywać prąd zupełnie bez sensu, dać użytkownikowi możliwość spędzenia chwili czasu na kopaniu kryptowalut[4] na rzecz właściciela strony. Obecnie taka zmiana nie ma możliwości znalezienia się w kodzie projektu rozwijanego na Codebergu, ponieważ jej zaakceptowanie rzekomo szkodziłoby reputacji serwisu.

Oczywiście można dyskutować, czy to faktycznie ograniczenie tej wolności, bo przecież można sobie modyfikować i publikować gdzie indziej. Tylko wg mnie taka możliwość jest raczej teoretyczna – community i rozwój jest w konkretnym miejscu, nikt raczej nie będzie z powodu jednego ficzera chciał zmienić platformy, prędzej odrzuci zmianę. To nie jest hosting, że zmieniamy dostawcę, przepinamy domenę na nowe IP i już.

Rozmawiałem na ten temat ze znajomym. Pojawiło się stwierdzenie, że potem jest zdziwienie i narzekanie, że (przez tego typu akcje) ludzie nie korzystają z europejskich rozwiązań, tylko uzależniamy się od rozwiązań zza oceanu. To smutne, ale skoro lokalnie dostępna jest jedynie wolność z gwiazdką…

[1] No bo to trochę taka sztuka dla sztuki by była – mało się tam dzieje, a backup mogę przywrócić gdziekolwiek.
[2] You must not share projects that mostly consist of code written by „generative AI”-tools.
[3] Co prawda pewnie wystarczyłby tu rate limiter, no ale…
[4] To nie jest nowa idea, był plugin/serwis do kopania Monero, zamiast reklam na stronie. Z różnych powodów upadło.

P.I.W.O. 2026

Po wizycie w zeszłym roku na P.I.W.O. z lekkim niepokojem patrzyłem na tegoroczną agendę, z której wynikał dalszy gwałtowny rozrost imprezy. Dwie ścieżki wykładów, dwie ścieżki warsztatów, do tego gralnia i tajemniczy PyPoznań meetup, który ostatecznie okazał się być… trzecią ścieżką wykładów. I jeszcze dodatkowe aktywności.

Na szczęście nie ma obowiązku uczestniczenia we wszystkim, a przestrzeń była na tyle duża, by to wszystko pomieścić. Frekwencja dopisała, więc tłok oczywiście był spory, ale do przeżycia. Szczęśliwie się złożyło, że chciałem iść tylko na wykłady, a wszystkie tematy, które mnie interesowały były w tej samej sali.

Nie żebym siedział tam cały czas. W zeszłym roku w sali było zimno, więc dla równowagi w tym roku było… duszno. Z tego co słyszałem wentylacja/klima wysiadły, więc ich rolę spełniało uchylne okno. Jedno. W efekcie już wyjście do holu pozwalało odetchnąć, a jeszcze lepszy efekt dawało wyjście na zewnątrz. Sytuacji nie poprawił fakt, że rano pogoda była deszczowa, w sali spodziewałem się klimy, więc wybrałem długie spodnie i bluzę. Ta ostatnia oczywiście natychmiast wylądowała w plecaku. Sytuacji nie poprawiło również wyczerpanie zimnych napojów. I raczej były tylko soki i słodzone, nie widziałem wody, choć dla mnie to nie był problem. Uwaga dla organizatorów eventów dowolnych: zgrzewka wody jest warta tyle, co dwie zgrzewki coli.

Wykłady – bardzo różny poziom, i prowadzenia, i merytoryki, i tematyki. Ogólnie było ciekawie i/lub bawiłem się nieźle. Solidna, dobrze podana dawka wiedzy na wykładzie o SSH. Większość znałem, ale były nowości. Doskonale prowadzony, nostalgiczny wykład o starych komputerach, z ciekawymi obserwacjami, który sprowokował chyba godzinną rozmowę z kumplem o starych czasach. Choć nie jesteśmy fanami starych kompów. Jedynie przy jednym wykładzie miałem wielkie WTF[1].

Tytuł brzmiał Co wie o Tobie apteka internetowa, zanim w ogóle coś kupisz, w opisie było
Dane zdrowotne trafiają do firm reklamowych, choć zgodnie z prawem nie powinny. Przyznaję, że po takiej zapowiedzi miałem oczekiwania. Liczyłem na pokazanie jak i jakie wysyłane są dane o stanie zdrowia lub chociaż lekach. Tymczasem okazało się to clickbaitem[2], bez pokrycia w treści. Moje tl;dr: Na głównych stronach aptek bywają trackery[3] blokowane przez EasyList. Potem wiele spekulacji i nieuprawnionych wniosków, bez oparcia w danych.

Chyba nie tylko ja tak to odebrałem. Najlepszym podsumowaniem wydaje mi się pytanie z sali[4] po wykładzie Jakie właściwie dane trafiają do tych trackerów? I odpowiedź: Co najmniej wizyty. Jak spojrzysz w arkusz to widzisz jakie skrypty się ładują. Jak uruchomisz u siebie skrypt to widzisz co ląduje do tych trackerów, jakie parametry są tam wysyłane. Czyli co, poszukaj sobie, bo ja nie znalazłem? Szczęśliwie i skrypty, i dane służące do zrobienia prezentacji są dostępne publicznie i każdy może sprawdzić na czym opierało się wnioskowanie.

Wg mnie szkoda, bo gdyby nie pogoń za sensacją, mogła by być całkiem ciekawa prezentacja o trackerach, reklamach i zgodach w kontekście prawnym. A tak to – złośliwie patrząc – za rok można spodziewać się dane finansowe trafiają do firm reklamowych choć nie powinny, skrypty śledzące na stronach banków, oto dowody. Nie rozumiem, czemu organizatorzy przyjęli ten wykład do agendy.

Jakby ktoś mnie poprosił o odpowiedź, po co przychodzę na tego typu eventy, co chcę usłyszeć ze sceny, to najbardziej pasują mi wykład o klawiaturze oraz lightning talk o katalogach i DNS. Tematyczne, konkretne, nieoczywiste i… dla mnie w ogromnej większości nowe. LAN party/gry tradycyjnie odpuściłem, informacja o nauce gry w go dotarła do mnie nieco za późno (znajomi chwalili).

Quiz poszedł mi fatalnie, głupie błędy. Ale po pierwsze padałem ze zmęczenia (wspominałem, że było duszno? praktycznie cały dzień w takich warunkach…), po drugie, mam wrażenie, że przynajmniej dwa razy albo missclick, albo źle zarejestrowało odpowiedź, bo zdziwiłem się, że taką wybraną mi pokazało. No chyba, że na wyświetlaczu była inna kolejność, niż na telefonie. Mniejsza o to, bo część pytań była bardziej o samą imprezę[5] i quiz traktuję wyłącznie for fun.

Była transmisja, są nagrania z podstawowych ścieżek (lightning talki nie były nagrywane). Linki na stronie P.I.W.O. Ogólnie imprezę zaliczam do udanych, trochę na zasadzie zmęczony, ale zadowolony.

[1] I zupełnie nie mam na myśli niefortunnego początku prezentacji, TBH spóźniłem się chwilę i zobaczyłem dopiero po napisaniu większości wpisu. W ogóle nie biorę tego pod uwagę i nie o tym piszę.
[2] Nie mam lepszego określenia, choć nie chodzi tu o kliknięcie, tylko o przyciągnięcie na wykład.
[3] Nazywane skryptami śledzącymi. To w ogóle niezbyt fortunne tłumaczenie, bo ta nazwa pobudza wyobraźnię i sugeruje aktywną czynność w stylu detektywa, a przecież nie o to chodzi.
[4] Dosłownie takie samo pytanie chciałem zadać.
[5] Jakby mnie kto pytał, co sądzę o konkursach, gdzie pytamy o poprzednią edycję imprezy, to sprzyjają tworzeniu bańki poprzez faworyzację stałych bywalców. I nie sprzyjają przyciągnięciu nowych ludzi. Pytania o stare dystrybucje w zupełności wystarczą. 😉

Nowa reCAPTCHA

Pojawiło się doniesienie o wprowadzeniu przez Google nowej wersji reCAPTCHA. Nazwa jest piękna Google Cloud Fraud Defense. Od razu wiadomo, jak opakowana została zmiana, w imię której będziemy poświęcać wolność. Walka z nadużyciami, bezpieczeństwo. W artykule jest security, safety, trust i fraud. Oczywiście pojawia się też AI.

Trochę miałem do czynienia z rozwiązaniami do detekcji botów, wydaje mi się, że widzę, w czym rzecz. Nowatorstwo rozwiązania nie jest w QR-code. Nie jest w konieczności użycia drugiego urządzenia do odczytania danych z pierwszego. To wszystko można oprogramować i zasymulować i zrobić na tym samym urządzeniu, automatycznie.

Prawdziwa natura nowego rozwiązania jest wg mnie widoczna w niepozornym fragmencie: By correlating telemetry across the entire lifecycle, our unified trust model identifies complex, multi-stage fraud campaigns that disconnected point solutions miss. This holistic view has demonstrated […] Wytłuszczenia moje.

Zmierzamy do tego, że poprawne rozwiązanie CAPTCHA, tj. bycie słusznie uznanym za człowieka, będzie opierało się na tym, że przynajmniej na jednym z urządzeń – o ile nie na obu – trzeba będzie wyrazić zgodę na telemetrię. Czyli pozwolić dostawcy – tu: Google – na pobieranie masy danych z urządzenia i o urządzeniu. O położeniu (geolokalizacj), o IP, o stanie baterii, zainstalowanych kodekach, fontach, o tym, jak i kiedy się porusza (akcelerometry). Wreszcie metadane o tym, które urządzenia były powiązane z którymi. I nie, nie na chwilę, tylko holistycznie przez cały cykl życia (cokolwiek ma to znaczyć).

A jeśli nie wyrazimy zgody? No cóż, w najlepszym wypadku stracimy więcej czasu na częstsze skanowanie lub rozwiązywanie innych form CAPTCHA. W najgorszym? Zostaniemy uznani za boty i pozbawieni dostępu do usług.

Czy będzie to skuteczne? Cóż, na początku pewnie tak. Czy da się obejść? Pewnie tak, ale wątpię, by obejście zyskało masową popularność. Ale masa danych, łatwych do skorelowania i niosących wiele informacji nie wprost trafi do dostawcy (tu: Google).

Dlatego mam szczerą nadzieję, że rozwiązanie spotka się z bojkotem użytkowników. Zarówno tych, którzy mieliby rozwiązywać CAPTCHA, jak i tych, którzy wybierają rozwiązanie, które wykorzystują. Zawsze zamiast rozwiązywać CAPTCHA można zrezygnować z dostępu/zakupu i zamiast tego zgłosić problem z dostępem do danych na stronie.

UPDATE: Nie padło to w pierwotnej wersji wpisu, ale oczywiście chodzi o umacnianie monopolu Google (ew. duopolu, bo jeszcze Apple). Weryfikacja na systemie Android wymaga telefonu z Google Play.