Android a wolność użytkowników
Richard StallmanDo jakiego stopnia Android szanuje wolność swoich użytkowników? Dla ceniącego sobie wolność użytkownika to najważniejsza kwestia odnośnie dowolnego oprogramowania.
W ruchu wolnego oprogramowania rozwijamy oprogramowanie, które respektuje wolność użytkowników, byśmy zarówno my jak i Wy mogli uniknąć oprogramowania, które tego nie robi. W przeciwieństwie do tego, idea „open source” skupia się na tym, jak rozwijać kod; jest to inny sposób myślenia od tego, gdzie wartością nadrzędną jest raczej jakość kodu, nie wolność. Zatem, kwestią tutaj nie jest, czy Android jest „otwarty”, ale czy pozwala użytkownikom na bycie wolnymi.
Android to system operacyjny głównie dla telefonów komórkowych i innych urządzeń, na który składa się Linux (jądro systemu, napisane przez Torvaldsa), trochę bibliotek, platforma Java i nieco aplikacji. Poza Linuksem, oprogramowanie składające się na Androida w wersji 1 i 2 zostało stworzone przez Google i wypuszczone na licencji Apache 2.0, która jest wolną licencją bez copyleft.
Wersja Linuksa zawarta w Androidzie nie jest całkowicie wolnym oprogramowanie ponieważ zawiera „binarne kleksy” (tak jak Linux w wersji Torvalda), z których część jest faktycznie używana w niektórych urządzeniach z Androidem. Używane są też inne niewolne firmware oraz niewolne biblioteki. Poza tymi elementami, kod składający się na Androida w wersji 1 i 2, w formie w jakiej został wypuszczony przez Google, jest wolnym oprogramowaniem – ale on sam nie wystarczy, żeby uruchomić urządzenie. Niektóre aplikacje zwykle dostarczane z Androidem również są niewolne.
Android bardzo różni się od systemu operacyjnego GNU/Linux, ponieważ zawiera bardzo mało GNU. Właściwie jedyny komponent wspólny dla Androida i GNU/Linuksa to samo jądro (Linux). Ludzie, którzy omylnie myślą, że „Linux” odnosi się do całej kombinacji GNU/Linux plączą się z faktami i stawiają paradoksalne stwierdzenia takie jak „Android zawiera Linuksa, ale to nie Linux.”(1) Bez tych pomylonych stwierdzeń, sytuacja jest prosta: Android zawiera Linuksa, ale nie GNU, a zatem Android i GNU/Linux to z grubsza różne rzeczy.
W Androidzie, jądro Linux pozostaje osobnym programem, którego kod źródłowy pozostaje na licencji GNU GPLv2. Połączenie Linuksa z kodem na licencji Apache 2.0 byłoby pogwałceniem praw autorskich, gdyż GPLv2 i Apache 2.0 są niekompatybilne. Wszelkie pogłoski, że Google jakoś przepisał Linuksa na licencję Apache są błędne; Google nie ma prawa zmienić licencji na Linuksie, i nie próbował. Gdyby autorzy Linuksa dozwolili używanie na licencji GPLv3, to można by ten kod połączyć z kodem na licencji Apache, a całość wydać na licencji GPLv3. Ale Linux nie został wydany w ten sposób.
Google spełnił wymogi GNU GPL dla Linuksa, ale licencja Apache, którą jest objęta reszta systemu Android, nie wymaga wydania źródeł. Google oświadczył, że nigdy nie opublikuje kodu źródłowego Androida 3.0 (za wyjątkiem Linuksa). Kod źródłowy Androida 3.1 także był wstrzymany, co czyniło Androida 3, za wyjątkiem Linuksa, po prostu niewolnym oprogramowaniem.
Google mówił, że ukrywał kod źródłowy do 3.0 ponieważ był pełen dziur [ang.: buggy] i powinniśmy czekać na następne wydanie. To może być dobra rada dla tych, którzy po prostu chcą uruchomić system Android, ale to użytkownicy powinni o tym zadecydować. Jeśli programiści i inni lubiący się pobawić by chcieli coś zmienić w swoich wersjach, taki kod by im wystarczał.
Na szczęście, Google później opublikowało kod źródłowy dla Androida 3.*, gdy opublikowana została wersja 4 (także z kodem źródłowym). Problem opisany powyżej okazał się być raczej chwilową aberracją, niż obowiązującą polityką. Jednakże, co się raz wydarzyło, może się jeszcze powtórzyć.
W każdym razie, większość kodu źródłowego różnych wersji Androida została opublikowana jako wolne oprogramowanie. Czy to oznacza, że produkty używające tych wersji Androida respektują wolność użytkowników? Nie, z kilku powodów.
Po pierwsze, większość z nich zawierają niewolne oprogramowanie Google'a, które komunikują się z serwisami jak YouTube czy Google Maps. To nie są oficjalnie częścią Androida, ale to nie oznacza, że to jest w porządku. Wiele wolnych aplikacji dostępnych w poprdzednich wersjach Androida zostało zastąpionych niewolnymi; w 2013 roku pojawił się sprzęt Android, który nie umożliwiał oglądania zdjęć inaczej niż przez niewolną aplikację Google+. W 2014 r. Google ogłosiło, że wersje Androida dla telewizorów, zegarków i samochodów będą w większości niewolne.
Większość urządzeń z Androidem jest sprzedawana z niewolnym oprogramowaniem Google Play software (wcześniej znane jako “Android Market”) Oprogramowanie to zachęca użytkowników posiadających konto Google do instalowania niewolnych aplikacji. (To są przypuszczalnie uniwersalne tylne drzwi, backdoor, choć tego jeszcze nie udowodnionio.) Oficjalnie Google Play nie jest częścią Androida, ale to nie czyni sprawy ani odrobinę mniej złą.
Google przeniosło wiele podstawowych ogólnych udogodnień do niewolnej biblioteki Usług Google Play [ang. Google Play Services]. Jeśli kod aplikacji samej w sobie jest wolnym oprogramowaniem, ale zależy od Usług Google Play, to aplikacja jako całość jest faktycznie niewolna; nie będzie działać na wolnej wersji Androida, takiej jak Replicant.
Jeśli cenicie wolność, nie chcecie niewolnych aplikacji z Google Play. Aby instalować wolne aplikacje na Android, nie potrzebujecie w ogóle Google Play, ponieważ są dostępne na f-droid.org.
Produktom Androida również towarzyszą niewolne biblioteki. Oficjalnie nie są one częścią Androida, ale ponieważ różne funkcjonalności Androida zależą od nich, są one częścią każdej rzeczywistej instalacji Androida.
Nawet pliki wykonywalne, które są oficjalnie częścią Androida, mogą nie odpowiadać wydawanemu przez Google kodowi źródłowemu. Producenci mogą zmieniać ten kod, i często nie publikują kodu źródłowego dla swoich wersji. GNU GPL wymaga od nich dystrybucji kodu ich wersji Linuksa, jeśli to uszanują. Reszta kodu, na luźnej licencji Apache, nie zobowiązuje ich do publikowania kodu źródłowego, który jest faktycznie używany.
Jeden z użytkowników zauważył, że wiele programów na systemie Android w jego telefonie zostało zmodyfikowane aby wysyłać osobiste dane do Motoroli. Niektórzy producenci dodają ukryty pakiet szpiegujący taki jak Carrier IQ.
Replicant jest wolną wersją Androida. Deweloperzy zastąpili wiele niewolnych bibliotek dla niektórych urządzeń. Te niewolne aplikacje są wyeliminowane, ale zapewne nie chcecie ich używać. Dla kontrastu, CyanogenMod (inna zmodyfikowana wersja Androida) nie jest wolnym oprogramowaniem, ponieważ zawiera niewolne programy.
Wiele urządzeń Android są „tyranami”: są zaprojektowane tak, aby użytkownicy nie mogli instalować i uruchamiać zmodyfikowanego przez siebie oprogramowania, a jedynie wersje zatwierdzone przez jakieś firmy. W takiej sytuacji, pliki wykonywalne nie są wolne nawet jeśli były zrobione ze źródeł, które są dla Was wolne i dostępne. Jednakże, niektóre urządzenia Androida mogą być „rootowane” aby użytkownicy mogli instalować różne oprogramowanie.
Ważne firmware'y czy sterowniki są generalnie także własnościowe. Te obsługujące nadajnik sieci telefonicznej (obsługa GSM), WiFi, bluetooth, GPS, grafikę 3D, aparat fotograficzny, głośnik, a w niektórych przypadkach także mikrofon. W niektórych modelach, niektóre z nich są wolne, i jest kilka, bez których możecie się obejść – ale nie możecie się obejść bez mikrofonu czy nadajnika sieci telefonicznej.
Firmware do nadajnika sieci telefonicznej jest zainstalowany fabrycznie. Jeśli wszystko co robił to bycie tam i komunikacja z siecią telefoniczną, kiedy sobie tego życzymy, mogliśmy go traktować jako ekwiwalent obwodu elektrycznego. Kiedy nalegamy na to, by oprogramowanie w urządzeniu obliczeniowym było wolne, możemy przymknąć oko na zainstalowany firmware, który nigdy nie będzie aktualizowany, ponieważ nie ma różnicy dla użytkownika, czy jest to program, czy raczej obwód.
Niestety, w tym przypadku byłby to szkodliwy obwód. Szkodliwe cechy są nieakceptowalne, bez znaczenia jak są implementowane.
W większości urządzeń z Androidem, ten firmware ma tak dużą kontrolę, że może zmienić produkt w urządzenie nasłuchujące. W niektórych, kontroluje mikrofon. W niektórych, może przejąć pełną kontrolę nad głównym komputerem poprzez pamięć współdzieloną i w taki sposób nadpisać lub zastąpić jakiekolwiek zainstalowane wolne oprogramowanie. W niektórych modelach, możliwe że wszystkich, jest możliwe aby zdalnie przejąć ten firmware i nadpisać resztę oprogramowania w urządzeniu. Celem wolnego oprogramowania jest, żebyśmy mieli kontrolę nad naszymi obliczeniami, a posiadanie backdoor jest z tym sprzeczne. O ile system obliczeniowy może mieć bugi, te urządzenia mogą być bugami. (Craig Murray, w książce Morderstwo w Samarkand, relacjonuje swoje zaangażowanie w operację wywiadowczą, która zdalnie przerobiła przenośny telefon nie-Androidowy na urządzenie nasłuchujące).
W każdym razie, firmware sieci telefonicznej w telefonach z Androidem nie jest odpowiednikiem obwodu, ponieważ sprzęt pozwala na instalację nowych wersji, i jest to faktycznie robione. Ponieważ jest to firmware własnościowy, w praktyce tylko producent może tworzyć nowe wersje – użytkownicy nie mogą.
Łącząc te punkty, możemy tolerować niewolny firmware sieci telefonicznej pod warunkiem, że nowe jego wersje nie będą wgrywane, nie może ono przejmować kontroli nad głównym komputerem i może tylko komunikować się w czasie i sposób określonym przez wolny system operacyjny. Innymi słowy, musi być ekwiwalentem obwodu, a ten obwód nie może być złośliwy. Nie ma przeszkód technicznych, by budować telefon z Androidem, który posiadałby taką charakterystykę, ale nie wiemy o żadnym.
Android nie jest systemem, który pozwala na rozwijanie go na nim samym; rozwój Androida musi odbywać się na innych systemach. Narzędzia w “software development kit” (SDK) Google wydają się być wolne, ale sprawdzenie tego jest trudne. Pliki z definicjami dla niektórych API Google nie są wolne. Instalacja SDK wymaga podpisania własnościowych licencji na oprogramowanie, których podpisania powinieneś odmówić. Replicant SDK jest wolnym zamieninnikiem.
Ostatnio pisze się o wojnach na patenty. Podczas ostatnich 20 lat kiedy prowadziliśmy kampanię na rzecz likwidacji patentów ostrzegaliśmy, że takie wojny mogłyby wybuchnąć. Patenty na oprogramowanie mogą spowodować usunięcie niektórych możliwości Androida lub uczynić go całkiem niedostępnym. Więcej informacji o tym dlaczego nie powinno być patentów na oprogramowanie znajdziecie na stronie endsoftpatents.org.
Jednak ataki patentowe i odpowiedzi Google nie są bezpośrednio związane z tematem tego artykułu: jak produkty Androida częściowo podchodzą etycznie do systemu dystrybucji i jakie mają niedociągnięcia. To także wymaga uwagi mediów.
Android jest dużym krokiem naprzód do etycznego, kontrolowanego przez użytkownika, wolnego, przenośnego telefonu, ale droga jest jeszcze długa a Google podąża w złym kierunku. Hackerzy pracują nad Replicant, ale wsparcie każdego nowego urządzenia to sporo pracy, poza tym pozostaje problem firmware. Mimo, że telefony z Androidem na dziś dzień są o wiele mniej złe niż telefony Apple lub Windows, nie można o nich powiedzieć, że szanują Waszą wolność.
Przypis
- Ekstremalnym przykładem tego zamieszania jest strona linuxonandroid.com, która pomaga „zainstalować Linuksa [sic] na urządzeniach Android”. To jest całkiem nieprawdą: co instalują to wersja systemu GNU, z wyłączeniem Linuksa, który już jest obecny jako część Android. Ponieważ ta strona promuje jedynie niewolne dystrybucje GNU/Linuksa, nie polecamy jej.
Pierwotnie opublikowano w The Guardian
Wesprzyj kampanię Free Your Android.