Dajmy już sobie spokój z UWP. I ze sklepem Microsoft Store też

Dajmy już sobie spokój z UWP. I ze sklepem Microsoft Store też28.06.2019 17:11
Dajmy już spokój z UWP

Dajmy już sobie spokój z tym UWP. I ze sklepem Microsoft Store teżOd ponad miesiąca mierzę się z tematem nowych komponentów programistycznych zaprezentowanych w maju na konferencji Microsoft Build. Początkowo chciałem przedstawić je jako rewolucję. Wszak poza nowymi narzędziami, jak Windows Terminal oraz środowiskiem linuksowym w postaci WSL2 zaprezentowano także przełomowy .NET 5, wyglądający na wielkie osiągnięcie inżynierii oprogramowania. Istotnie, .NET 5 oraz następne nadchodzące po nim wersje to nowy rozdział w historii .NET i w praktyce najlepszy sposób na odświeżenie niegdyś nowoczesnej, a dziś już dość wiekowej platformy. Podobnym przemianom ulega PowerShell (o którym już wkrótce).

Czasy się zmieniają, a Win32 dalej górą

Jednak z rewolucjami w Windows jest jak z końcem świata: ogłasza się go niemal co chwilę, wszyscy z niecierpliwością na niego czekają, licząc na ulgę, a on uparcie nie chce nadejść, zmuszając do życia kolejny dzień w świecie, który trzeba dzielić ze spoconymi ludźmi w autobusie, muzyką disco polo i Kumulatywnymi Aktualizacjami pakietu Adobe Flash Player. Mimo wielokrotnych ogłoszeń, przełom nie następuje. A ponieważ tychże nowych technologii ktoś jednak używa, argument że okazały się porażką jest przyjmowany z trudem lub odrzucany. I nie chodzi tu tylko o Windows 10. Ani nawet o Windows 8. Tę samą historię przeżywał sam .NET Framework i jako żywo pamiętam, jak ogłaszano, że bliżej nieokreślona, „przyszła” wersja Windows będzie „napisana” właśnie w nim. Nie chodzi o to, że to niemożliwe, bo .NET wymaga maszyny wirtualnej, więc raczej trudno w nim napisać cały system, a o to, że popularyzacja platformy przebiegła w stopniu znacznie niższym, niż początkowo zakładano.

Nie można powiedzieć, że .NET okazał się klęską. Przez ostatnie dwadzieścia lat w języku C♯ powstała niezliczona ilość aplikacji. Znajomość .NET to solidna, poszukiwana umiejętność na rynku pracy, a samo środowisko uruchomieniowe jest niezwykle rozbudowane. C♯ stał się standardem ECMA i jeszcze wiele lat przed uwolnieniem jakoopen source powstały jego alternatywne implementacje. Jedna z nich – Mono – wciąż pełni ważną rolę i zasila wnętrze środowiska Xamarin, choć należy się spodziewać, że z biegiem czasu jednak zniknie.

Niespełnione obietnice

Niemniej, Windows nie został przepisany do .NET, podobnie, jak wcześniej jego GUI nie zostało przepisane do HTML/JS (co obiecywał Internet Explorer 4). Plan maksimum nie został zatem zrealizowany. Jednak ze względu na przebojowy sukces .NET na rynku, słowa „.NET był porażką” nie są dobrze przyjmowane i bardzo łatwo argumentować, że są błędne. Mocno utrudnia to dyskusję. Tym bardziej, że dorzuca się w niej szereg pozornie trafnych, ale w praktyce nieistotnych argumentów. W kwestii .NET FX 3.0 i Avalon była mowa o tym, że brak eksplozji popularności to wina anulowania projektu Longhorn i wyrzucenia kilku lat prototypowania do kosza.

Xamarin można dziś zainstalować jako komponent Visual Studio. Co za czasy.
Xamarin można dziś zainstalować jako komponent Visual Studio. Co za czasy.

Paralele między .NET a dzisiejszą dyskusją dotyczącą Windows 10 i UWP są uderzające. Dziś jako wymówkę braku popularyzacji UWP stawia się klęskę na polu mobilnym: po co komu uniwersalne aplikacje, skoro nie ma telefonów z Windows, a tablety w ogóle wymarły? Jednocześnie, wiele osób burzy się na słowa o niepowodzeniu UWP mówiąc, że przecież powstało mnóstwo aplikacji uniwersalnych, i choć stanowią mniejszość, jest to i tak ilość nie do pominięcia. Ale dlaczego mówimy o .NET, a nie o Windows 10? Ano dlatego, że konieczne jest dogłębne wytłumaczenie powodów niedoszłej rewolucji i .NET pełni rolę doskonałego przykładu.

Ogłoszony w maju .NET 5.0 ma na celu zamknięcie luki między starym Frameworkiem a nową, otwartą i wieloplatformową wersją .NET Core. Rozbieżność ta, w postaci braku wymienności kodu, bywała bolesna. Z poziomu starego .NET FX nie da się robić nowych rzeczy z Core, a w Core nieosiągalne są niektóre rzeczy z FX, szczególnie te skoncentrowane ściśle na Windows. Brakowało też innych rzeczy. Sam natknąłem się na brak obsługi scaffoldingu Entity Framework dla projektów ASP.NET w języku Visual Basic (oczywiście wszystko da się napisać ręcznie), ale normalni ludzie trafiali na poważniejsze, mniej kosmiczne problemy. Nowy .NET 5.0 ma docelowo pojawić się jako wbudowane API w Windows i egzystować na równi z CLR 3.5 i 4.8.

Nie tak miało być

Prawdziwy przełom czeka jednak za rogiem i nie jest nim wersja 5, a wersja 3. „Piątka” będzie raczej porządkowaniem ścieżek serwisowych. Mimo nowych funkcji, będzie mniej rewolucyjna, niż 3.0. W nadchodzącej „trójce” możliwe jest wykorzystanie Windows Forms (lol) oraz WPF. Możliwe jest też łączenie dwóch różnych światów: korzystanie z kontrolek UWP wewnątrz formatkowych aplikacji klasycznego pulpitu WPF. Pomieszanie obu API jest możliwe w ramach funkcji XAML Islands 1.0, dostępnej w systemie Windows 10 w wersji 1903. Dzięki temu, programiści chcący wykorzystać zalety UWP (a jest ich niemało!), nie muszą przepisywać całej swojej klasycznej aplikacji na WinRT i jeszcze dodatkowo celować w inny Framework. Wystarczy bowiem zaciągnąć NuGetową paczkę Microsoft.Toolkit.Wpf.UI.XamlHost i (ignorując kwestię tego, ile runtime'u trzeba dorzucić do programu, żeby dało się do uruchomić gdzie indziej) możliwe staje się wykorzystywanie kontrolek UWP w projekcie o bardziej klasycznie pulpitowym kodzie.

.NET Core to nowe możliwości ale i nowe narzędzia. Polecenie 'dotnet' pozwala tworzyć projekty bez ciężkiego IDE Visual Studio
.NET Core to nowe możliwości ale i nowe narzędzia. Polecenie 'dotnet' pozwala tworzyć projekty bez ciężkiego IDE Visual Studio

No ale przecież to dobrze, prawda? Mniej sztucznych ograniczeń i większa władza oddawana w ręce deweloperów. Da się stworzyć więcej za mniej i to wykorzystując UWP! Toż to sukces, progres, awans i rozwój. Zdecydowanie nie porażka ani klęska UWP, jak wielu twierdzi – czyż nie?

Ano nie. Zamknięcie kontrolek, funkcjonalności i klas UWP w oddzielnych projektach, niedostępnych z poziomu starego API, nie było decyzją ideologiczną. Brak możliwości wykorzystania UWP poza projektem Aplikacji Uniwersalnych, trwający wiele lat, to nie światopoglądowy upór, nieprzejednane trwanie w głupocie i brak umiejętności przyznania się do błędu. Oba wyżej wymienione rodzaje aplikacji celowo miały się nie mieszać, na przykład z powodu bezpieczeństwa i ułatwienia zarządzania pakietami. Gdyby nie istniało ryzyko zmarnowania zalet integralności WinRT, wszystkie nowe kontrolki po prostu dorzuconoby do już istniejącego toolboksu WPF i nikt nie przejmowałby się takim sztucznym podziałem. Problem w tym, że ten podział wcale nie był sztuczny. Zrezygnowano z niego, bo nikt (jest to oczywiście „nikt” z gwiazdką) się do niego nie stosował.

Podobno to wszystko przez telefony

I powodem tego wszystkiego była klęska Windows Phone, tak? Przecież wcale nie o to chodzi. Wystarczy trochę popatrzeć na wykresy serwowane przez Gemiusa, w tym historyczne. Głównym powodem nieużywania UWP nie był brak popularności Windows Mobile, a nadmiar popularności Windows 7. API Windows 8 nie zostało przeportowane w dół. Tymczasem .NET Framework wydano nawet na Windows 98, a Windows Vista otrzymał aktualizację KB2117917, która dorzucała API z Siódemki. Owszem, Windows 8 miał być rewolucją i dodanie API do poprzednich wersji byłoby bardzo drogie i trudne. A przecież Windows 8 był płatny! Dopiero 8.1 i 10 były darmowe, ale aktualizacja do nich odbywała się nierzadko wysokim kosztem jakościowym, co dość mocno zniechęcało.

Windows 10 Mobile wciąż dostaje aktualizacje
Windows 10 Mobile wciąż dostaje aktualizacje

Po co tworzyć aplikacje dla systemu, którego wiele osób nie chce, skoro można stworzyć taką, która działa na każdym? To myślenie, w świecie aplikacji mobilnych i wzrostu popularności alternatywnych OS-ów, doprowadziło do popularyzacji formatu Electron. Framework Electron.js dostarcza wszystkie zalety, które obiecywał UWP, a w dodatku robi to za darmo i na więcej platform. Robi to źle, ciężko, brzydko, niebezpiecznie i powoli. Ale docelowo skutecznie. I dlatego się przyjął. Wie o tym nawet Microsoft: Skype, Teams (to jest dopiero okropność!) oraz nowa aplikacja XBox to wszystko kontenery Electrona. Bowiem zamiast tworzyć wersje Skype'a dla Windows 7, Linuksa, macOS i Windows 10, lepiej stworzyć jedną.

Jak wobec tego wytłumaczyć przenoszenie na Electrona aplikacji, które będą działać wyłącznie na Windows 10? Są dwie hipotezy: pierwsza jest taka, że na rynku brakuje specjalistów od UWP, a od JS jest ich aż nadto. Druga jest gorsza: framework UWP jest niewystarczający i nie nadaje się do cięższych zastosowań. Biorąc pod uwagę niską jakość wbudowanych aplikacji Windows 10, nie jest to aż tak nieprawdopodobne. Aczkolwiek bardziej chyba chodzi o wariant numer 1, z brakiem fachowców. Patrząc na to, jak działa i gdzie instaluje się Microsoft Teams, z powodzeniem można założyć, że naprawdę bardzo mocno brakuje specjalistów i nawet w samym Microsofcie trudno o inżynierów umiejących zaimplementować wytyczne pochodzące właśnie z Redmond. Tymczasem Teams nie jest nawet dostępne w Sklepie Windows.

Sklep Windows to żart

Sklep wszak też zwiędnie. Jego porażkę jednak ponownie wiele osób usiłuje sprzedać jako sukces, podobnie, jak „sukcesem” miało być UWP. Sklep odnosił same porażki sprzedawane jako sukcesy. Najpierw dodano do niego aplikacje desktopowe, twierdząc, że dzięki konteneryzacji, sandboksowaniu i możliwości używania kafelkowego UI one też są „aplikacjami UWP”. Następnie usunięto z niego aplikacje pochodzące z Redmond (Office i Teams). Wreszcie, wydzielono mechanizm bezpiecznej konteneryzacji serwisowej do oddzielnej funkcji, w postaci pakietów MSIX. Zatem Sklep odniósł kolejne zwycięstwo: jego format pakowania aplikacji może być wykorzystany również w Windows 7 oraz starszych wersjach Dziesiątki. Sukces! Większa dostępność, więcej władzy w rękach programistów, rozwój platformy! I tak dalej...

Dla kontrastu przypomijmy: Poprzednie wersje pomysłów na to samo zostały przez Microsoft udostępnione dla starszych wersji: Internet Explorer działał nawet na Windows 3.1. Framework .NET opublikowano dla Windows 98. Mechanizm Instalatora Windows (MSI), wprowadzony w Windows 2000, został udostępniony również na Windows 95. Jest dziś produkt, który poprawnie wdraża swoje komponenty jako platformę na różne systemy. Jest nim Google Chrome. Używa do dziś pół polskiego internetu.

Microsoft może zmieniać definicję pakietu UWP i twierdzić, że platforma ta się rozwija. Może również promować konteneryzację i wmawiać nam, że Sklep dalej ma sens (Windows Terminal niedawno się na nim pojawił). Ale nie zmienia to faktu, że Windows 10 zostaje coraz mocniej rozmontowany, zresztą zgodnie z przewidywaniami sprzed pół roku. Pozostaje czekać, aż z obrazka znikną również kafelki. To niewątpliwie nastąpi i to już niedługo. Być może wraz z zadumą „co nam w sumie nie pasowało z tym Windows 7...?”. Wystarczy jeszcze kilka takich „sukcesów”, jak te wyżej wymienione. 😉

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.