Trzydzieści lat temu rozpoczęto prace nad Windows. Czy potrzebujemy następcy?
Na przełomie października i listopada 1988, do siedziby Microsoftu przyjechał Dave Cutler, zatrudniony w sierpniu i wynajęty do rozpoczęcia prac nad systemem operacyjnym nowej generacji. Ten osobliwy nabytek od samego początku nie pasował do klimatu firmy-właściciela MS-DOS. Członkowie zespołu Cutlera – bo zażądał on zatrudnienia również swoich znajomych z legendarnej firmy Digital – uparcie odmawiali integracji z procedurami, priorytetami i duchem nowego pracodawcy. Przez długi czas wydawało się, że cokolwiek stworzy Cutler, będzie drastycznie odmienne od wszystkich pozostałych produktów, „płacących rachunki za prąd” w Microsofcie: MS-DOS, Windows, Word i Excel oraz Xenix. Od niektórych z kolei miało być odmienne z założenia. Przede wszystkim mowa tu o OS/2.
Dlaczego Microsoft w ogóle rozpoczął prace nad nowym systemem? Bo nie miał żadnego w ofercie na przyszłość. Co prawda siedział na górze pieniędzy generowanych ze sprzedaży malutkiego MS-DOS, ten system jednak był zbyt ograniczony, by budować na nim dalej. Nie dało się go rozbudowywać, ponieważ jego wady i ograniczenia były jednocześnie decyzjami projektowymi i filarami, o które był oparty jego model programowania. Windows był z kolei niczym ponad kolejną aplikację na system DOS i nie przekonywał ludzi jako środowisko pracy. A system „nowej generacji”, czyli OS/2 okazał się być daleki od przyszłościowego. Ostatni kandydat, Xenix, co prawda działał na pecetach, ale jego uniksowa natura wykluczała go z roli produktu konsumenckiego.
1993 HAL-PC OS/2 NT Shootout (Uncut)
Windows na przyszłość
Istniała konieczność poprawienia OS/2 tak, by na pewno był on systemem gotowym na przyszłość. Dlaczego nie był? Po pierwsze, był pisany w językach niskopoziomowych, skutkiem czego zależał od sprzętu. Innymi słowy, jeżeli ktoś chciałby go zbudować i uruchomić na innym procesorze, niż Intel, konieczne byłoby przebudowanie niemal całości. Po drugie, nie wykorzystywał własności układu 386, nowego i nieużywanego jeszcze wtedy powszechnie układu, który ułatwiał korzystanie z dużej ilości pamięci i zapewniał jej ochronę. Głównym problemem DOSa było właśnie bardzo mało elastyczne zarządzanie pamięcią. OS/2, celując w zgodność z poprzednikiem, odziedziczył te same wady. Zachodziła potrzeba stworzenia systemu zdolnego do działania na różnych architekturach, widzącego pamięć jako obszar ciągły i odpornego na awarie (jedna aplikacja nie powinna być zdolna do „wyłożenia” całości. OS/2 nie był takim systemem. W ogóle nie było takiego systemu na rynku. To były cechy dla drogich sprzętów w wielkich szafach (mainframe), a nie dla komputerów osobistych. Te były bowiem zwyczajnie za słabe na takie fanaberie.
Cutler dostał jednoznaczne zadanie: wykorzystać swój talent i doświadczenie z projektów VMS i Mica by stworzyć przenośny, stabilny system z ochroną pamięci i trybami zgodności z poprzednikami. Miał on zastąpić obecną wersję OS/2 i wprowadzić architekturę nowej generacji (NT). Ten prosty rozkaz był niezwykle trudny w realizacji. Zwłaszcza, że Cutler chciał robić coś innego – budować komputery. System miał być skrojony na miarę takiego komputera, ale końcowym produktem miał być komplet: komputer z oprogramowaniem. Microsoft zamawiał coś nieco innego, ale szacunek dla estymy nowo zatrudnionego architekta sprawiał, że wyrażono zgodę na stworzenie prototypowego komputera osobistego opartego o egzotyczny układ MIPS. Rozwój NT OS/2 na układzie MIPS miał gwarantować przenośność: jeżeli wszystko pójdzie zgodnie z planem, to poprawnie zaimplementowany model przenośny pozwoli przebudować system pod procesor 386 bez większego wysiłku.
Prace postępowały powoli i w atmosferze wrzasków. Cutler był w tym bardzo podobny do Torvaldsa – jedynego innego człowieka, któremu udało się stworzyć kompletny system na pecety w latach 90tych. Nienawidził głupoty, widział ją wszędzie i zmuszał ludzi do pracy ponad siły. Projekt NT był przez to źródłem wielu wojen, łez i rozwodów. Zwłaszcza, że ciągle się rozszerzał: dodano do niego takie cechy, jak odporność na awarie oraz... bezpieczeństwo. Trudno w to być może niektórym uwierzyć. Wiele osób (niesłusznie) twierdzi, że Windows jest systemem dziurawym z założenia, ale w praktyce NT jest zdumiewająco konsekwentny w swoim modelu bezpieczeństwa. Są jednak ludzie, którzy o tym dobrze wiedzą. Ci z kolei mogą się zdziwić, że bezpieczeństwo jest w NT funkcją, którą „dodano”. Wszak zawsze się powtarza, że aby system był bezpieczny, należy go pod tym kątem projektować od początku...
Jednak największym wstrząsem dla NT była decyzja dodania drugiej „osobowości” do systemu. Okazało się bowiem, że inny zespół w Microsofcie potajemnie dokonał cudu: przeniósł Windows w tryb chroniony. Dzięki temu udało się osiągnąć więcej, niż oferował OS/2 i nie czekać na jego następcę nowej generacji. Wkrótce potem tak przygotowany Windows 3.0 rzucono na rynek, gdzie zjadł nie tylko konkurentów, ale i samego OS/2. Los podpowiadał, że należy postawić na Okienka i zapomnieć o nieudanym rewolucjoniście. Dlatego zażądano, by w NT ograniczyć obsługę OS/2 i skupić się na zapewnieniu zgodności z Windows. W ten sposób narodził się Windows NT, wydany po tytanicznej walce (zaimplementowaniu obsługi innego systemu w drugim!) w roku 1993.
Od NT OS/2 do Windows Server
NT zdobywało rynek powoli. Głównym graczem na rynku przez następne siedem lat pozostawał jednak klasyczny Windows, mniej bezpieczny i niestabilny, ale znacznie tańszy i żwawszy na kiepskich, domowych komputerach osobistych. Ale klasyczne Windowsy czekał nieunikniony kres. Ograniczenia techniczne nie pozwalały na obsługę wielu procesorów (oraz innych architektur), gigabajtów pamięci i wielu innych urządzeń. Bez NT w pogotowiu, Microsoft znalazłby się w tej samej sytuacji, co Apple, produkujący świetne komputery bez dobrego systemu. Próby stworzenia takowego zakończyły się parokrotnie spektakularną klęską w Cupertino. O powadze sytuacji niech świadczy fakt, że w Apple naprawdę zastanawiano się nad użyciem Windows NT jako głównego systemu na Maki...
Wiele rozwiązań technicznych NT zaprzepaszczono. Zintegrowanie serwera wyświetlania z jądrem, a następnie dopuszczenie jednej z osobowości do bezpośredniego dostępu do jądra obniżyło bezpieczeństwo i stabilność systemu, ale były to jedyne dostępne rozwiązania, gwarantujące obniżenie drakońskich wymagań sprzętowych. Rozwiązania, które zemściły się boleśnie i dekadę później utrudniły powstanie bezpulpitowego wariantu Windows Server Core. Stworzenie alternatywnego systemu operacyjnego okazało się jednak niemożliwe. Do tej pory nie powstała aż tak szeroko używana konkurencja. Zbiór powodów jest olbrzymi i dotyczy nie tylko ograniczeń technicznych, ale także zarządzania, psychologii i ekonomii. Powstaje zatem pytanie – czy NT przetrzyma dalszą próbę czasu?
Windows Phone, Windows RT i dzisiejszy Windows on ARM udowodniły, że przesadna początkowa dbałość o stworzenie przenośnego systemu opłaciła się. Fundamenty Windows można gładko przesuwać między architekturami, gwarantując przy tym wysoką zgodność wysokopoziomowego modelu programowania, co jest małym cudem biorąc pod uwagę, jak wielki jest tak naprawdę Windows 10. Chmura Azure oraz domeny Active Directory, standard w wielu przedsiębiorstwach, pokazują wiarygodność i wydajność NT na serwerach, w ramach systemu Windows Server. Istnieją również warianty IoT, umożliwiające uruchamianie Windowsów na sprzęcie typu Raspberry Pi.
NT uodporniło Microsoft na wiele niespodzianek. Jeżeli Intel ugrzęźnie w swoich próbach stworzenia nowych mikroarchitektur i wszyscy przejdziemy na ARM – w Redmond będą na to gotowi, bo NT buduje się na ARMach. Swoją drogą, Apple też będzie gotowy. Oni z kolei od początku budowali macOS na alternatywnych architekturach. Problem jest innej natury: mając doskonałe fundamenty, programiści z Redmond (zapewne skonfliktowani z marketingiem) nie potrafili stworzyć interesującej „nadbudowy” gotowej na nowe czasy.
Okna z widokiem na chmurę
Autor książki „Showstopper”, Pascal Zachary, w epilogu do najnowszego wydania owej biografii NT wspomniał, że stworzenie Windowsa nowej generacji było niewątpliwym osiągnięciem, ale Microsoft przez lata pozostawał głuchy na rewolucje czekające za rogiem, czyli internet i telefony komórkowe dla mas. W ten sposób osiągnięcia NT miały zostać „zmarnowane”, ponieważ cała praca z elektroniką (computing) miała zostać przeniesiona na urządzenia o zupełnie odmiennym ustroju i specyfice pracy. Pogląd ten, wyrażony zresztą przez dziennikarza, a nie inżyniera, jest chybiony. System NT jest bowiem doskonale przystosowany do pracy w sieciach rozległych dowolnego protokołu, a skalowalność i przenośność gwarantują poprawną pracę również na telefonach. Problem musi się zatem czaić gdzie indziej.
Porażka na rynku telefonów, serwerowe „zabetonowanie” na obszarze corporate/enterprise oraz rosnące niezadowolenie z jakości klienckiego Windows 10 (zupełnie zasłużone), mają swoje źródła w kompletnie innej kwestii, niż potencjalne braki w NT. Owszem, bazowy system mógłby być o wiele lepszy, ale to samo można powiedzieć o każdym innym. Faktem jest jednak, że jego architektura z powodzeniem wystarcza do wykorzystania we wszystkich scenariuszach oczekiwanych przez rynek. Klęska na wielu polach wynikała z podłego traktowania programistów. Dotyczy to przede wszystkim telefonów, ale serwerów także(!). Zmiana platformy programowania telefonów, z Windows Mobile na Windows Phone (CE), następnie na Windows Phone 8 i 8.1 (NT), by potem jeszcze raz wszystkich zdenerwować i wprowadzić UWP wraz z Windows 10 – to są zachowania mocno nadwyrężające cierpliwość. Jasnym było, że wszyscy poprzednicy UWP byli obarczeni wadami, które prędzej czy później sparaliżowałyby wyścig z Androidem i iOS, ale niezależnie od wymówek technicznych, końcowym efektem było zmuszanie programistów do ciągłej zmiany platformy. Konkurenci tymczasem konsekwentnie trwają przy modelu ściśle ewolucyjnym.
W kwestii serwerów, Microsoft oferuje obecnie swoją platformę Azure oraz domeny Active Directory dla firm. Model programowania aplikacji internetowych, hostowanych na serwerze IIS, jest realizowany za pomocą języków .NET. I właśnie ten nieszczęsny .NET jest źródłem niższej popularności stron ASP względem witryn PHP: przez wiele lat PHP działało na „byle systemie” i wymagało jedynie w miarę zazębionego zbioru bibliotek i serwerów. Z kolei .NET był wybredny. Wymagał Windowsów, najlepiej najnowszych. A projekty aplikacji internetowych wymagały środowiska Visual Studio. Tak skonstruowany model, płatny na każdym etapie, mały przenośny i wymyślający na nowo niemal wszystko, co już wymyślono, był esencją dawnego Microsoftu. I choć dzisiejszy .NET wygląda już zupełnie inaczej i wpisuje się we wszystkie powszechnie stosowane praktyki i wyznawane preferencje, świat okrzepł już ze swoim podziałem. Zapewne nie zmieni go nowy, lekki „dotnet”, z narzędziami wiersza poleceń, działaniem na lekkich edytorach z kolorowaniem składni i wersją na Linuksa. Decyzje o takim ukształtowaniu i licencjonowaniu .NET należało podjąć dwadzieścia lat temu. Wtedy jednak takie oprogramowanie było nie do pomyślenia w Redmond.
Z kolei problemy z gładkim dostarczaniem Windows 10 i jego jakością (continuous delivery), również niewynikające z wad NT, to efekt wysoce niedoskonałego procesu. Koncentracji na złych priorytetach i zwolnienia testerów. Więcej informacji na temat niedostosowania projektu Windows Insider to wymagań jakościowych można znaleźć w artykule "A może Microsoft aktualizuje Windows 10 zbyt często?". Wadliwość praktyk programowania i wdrażania doprowadziłaby do blamażu jakościowego i wizerunkowego niezależnie od tego, jaki system by dostarczano.
Jeżeli zatem Windows NT nie przetrwa próby czasu, to nastąpi to z zupełnie innych powodów niż braki techniczne. Ambitny projekt, z założenia odporny na przyszłość, pozostanie takowym. Rażąco błędne decyzje marketingowe, brak wizji oraz (ponownie!) konflikty ambicjonalne mogą jednak doprowadzić do stanu, w którym dorobek techniczny NT zostanie zmarnowany. Biorąc jednak pod uwagę skalę złożoności, raczej nie powstanie już następca Windowsów (podobnie jak nie zanosi się na powstanie nowego silnika przeglądarki internetowej). Bardziej prawdopodobnym jest, że Okienka zastąpi któryś z obecnych systemów. Tylko który?