Web (of) Intents – czego brakuje dzisiejszej Sieci?


12 lipca 2014 / Comandeer


Nowy pomysłSieć ostatnimi czasy przeszła niebywałą ewolucję. Powstanie HTML5 i trwające prace nad ECMAScript 6 nieustannie przeobrażają oblicze Internetu. Czas zwykłych, statycznych stron WWW odchodzi bezpowrotnie w przeszłość – zaczyna się era zaawansowanych, rozbudowanych aplikacji internetowych (często brakuje im jednak sporo w kwestii dostępności, ale to temat na zupełnie inną historię…). Złote czasy? Niezupełnie.

Czego brakuje dzisiejszej Sieci?

Dzisiejsza Sieć jest… strasznie samolubna. Wszyscy próbują budować swoje własne, zamknięte ekosystemy. Chcesz zedytować dokument online? Masz do wyboru Pakiet A, z genialnym edytorem tekstu, ale i badziewnym edytorem prezentacji lub pakiet B, z ichniejszym Wordem wołającym o pomstę do nieba, za to z nagradzanym MocnymPunktem. I nie ma żadnej możliwości edytowania części tutaj a części tam – żadne z wymienionych rozwiązań nie dostarcza bowiem sensownej opcji eksportu. Ba, obydwa jeszcze dodatkowo wymagają zaprzedania swej duszy przy rejestracji. Raczej nie to mamy przed oczami, mówiąc „Otwarta Sieć”.

Jest jedna rzecz, w której nawet Windows jest lepszy od Sieci. Rzecz tak oczywista i podstawowa, że nikt, kto używa tego systemu, nigdy się nad nią dłużej nie zastanawia. To tak rudymentarna rzecz, że nawet Linuksiarze nie wyobrażają sobie życia bez niej (mówię o tych, którzy nie są aż tak fundamentalni, jak szaleńcy bez środowiska graficznego ;)). O czym mówię? O malutkiej opcji w menu kontekstowym każdego pliku, najczęściej drugiej od góry – Otwórz za pomocą.

Otwórz za pomocą - screen komendy z Ubuntu

Niby prosta rzecz a zmienia tak dużo. Wyobraźmy sobie, że mamy plik graficzny i chcemy go na szybko zedytować, ale nie warto odpalać w tym celu domyślnego Photoshopa. Klikamy prawym, wybieramy opcję Otwórz za pomocą i wybieramy starego, dobrego (i preinstalowanego!) Painta. I już! Edytujemy obrazek dokładnie w tym programie, w którym chcemy i nikt nie każe nam podpisywać cyrografu!

W przypadku Sieci tego typu sytuacja jest wręcz nie do pomyślenia. Najlepszym przykładem są tutaj przyciski społecznościowe. Każdy sobie swoją rzepkę skrobie i dzięki temu pod każdym artykułem mamy piękny rządek przycisków różniących się jedynie właścicielem. A wystarczyłoby sieciowe Otwórz za pomocą i byłby jeden przycisk, pozwalający nam wybrać nasz ulubiony portal społecznościowy. Jak to jest, że mamy standardy dotyczące sposobu tworzenia przyjaznych adresów URI czy przycisku rozwijającego divy (tak, takowe) a nie ma tak potrzebnego i użytecznego standardu?

2

Podejście pierwsze: WebIntents

Problem ten został zauważony już w roku 2012 (a więc tak naprawdę na początku mega boomu związanego z HTML5) przez nie kogo innego, jak Google (a dokładniej: pracującego tam Paula Kinlana). Dzięki jego zaangażowaniu powstała inicjatywa WebIntents, mająca na celu stworzenie nowego standardu umożliwiającego współpracę między aplikacjami internetowymi.

Pomysł był bardzo prosty: każda strona mogła „ogłosić się” jako świadczącą daną usługę dzięki umieszczeniu w kodzie strony tagu intent. Po takim przedstawieniu się, inne witryny, poszukujące danej usługi, mogły użytkownikowi właśnie zaproponować tę stronę. Cały proces był dość prosty:

  • Aplikacja A umożliwia użytkownikowi tworzenie galerii, ale nie pozwala na edytowanie zdjęć, dlatego postanawia skorzystać z WebIntents
  • Użytkownik aplikacji A klika na przycisk Edytuj przy swoim zdjęciu
  • Przeglądarka wyświetla mu listę dostępnych edytorów zdjęć
  • Użytkownik wybiera jeden z nich i zostaje przeniesiony na stronę Aplikacji B, która w międzyczasie dostaje zdjęcie, które ma być edytowane
  • Użytkownik kończy edycję zdjęcia w Aplikacji B i klika Zapisz
  • Użytkownik zostaje przeniesiony z powrotem na stronę aplikacji A, gdzie znajduje się już jego zedytowane zdjęcie

Prosto i skutecznie. Aplikacja B nie musi wiedzieć o użytkowniku nic więcej, niż to, że chce zedytować to jedno, konkretne zdjęcie. Aplikacja A natomiast nie musi wiedzieć nic o tym, w jaki sposób to zdjęcie jest edytowane. Jedyne informacje przekazywane między nimi to to biedne zdjęcie. Prawda, że przypomina to filozofię Otwórz za pomocą?

Od strony technicznej, WebIntents korzystały ze wszystkich dobrodziejstw HTML5, a przede wszystkich z tych związanych z obsługą plików, np do przesyłu informacji wykorzystywały typ Blob. Oczywiście żadna przeglądarka nie obsługiwała WebIntents natywnie (jedyna, która kiedykolwiek się tego podjęła, to kilka wersji Chrome), dlatego powstał JS-owy polyfill. Jego działanie można sprawdzić na udostępnionych przykładach.

Przykład prostej aplikacji, która potrzebuje obrazka z zewnętrznej usługi

Niestety, pomysł nie wypalił. Zarzucano mu dużo, w tym to, że chce robić zbyt dużo. Jednak najpoważniejsze problemy, do dziś nierozwiązane to te dotyczące intuicyjności obsługi (a dokładniej: momentu przełączania między aplikacjami). Wydaje mi się jednak, że te problemy są nieco przerysowane… Niemniej W3C urąbało projekt, więc do końca świata zostaniemy jedynie z JS-owym owijaczem.

Podejście drugie: Web Activities

Choć pierwotny projekt WebIntents upadł, pomysł nie został całkowicie porzucony. Mozilla jeszcze w czasie prac nad ostatecznym kształtem tego rozwiązania, zgłosiła swoją kontrspecyfikację. Chodzi dokładnie o to samo, ale w nieco innej technicznej formie. Zamiast tagu intent, plik JSON (tzw. manifest aplikacji webowej) a zamiast IntentActivity.

Niemniej kontrspecyfikacja nigdy nie uzyskała poparcia w W3C i nie stała się obowiązującym standardem. Co nie przeszkodziło Mozilli w zrobieniu z niej jednej z podstawowych funkcjonalności FirefoxOS. Zamiast mniej samolubnej Sieci mamy… czysto własnościową technologię.

Nowa nadzieja: Web Wishes

Choć od maja 2013 nic sensownego w sprawie WebIntents się nie działo, W3C (a raczej kilku zapaleńców wewnątrz niego) nie zapomniało o tym projekcie. Dokładnie kilka dni temu (24.06.2014) postanowiono ożywić uśpioną bestię.

Bestia jednak ma przejść poważną metamorfozę i stać się o wiele prostsza. Ma też zyskać ładniejszą nazwę – Web Wishes. Pierwsza wersja (wciąż nieoficjalna) specyfikacji już istnieje. Widać po niej jak dużą drogę przebyła Sieć od 2012. Nowe rozwiązanie używa Promises, zdarzeń i ustandaryzowanego formatu manifestu aplikacji. Całość zamknięta jest w seksownym obiekcie Wish.

Niestety, jakakolwiek implementacja tego mechanizmu nie istnieje (nie istnieje nawet JS-owy polyfill), więc zostaje jedynie czekać… Niemniej przyszłość dla bardziej otwartej, kooperującej Sieci wydaje się jasna.

Otwórz za pomocą to kolejny krok na drodze ewolucji Sieci – być może nawet ważniejszy od HTML5!


Tagi:


13 odpowiedzi na “Web (of) Intents – czego brakuje dzisiejszej Sieci?”

  1. Ciekawe podejście. Rozwiązanie takie jak „otwórz za pomocą”, a raczej rozszerzenie o funkcjonalność przez zewnętrzną usługę możemy obserwować na Facebooku, gdzie możemy edytować plik docx w webowym Office. Osobiście w sukces Web Wishes niestety nie wierzę. Wolałbym, żeby zewnętrzni usługodawcy udostępniali świetne API z gotowymi, łatwymi w stylowaniu, frontendowymi komponentami, jednak z marketingowego punktu widzenia to strzał w kolano dla takiej usługi.

    • Comandeer pisze:

      to, co mówisz opiera się w pełni na OAuth 2.0, więc to zupełnie co innego (to jest jedynie „przekazanie” cyrografu). W przypadku intents aplikacje wymieniają się tylko i wyłącznie potrzebnymi danymi (ba, same aplikacje mogą – i powinny – pozostać dla siebie całkowicie transparentne). To, o czym mówisz, to całkowite zaprzeczenie tej idei: to ścisłe połączenie dwóch aplikacji, które przekazują między sobą wszystkie dane o użytkowniku i nie są transparentne. To nie jest „Otwórz za pomocą” (to tak jakbym używał tej opcji, wiedząc, że na kompie mam aż jeden program, radzący sobie z danym typem plików – można… ale to bez sensu ;))

      >Wolałbym, żeby zewnętrzni usługodawcy udostępniali świetne API z gotowymi, łatwymi w stylowaniu, frontendowymi komponentami
      Ale przecież to dalej nie to! To dalej uzależnianie się od konkretnej usługi a nie danie userowi wolności wyboru (nasz serwis przechowuje zdjęcia, ale ich nie edytujemy – niech więc user sobie zedytuje to gdzie chce a nam da gotowe, przerobione foto)

      • Wątpię, że Twojego „otwórz za pomocą” się kiedykolwiek doczekamy. Wolność wyboru się po prostu nie opłaca z biznesowego punktu widzenia. Jest usługa np. Flickr, gdyby postanowiła dać możliwość edycji zdjęć już umieszczonych na swoich serwerach to czy usługa A nie chciałaby, żeby edycje można było przeprowadzić w ich edytorze, a nie edytorze usługi B? Flick dogada się z A lub B. Dogada czyt. ta która zaoferuje lepsze warunki. Wolność wyboru brzmi dobrze jednak jest mało realna. Co by Flick przyszło z wolności? Nic i tu jest pies pogrzebany. Dlaczego mamy np. nowe standardy wideo w sieci, jakość 4K? Bo zależało na tym biznesowi, a komu zależy na „otwórz za pomocą”? Odsetkowi użytkowników.

      • Comandeer pisze:

        A gdzie jest „Otwarta, wolna Sieć”? Mamy po wsze czasy bić pokłony kapitalistycznym molochom?

        Nowe standardy video w Sieci? Czyt. DRM, które rozwaliło połowę W3C i fragmentację kodeków, bo 3 mega-graczy nie potrafi się dogadać?

        Biznes > użytkownicy? To jak taki biznes się utrzyma? Userzy tego nie chcą, bo… nie daje im się wiedzy o istniejących możliwościach. Internet to złota klatka obecnie.

        Zaiste, idziemy w bardzo dobrym kierunku.

      • > Nowe standardy video w Sieci?
        http://www.spidersweb.pl/2014/02/standardy-wideo.html
        DRM jest, bo ludzie nie szanują własności intelektualnej. Kosztował dużo i nikt raczej nie był szczęśliwy, ze musiał na niego płacić.

        > Nie daje im się wiedzy o istniejących możliwościach
        Tych możliwości nie ma, a użytkowników nie interesuje co by było gdyby. Stanowimy odsetek i nie ma się co łudzić, że dla promila osób, które o tych możliwościach wiedzą giganci wyłożą kasę na coś co ograniczy im zyski. Wszystko super, fajnie, ale bądźmy realistami.

        Wolność w sieci realizowana jest na zasadzie, że możesz używać tego produktu, albo nie, bez granic (chodź tu jest różnie np. Netflix), barier rasowych itd. Jeżeli będzie taka usługa, która da wolność i będzie sobie można ją mixować jak jakiś koktajl i ta wolność przyciągnie użytkowników to może się coś zmieni, ale jak patrzę na to co się dzieje z Facebookiem to większości ludzi nie obchodzi ich wolność i prywatność.

        Dlatego były już dwa lub więcej podobnych standardów i wszystkie upadły, a Google się pokapował co i jak.

      • Comandeer pisze:

        >DRM jest, bo ludzie nie szanują własności intelektualnej.
        Fajnie, ale ja dziękuję wszystkim usługom, które traktują mnie jak potencjalnego złodzieja. Zapłaciłem za książkę – i co? I nawet nie mogłem jej prawie ściągnąć, bo pod Linuksa nie ma oficjalnego programu dla Adobe DRM. Musiałem zainstalować całego wine’a i dopiero wówczas łaskawie mi pozwolono ściągnąć to, za co zapłaciłem. Chciałem skopiować cytat do pracy naukowej (zatem zgodnie z prawem, z odpowiednimi oznaczeniami itd). Nie, bo nie wolno kopiować. Zapłaciłem za coś, czym się nawet nie mogę podetrzeć, bo nie ma fizycznej formy… Hasło o „nieszanowaniu własności intelektualnej” to wytrych – nic więcej. Ja nie mam zamiaru dać sobie nałożyć kaganiec tylko dlatego, że jakaś megawytwórnia zamiast 100 mln $ zarobi 99 mln $ – nie za cenę miecza Damoklesa.

        >Wszystko super, fajnie, ale bądźmy realistami.
        No bo po co próbować edukować i uświadamiać innych? Lepiej się poddać – wszak to bycie realistą… Gdybym nie wierzył w pewne idee, nawet bym nie tracił czasu na pisanie o nich. Ale wierzę, że ludzi da się uświadomić. Jeśli nie, to coś na drodze ewolucji społeczeństwa poszło źle (Huxley miał rację?).

        >Wolność w sieci realizowana jest na zasadzie, że możesz używać tego produktu, albo nie, bez granic (chodź tu jest różnie np. Netflix), barier rasowych itd.
        To nie jest wolność. To jest paradoks wolności: albo żresz nasz chleb, albo zdychaj z głodu. Niby jest wybór, ale co to za wybór?

        >ale jak patrzę na to co się dzieje z Facebookiem to większości ludzi nie obchodzi ich wolność i prywatność.
        Uświadamiać! Jeśli my, jako społeczeństwo de facto twórców Sieci, będziemy zamknięci w swej własnej klice i pisać zarąbiste artykuliki na temat możliwości, które i tak nigdzie nie są używane w rzeczywistym świecie, tylko po to, żeby samych siebie zadziwić, to nie ma sensu tracić czasu. Lepiej to wszystko rzucić i wyjechać na wieś. Przerzucanie gnoju jest bardziej celowe.

      • Używanie Linuksa to był Twój wybór. Nie mówię, że taka sytuacja jest dobra tylko, że taka jest i tyle. Masz wybór taki, że możesz kupić chleb u konkurencji. Jest Fb i G+, jest YT i Vimeo, jest Prezi i Powerpoint, można tak w nieskończoność.

      • Comandeer pisze:

        Wracając jeszcze do kwestii biznesowej na chwilę: dziwię się, że dotąd nikt z nas nie zauważył pewnej oczywistej analogii. Delegowanie zadań pomiędzy aplikacjami webowymi istnieje wszak od dawna i doskonałym przykładem może być tutaj wspomniane już API fejsa. Fejs udostępnia jedynie opcje portalu społecznościowego a cały ekosystem jest budowany na podstawie aplikacji tworzonych przez niezależnych developerów. Jedyne różnice między OAuth API a WebIntens to przerzucenie obsługi mechanizmu obsługi rozwiązania z serwera usługodawcy na przeglądarkę użytkownika (co raczej odciążyłoby serwery, więc to plus) oraz dodanie uniwersalności (bye bye niekompatybilne APIs pisane zgodnie ze „standardem” OAuth 2.0). Kwestię potrzebnej autoryzacji można rozwiązać już poza WebIntents (np Persona) – poza tym edycja obrazka raczej nie wymaga podawania numeru karty kredytowej i krzywizny nosa ;)

  2. Piotr Nalepa pisze:

    Problem z tym konceptem jest jeden. Niestety, wielu użytkowników woli wykonać jedną czynność, np. kliknąć w dany przycisk społecznościowy niż kliknąć w przycisk, aby wybrać sieć społecznościową. Następnie, wybrać sieć z listy sieci społecznościowych, a następnie kliknąć przycisk zatwierdzający wybór sieci. To są 3 kroki zamiast 1. Ze względu na UX to w ogóle nie przejdzie.

    • Dokładnie! ideowo pomysł jest fajny, ale pod innymi względami leży.

    • Comandeer pisze:

      I ze względu na UX ubito 1. podejście. Ale to, o czym mówisz, przecież można bardzo łatwo rozwiązać, w sposób podobny jak choćby na windzie: nieznany typ linku → okienko z wyborem usług. znany typ linku → przywiązanie do danej akcji, z możliwością zmiany

      • Piotr Nalepa pisze:

        Tak, tylko jakoś sobie nie wyobrażam, aby dla każdej aplikacji internetowej czy strony osobno użytkownik definiował gdzie, jaki link ma prowadzić, do jakiej usługi. Wątpię, by niezależne względem siebie aplikacje dzieliły się swoimi informacjami na ten temat. Zresztą, jeśli takie dane byłyby trzymane w przeglądarce, to byłoby duże pole do nadużyć. Bo dane można bezwiednie zmienić za pomocą JS.

      • Comandeer pisze:

        Sam mechanizm byłby wbudowany w chrome – aplikacje webowe miałyby dostęp jedynie do prostego systemu pub/sub. No i nie konkretne linki na konkretnych stronach, tylko ogólne akcje (+ filtry na akceptowany format przekazywanych danych) i tyle. edit image/* → fotoszop.

        Zresztą – co my się martwimy. Nad tym siedzą już dość łebscy ludzie, mający doświadczenie w temacie (także i samych Intents), więc po prostu patrzmy jak inicjatywa się rozwija ;)

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.