O pisaniu systemów słów kilka... (2013)



Symbian odszedł do krainy wiecznych programów, a z nim pojawily się wspomnienia (http://www.spidersweb.pl/2013/01/najwazniejsze-w-tygodniu-koniec-symbiana-a-my-wspominamy-nasze-z-nim-historie.html)... Pamiętam czasy Nokii 7650, 3650 (to ta z okrągłą klawiaturą, którą sympatycznie można było używać zamiast pilota do TV z uwagi na wbudowaną podczerwień), miło wspominam możliwość instalacji gier, programów... To było COŚ, jednakże z czasem zaczęły irytować problemy z certyfikatami, zwisy aplikacji, no i Nokia, która dosyć mocno dbała o nieudostępnianie netmonitora i nie przygotowała na czas przyzwocie działającej wersji dotykowej.

Teraz w systemach najbardziej popularny jest Android, czyli dosyć slamazarna wersja Javy postawiona na dosyć dobrych korzeniach (jądro linuksowe). Platforma ta cierpi na dużo problemów czyli braki uaktualnień (skutkujące tysiącem ROMów, w których najczęściej coś działa, a coś już nie), brak łatwego określenia co i kiedy i gdzie może wymieniać dane z Internetem (ważne m.in. dlatego, że transmisja danych oznacza szybsze zużywanie energii), nazwijmy to liberalne traktowanie zasad bezpieczeństwa (mamy określanie uprawnień, ale w domyślnych kompilacjach nie można ich zabierać, jak również nie można np. zabronić aplikacjom dostępu do jakichś plików na dyskach) oraz nastawienie na reklamy i zbieranie danych o użytkownikach.

A co na dekstopach ? Ano ciągle najważniejszy jest Windows, czyli obecnie prymitywizm widoku ze starymi problemami platformy NT (rozrost API, brak modularności, itp.)

Ostatnio nawet niektóre dystrybucje Linuxa zaczynają się jakby do niego upodabniać (zgadzam się z niektórymi argumentami na http://www.dobreprogramy.pl/Zwalczaj-ogien-ogniem-desktopowy-Linux-coraz-mniej-uniksowy-coraz-bardziej-jak-Windows,Aktualnosc,38877.html).

Wiecie co ? Te systemy to też już dinozaury, chociaż jeszcze tego nie widać. Dlaczego ?

Ano z kilku powodów:

  • praktycznie wszystkie sterowniki mają dostęp do wszystkiego
  • struktura sprzyja wspóldzieleniu wszystkiego (badźmy realistami - w Windows wiele osób nie ustawia np. uprawnień do katalogów i później np. przeglądarka www może odczytywać np. pliki z filmami)
  • są mało modularne
  • ciężko w nich zapanować nad tym, co i jak system robi, gdzie wysyła, itp. (a w każdym razie zajmuje to dużo czasu)
  • przy starcie systemu startuje często wiele niepotrzebnych usług

Marzy mi się, żeby w systemie kolejnej generacji:

  • główny system zawierał mikrojądro, zestaw naprawdę podstawowych sterowników i bibliotek (praktycznie wszystkie z minimalnymi uprawnieniami)
  • wersje instalacyjne aplikacji znajdowały się w pojedyńczych plikach (jak msi, deb, rpm czy apk), przy instalacji system podawał jasno, że "doinstalowany" zostanie taki a taki sterownik, aplikacja będzie łączyć się z takimi i takimi adresami i mieć dostęp do takich i takich plików na dyskach z plikami użytkownika oraz skorzysta z takich i takich uprawnień (to ostatnie jak w Androidzie). Dodatkowo w oknie instalacji będzie można sobie od razu wybrać, do jakich dysków/katalogów użytkownika aplikacja ma mieć dostęp.

Gdzie tu nowość ?

  1. wszystkie pliki (danych i binarek) aplikacji będą zapisywane w katalogu stworzonym przez system (taka piaskownica) i nic nie pójdzie realnie do katalogu systemu ("instalacja" sterowników będzie tylko ich rejestracją),
  2. wymiana danych między aplikacjami będzie możliwa przez sieć na localhost, pliki użytkownika i schowek (nie ma dostępu do plików innej aplikacji wliczając jej TEMP),
  3. podobnie to system dostarczy aplikację do odejmowania uprawnień i wreszcie to system zajmie się aktualizacjami (aplikację będą podawać odpowiednie dane w paczce instalacyjnej).

Mówiąc krótko - instaluję przysłowiowego Worda, on podaje systemowi link do aktualizacji, prosi o dostęp do plików doc, docx i nic więcej (użytkownik będzie mógł oczywiście później na swoich dyskach zaznaczyć, że np. nie daje temu Wordowi dostępu do jakiegoś dysku). Chcę Firefoxa, podaje systemowi link do aktualizacji, prosi o dostęp do portu 80, 443 i plików z rozszerzeniem htm, js, css, gif, jpg, itp. (ale żeby mógł je odczytać/zapisać poza swoją "piaskownicą", będzie trzeba dać mu uprawnienie do dysku z plikami użytkownika).

Taki Android na sterydach, w którym podstawą byłaby modularność...i np. sterownik drukarki nie mógłby odwoływać się do plików programu z pocztą albo wszystkich urządzeń USB. Możnaby go potraktować jako mniej skomplikowany Qubes (http://qubes-os.org).

Tyle wizji (która może się nie spełnić), na dzień dzisiejszy polecam lekturę o systemie Minix3 (praktyczna testowa implementacja idei szybkiego mikrojądra, którą nomen omen zajęła się UE - http://www.minix3.org/), Debian GNU/Hurd (Debian z mikrojądrem GNU Mach, który od wydania 7 Debiana ma być podobno stabilny - http://www.debian.org/ports/hurd/), ReactOS (Windows nie od Microsoft - http://www.reactos.org/), Haiku (http://www.haiku-os.org/) czy KolibriOS (http://kolibrios.org/). Te systemy są może i ograniczone, ale pod pewnymi względami mogą pokazywać kierunki rozwoju systemów operacyjnych...