mwiacek.comColorColor | Mobile  
Czy kompatybilność wsteczna jest dobra? Głównie o Windows, ale nie tylko. (2021)
Submitted by marcin on Tue 15-Jun-2021

polski
polski blog
salon24.pl
Windows



Internet Explorer 6 pojawił się w 2001 roku, a Internet Explorer 11 w 2012. Można powiedzieć, że te dwie wersje wyznaczają pewne granice, tj. są wersjami, przy których przeglądarka osiągnęła odpowiednio szczyt swojej popularności i dokonała swego żywota (wiem oczywiście, że były późniejsze uaktualnienia, niemniej jednak w dużej mierze i praktyce było to już tylko pudrowanie i łatanie trupa).

Dzisiaj mamy 2021, i „sensacyjne” doniesienia o tym, że już za jakiś (w niektórych przypadkach do 2029) Microsoft porzuci ten projekt, pozostawiając jedynie przeglądarkę opartą o engine firm trzecich. Pomyślmy, co tak naprawdę to oznacza.

Jedną z elementów strategii tej firmy było przez lata tworzenie „własnych” wersji uznanych standardów, np. zamiast Java Script pojawił się VBScript czy JScript. Inny zakładał, że na stronach WWW można umieszczać kontrolki działające tylko w Windows (wymagające po stronie przeglądarki tego systemu) - mówię oczywiście o ActiveX. Mieliśmy również produkowanie własnej wersji Javy, a nawet nieustanne problemy z „zamykaniem” formatów (chociażby znana historia z plikami DOC, DOCX, etc., czyli tworzenie w bólach odpowiedniego standardu, i większa z nim zgodności produktów firm trzecich).

Część z tych technologii została porzucona już dawno temu, zarówno przez Microsoft jak i różne webowe „aplikacje”. Część z wymienionych funkcjonalności obecnie jest obwarowana różnymi ustawieniami, które w zamyśle mają poprawić bezpieczeństwo (i zanim cokolwiek otworzymy, i jak musimy przeklikać się przez różne polityki). Moim zdaniem, jeżeli jest to niezbędne dla kogoś do działania, to… pozostaje tylko wyrazić ubolewanie, że czyjś biznes opiera się na czymś, co zapewne stosunkowo łatwo można złamać (wspomnijmy zresztą znów ActiveX – ich działanie z grubsza polega na tym, że w przeglądarce uruchamiamy dosyć normalny program, i już to powinno zapalić ogromną czerwoną lampkę).

Jeżeli w ogóle mówimy o HTML, to widać bardzo mocno, jak ze sposobu zapisu statystycznych i bardzo prostych dokumentów zrobiono pewien język do budowania aplikacji i prezentacji treści, w którym jest niestety bardzo dużo różnych „zlepek”. O polskich lotnikach mówiono kiedyś, że potrafią polecieć na drzwiach od stodoły. HTML jest obecnie trochę takim niewiadomo do czego nadającym się tworem - mamy stare znaczniki, mamy nowe znaczniki, próbujemy opisywać położenie elementów korzystając z pozycji, częściowo względem siebie (ale tylko częściowo), do tego dochodzą skrypty, wzory matematyczne i inne możliwości. Mnie się w tym momencie przypomina kwestie powstałe przy pracy przy ostatnim numerze Silmaris – format EPUB to tak naprawdę HTML, i przy okazji jego tworzenia miałem w różnych przeglądarkach podstawowe problemy z pokazywaniem obrazków (w niektórych enginach HTML problem był z przeskalowaniem na całą „kartkę”), ładnym pokazywaniem tytułu (w którym z prawej strony było podkreślenie i podtytuł), i ładnym pokazywaniem tekstu z lewej strony i z prawej obrazka.

Decyzja Microsoft o zaprzestaniu rozwijania silnika Trident z jednej strony była właściwa, z drugiej strony oczywiście otworzyła drogę do budowy kolejnego monopolu, którego zdecydowanie nam nie potrzeba (choć trudno w trudno to uwierzyć, Chrome za kilka lat może być uważany za takiego hamulcowego jak teraz IE).

Windows w tym momencie posiada w sobie masę starych elementów, i teoretycznie powinien pozwolić na uruchomienie różnych starszych aplikacji.

Mówię teoretycznie, gdyż:

  1. w miejscach, gdzie choć minimalnie dba się o użytkowników, nikt przy zdrowych zmysłach nie będzie męczył się z takimi zabytkami jak instalator DirectX 4.0 (obecne w systemie są nowsze wersje) czy Adobe Reader 6.0 (względy bezpieczeństwa, wspierania nowszych wersji dokumentów, archaiczny wygląd, etc.)
  2. choć o tym się nie mówi, nie wszystkie starsze aplikacje można uruchomić – przypomnijmy sobie apki 16-bitowe (ich wsparcie wygasło w Windows 64-bit), czy z DOS (Windows NT nie ma DOS, i w praktyce najczęściej trzeba polegać np. na DOSBox)
  3. starsze specjalistyczne apki działają często z określonym sprzętem (np. kluczami sprzętowymi), a do tych też często szukać ze świecą sterowników (obecnie wszyscy używają Windows 64-bitowych, a tam jak pięść do nosa pasują sterowniki 32-bitowe)

Biorąc to wszystko pod uwagę, to wychodzi, że w praktyce albo stawia się maszynę wirtualną (z Windows 98 czy XP), albo szuka się starego sprzętu i stawia wszystko na nim, co potrzeba, albo… szuka się emulatorów albo… w ogóle się z tego nie korzysta.

Żeby była jasność – przy niektórych komponentach producent jasno pisze, że umywa ręce („use of this technology may pose security risks” jest wymienione np. przy NTVDM). Dodatkowo wydaje się, że obecny Microsoft z firmy, która wyznacza standardy, stał się jednym wielkim miejscem do kopiowania. Chcemy Linuxa? WSL. Może terminal? Windows Terminal. Menedżer pakietów? WinGet.

Te próby są jeszcze często i gęsto nieporadne, i zamiast podróbki chyba wciąż lepiej sięgnąć po oryginał. Dużo ludzi narzeka, że w Linuxie co i rusz zmieniają się biblioteki, że jest tyle zależności, że to złe dla biznesu, itp. Myślę, że gdyby powiedzieć, że taki IE zostanie wyłączony w 2050 roku, to i tak byłby płacz i zgrzytanie zębów, że to za wcześnie. Tymczasem to, że w kolejnych wersjach linuksowych dystrybucji jest wymiana kodu, jest poniekąd bardzo dobre, bo ten kompilowany jest z nowymi opcjami i optymalizacjami.

Co jest bardzo ciekawe – przy Linuksie często i gęsto musimy przepychać przez sieć tylko rzeczywiście zmienione elementy, a u Microsoft co miesiąc idzie do nas jeden wielki blob (jedną z nowości miało być to, że kolejne wersje rozwojowe systemu są instalowane u użytkowników z wtorkowymi poprawki i ostateczna poprawka je tylko włącza, tymczasem jeśli ktoś nie dostał tego cuda z Windows Update, to nie może go normalnie po ludzku włączyć, chociaż jest na dysku, tylko musi przepychać przez sieć i przeinstalowywać cały system, co jest oczywistym nonsensem).

Żeby mieć pełne wyobrażenie o stopniu skomplikowania – na moich VDI pełne środowisko linuksowe z podstawowymi apkami i wodotryskami zajmuje jakieś 7 – 8 GB, a to od MS około 30 GB (jakoś nie wierzę, że w tym drugim przypadku na dysku mam mniej starych i dziurawych wersji).

Odpowiadając na tytułowe pytanie – teoretycznie opłaca się utrzymywać kompatybilność wsteczną, ale w praktyce przy takiej implementacji jak w wykonaniu MS to kula u nogi, hamulcowy postępu i powód do wielkiego wstydu. Proszę też mnie nie zrozumieć źle – brak zmian czasami jest nawet wskazany, z kolei w innych sytuacjach ich brak to po prostu tragedia (szerzej pisałem o tym w notce „Zmieniać czy nie zmieniać?”).

Dlaczego więc zafundowano nam takie marnotrawstwo? O tym też już pisałem w tekście „Zmieniać” – m.in. wspominałem, że im większa struktura (firmy) tym bardziej część zarządzająca i marketingowa bierze górę nad kadrą techniczną, a konkretni ludzie wręcz zaczynają blokować zmiany. Problem tkwi w celach – zamiast mieć na celu budowanie najlepszego systemu różne zespoły żyją w swoim świecie

i starają się, żeby istniejący porządek jakoś działał (i stąd chociażby powstają płacze i lamenty, gdy coś zmienia się w kodzie i trzeba przerabiać testy automatyczne).

Microsoft obecnie ma do wsparcia kilkanaście, jeśli nie kilkadziesiąt wersji systemów (oprócz tych oczywistych typu Windows 10 21H1, 20H2, etc. dochodzi mnogość wariantów, czyli wydanie 32-bit, 64-bit, ARM, jak również starsze systemy dla firm z dodatkowym wsparciem). Praca związana z tym bagażem nie pozwala wyjść ponad to… a że system w kolejnych wersjach nie jest całkiem kompatybilny z poprzednikiem, to obecne wdrożenia kolejnych wydań dziesiątki trwają miesiącami lub latami.

Nie chciałbym używać słów, że istnieje lepsze wyjście, ale… istnieje. Jest to budowanie oprogramowania w modelu Open Source połączonego z bazarem (też o tym pisałem w tekście „Zmieniać”). Tam nie takiego parcia na terminy. Tego typu projekty charakteryzują się tym, że często szybciej dostajemy coś bardziej dostosowanego do potrzeb. Weźmy choćby sterowniki. Windows zmieniał kilka razy ich model, i szczerze wątpię, żeby np. moja stara podczerwień jeszcze tam zadziałała. O braku kompatybilności pisałem chociażby we wpisie „A teraz drogie dzieci... kilka słów o sterownikach w Windows (i pingwinie też)”. W przypadku jądra linuksowego bardzo często i gęsto widać natomiast regularne migracje, które powodują, że nawet sprzęt sprzed 20 lat nie ma większego problemu. Ktoś powie, że to nie ma sensu. Fakt, że sprzęt bardzo archaiczny może nie ma sensu


ale sam do dzisiaj mam myszkę, która leży u mnie mniej więcej od 2004 i nie zamierzam jej zmieniać, dopóki się nie zepsuje.

Wczoraj zrobiłem małe porównanie dosyć archaicznego x86 i świeżego M1 – myślę, że Windows jest dokładnie takim samym dinozaurem jak ten pierwszy. Na pewno wiem jedno – jeśli coś „nowego” jest znacznie lepsze, to ludzie migrują się sami bez zachęcania (a skoro trzeba zachęcać albo uciekać się do kija jak robi Microsoft, to przysłowiowa marchewka jest zbyt mała).

Popatrzmy jeszcze krótko na Apple – firma zrobiła migrację sprzętu już kilka, i owszem na początku każdej ery były narzekania, ale ludzie to robili, bo miało to sens. Ostatnia rezygnacja z Intela? Proszę bardzo, na dzień dobry jest emulacja, a potem przy natywnej kompilacji wzrosty prędkości nawet kilkukrotne. Ktoś chce używać fizycznego MacBooka ze starym procesorem? Też nie będzie problemu przez kilka lat… jest jednak wyraźny sygnał, żeby rozważyć, co się traci.

Myślę, że firma Cupertino daje w tym obszarze bardzo dobry przykład tego, co należy robić. Jest też coś z drugiego bieguna, czyli tak bardzo przez wszystkich lubiane smartphony z Androidem. Tam kompatybilność wsteczna i patologiczne wykorzystanie szlachetnej idei Open Source przyczyniają się do jeszcze gorszych patologii niż w Windows. Wszystko związane jest z krótkim cyklem życia produktu - fabryki produkują, my kupujemy; fabryki produkują jeszcze więcej, my kupujemy jeszcze więcej… i tak w kółko. Dzięki ogromnej bazie programowej możliwe jest wprowadzenie modelu, który właściwe nakręca się sam, i wywołuje katastrofą ekologiczną pewnie nie gorszą niż samochody elektryczne (bardzo proszę nie mówić o postępie, bo ten w wielu wypadkach jest iluzoryczny).