Wycofanie usługi Excalidraw Electron na rzecz wersji internetowej

Dowiedz się, dlaczego projekt Excalidraw postanowił zrezygnować z opakowania Electron na rzecz internetu wersji.

W projekcie Excalidraw zdecydowaliśmy, że wycofamy Excalidraw Desktop, otokę Electron Excalidraw na rzecz wersji internetowej dostępne na stronie excalidraw.com. Po wnikliwej analizie uznaliśmy, że progresywna aplikacja internetowa (PWA) to przyszłość, którą chcemy tworzyć w dniu. Czytaj dalej, aby dowiedzieć się, dlaczego.

Jak powstała aplikacja Excalidraw Desktop

Wkrótce po tym jak @vjeux utworzyła początkową wersję Excalidraw w w styczniu 2020 r. i opublikował o tym na blogu, zaproponował w swoim artykule Problem nr 561:

Warto dodać Excalidraw do pakietu Electron (lub jego odpowiednika) i opublikować go jako [zależnie od platformy] w różnych sklepach z aplikacjami.

Natychmiastową reakcją użytkownika @voluntadpear było:

A może zamiast tego zmienić ją w PWA? Android obecnie obsługuje dodawanie ich do Sklepu Play jako Trusted Web Activities i miejmy nadzieję, że wkrótce iOS również zrobi to samo. Na komputerze pobierz skrót na pulpicie do aplikacji PWA.

Decyzja, którą podjął @vjeux, była prosta:

Powinniśmy zrobić i jedno, i drugie :)

Prace nad przekonwertowaniem wersji Excalidraw na PWA rozpoczęły się @voluntadpear i późniejsze inne osoby, @lipis niezależnie wyprzedził i utworzył w osobnym repozytorium Excalidraw Desktop.

Do tego dnia początkowym celem wyznaczonym przez @vjeux jest przesłanie Nie osiągnięto jeszcze dostępu do Excalidraw do różnych sklepów z aplikacjami. Poważnie, nikt nawet nie zaczął proces przesyłania do dowolnego sklepu. Ale dlaczego? Zanim odpowiem, spójrzmy na platformę Electron.

Co to jest Electron?

Wyjątkową cechą oprogramowania Electron jest to, że pozwala „tworzyć” wielu platform za pomocą JavaScript, HTML i CSS”. Aplikacje stworzone w technologii Electron „Zgodność z systemami Mac, Windows i Linux”, czyli „Aplikacje elektronowe kompilują i uruchamiają się na 3 platform”. Według strony głównej to, co sprawia, że Electron jest łatwy, automatyczne aktualizacje, menu i powiadomienia na poziomie systemu, raportowanie awarii, debugowanie i profilowanie, Instalatory Windows. Jak się okazuje, część opisane funkcje wymagają dokładnego zapoznania się z drobnym drukiem.

  • Na przykład automatyczne aktualizacje „są [obecnie] tylko [obsługiwane] w systemach macOS i Windows. Jest Nie ma wbudowanej obsługi automatycznego aktualizatora w systemie Linux, więc zalecamy użycie menedżera pakietów, aby zaktualizować aplikację”.

  • Deweloperzy mogą tworzyć menu na poziomie systemu, wywołując funkcję Menu.setApplicationMenu(menu). W systemie Windows oraz W Linuksie to menu zostanie ustawione jako górne menu w każdym oknie, a w systemie macOS jest dostępnych wiele zdefiniowane przez system standardowe menu, takie jak Usługi . Aby menu było menu standardowe, deweloperzy powinni odpowiednio ustawić w menu role, a Electron je rozpozna i sprawi, że staną się standardowymi menu. Oznacza to, że wiele kod związany z menu będzie korzystać z następującego sprawdzania platformy: const isMac = process.platform === 'darwin'

  • W instalatorach Windows można użyć: windows-installer. Plik README projektu zaznacza, że „w przypadku aplikacji w wersji produkcyjnej musisz podpisać aplikację. Internet Explorera Filtr SmartScreen zablokuje pobieranie aplikacji, a wielu dostawców oprogramowania antywirusowego uznają aplikację za złośliwe oprogramowanie, chyba że uzyskasz ważny certyfikat” [sic].

Po 3 przykładach wyraźnie widać, że model Electron jest daleki od „zapisz raz, uruchom wszędzie”. Wymagania dotyczące dystrybucji aplikacji w sklepach z aplikacjami podpisywania kodu, czyli technologii zabezpieczeń poświadczam własność aplikacji. Pakowanie aplikacji wymaga użycia narzędzi takich jak elektroniczne kucie i myślenie o tym, gdzie się i udostępniaj pakiety aktualizacji aplikacji. Sytuacja staje się stosunkowo szybko złożona, zwłaszcza gdy jest to naprawdę obsługa wielu platform. Chcę zauważyć, że absolutnie można stworzyć Aplikacje elektroniczne, które wymagają odrobiny wysiłku i poświęcenia. W przypadku Excalidraw Desktop nie było to dla nas jasne.

Miejsce, w którym Excalidraw Desktop został przerwany

Jak dotąd Excalidraw Desktop to aplikacja internetowa Excalidraw .asar z dodanym oknem Excalidraw – informacje. Wygląd i sposób działania aplikacji jest niemal taki sam jak wersja internetowa.

Aplikacja Excalidraw Desktop działająca w otoce Electron.
Excalidraw Desktop prawie nie da się odróżnić od wersji internetowej
Informacje o aplikacji Excalidraw Desktop okno z wersją otoki urządzenia Electron i aplikacji internetowej.
Menu Informacje o Excalibur z informacjami o wersjach

W systemie macOS u góry aplikacji znajduje się teraz menu na poziomie systemu, ale nie można z niego skorzystać czynności – oprócz Zamknij okno i Informacje o Excalidraw – są powiązane z menu, jest w obecnym stanie raczej bezużyteczny. Tymczasem wszystkie działania można oczywiście wykonać za pomocą z pasków narzędzi Excalidraw i menu kontekstowym.

Pasek menu Excalidraw Desktop w systemie macOS z opcją „Plik” lub „Zamknij okno” wybrana opcja menu.
Pasek menu w Excalidraw Desktop na urządzeniu z macOS

Używamy narzędzia Electronic-builder, który obsługuje powiązania typów plików. Po dwukrotnym kliknięciu pliku .excalidraw powinna się otworzyć aplikacja Excalidraw Desktop. odpowiedni fragment naszego pliku electron-builder.json wygląda tak:

{
  "fileAssociations": [
    {
      "ext": "excalidraw",
      "name": "Excalidraw",
      "description": "Excalidraw file",
      "role": "Editor",
      "mimeType": "application/json"
    }
  ]
}

Niestety w praktyce nie zawsze działa to zgodnie z oczekiwaniami, ponieważ (dla bieżącego użytkownika – dla wszystkich użytkowników). Aplikacje w systemie Windows 10 nie mają prawa do powiązania typu pliku ze sobą.

Te wady i nadchodzący projekt sprawiają, że na wszystkich platformach korzystanie z aplikacji wygląda jak aplikacja (co ponownie, przy wystarczającym możliwym wysiłku) stanowiły ważny argument skłaniający do ponownego rozważenia inwestycja w Excalidraw Desktop. Ważniejszym dla nas argumentem jest jednak to, w naszym przypadku użycia nie potrzebujesz wszystkich funkcji dostępnych w aplikacji Electron. Grupa, która powiększa się i stale rozrasta się możliwości internetu są dla nas równie dobre, a może nawet lepsze.

Jak internet służy nam dziś i w przyszłości

Nawet w 2020 r. jQuery niesamowitą popularność. Dla wielu programistów, którzy przyzwyczaili się z niego korzystać, mimo że dzisiaj może nie potrzebować biblioteki jQuery. Istnieje podobny materiał do Electron o nazwie Możesz nie potrzebować elektryka. Chcę dlaczego naszym zdaniem nie jest on potrzebny.

Progresywna aplikacja internetowa z możliwością zainstalowania

Excalidraw to dziś progresywna aplikacja internetowa, którą można zainstalować skrypt service oraz manifest aplikacji internetowej. Wszystkie swoje zasoby są przechowywane w dwóch pamięciach podręcznych, jeden na czcionki i kod CSS związany z czcionkami, a drugi – wszystkie pozostałe.

Karta aplikacji w Narzędziach deweloperskich w Chrome z 2 pamięciami podręcznymi Excalidraw.
Zawartość pamięci podręcznej Excalidraw

Oznacza to, że może ona działać w trybie offline i bez połączenia sieciowego. Przeglądarki oparte na Chromium na komputerach i urządzeniach mobilnych proszą użytkownika o zainstalowanie aplikacji. Prośba o instalację możesz zobaczyć na zrzucie ekranu poniżej.

Excalidraw z prośbą o zainstalowanie aplikacji w Chrome na urządzeniach z macOS.
Okno instalacji Excalidraw w Chrome

Aplikacja Excalidraw skonfigurowano do uruchamiania jako samodzielna aplikacja, więc po jej zainstalowaniu które jest uruchamiane w osobnym oknie. Jest w pełni zintegrowany z wielozadaniowym interfejsem użytkownika, pojawi się ikona aplikacji na ekranie głównym, w Docku lub pasku zadań; w zależności od platformy, na której instalujesz .

Narzędzie Excalidraw działa w osobnym oknie.
Progresywna aplikacja internetowa Excalidraw w samodzielnym oknie
Ikona Excalidraw w Docku systemu macOS.
Ikona Excalidraw w Docku systemu macOS

Dostęp do systemu plików

Excalidraw używa polecenia browser-fs-access do uzyskać dostęp do systemu plików systemu operacyjnego. W obsługiwanych przeglądarkach pozwala to uzyskać prawdziwy open→edit→zapisz przepływ pracy, zapisz nadmierne zapisywanie i zapisz jako, z przezroczystą opcją zastępczą w innych przeglądarkach. Więcej informacji o tej funkcji znajdziesz w poście na blogu. Odczyt i zapis plików oraz katalogów przy użyciu biblioteki Browser-fs-access.

Obsługa przeciągania i upuszczania

Pliki można przeciągać i upuszczać w oknie Excalidraw, tak jak w aplikacjach działających na platformie. Dzień która obsługuje File System Access API, można natychmiast edytować, a modyfikacje można zapisać w oryginalnym pliku. Tak jest że czasem zapominamy, że mamy do czynienia z aplikacją internetową.

Dostęp do schowka

Excalidraw dobrze działa ze schowkiem systemu operacyjnego. Całe rysunki Excalidraw lub tylko poszczególne obiekty można kopiować i wklejać w formatach image/png i image/svg+xml, co pozwala na łatwą integrację z innymi narzędziami platformowymi, takimi jak Inkscape, takimi jak SVGOMG.

Menu kontekstowe Excalidraw z opcjami „Kopiuj do schowka jako SVG” i „Kopiuj do schowka jako plik PNG”, pozycje menu.
Menu kontekstowe Excalidraw z działaniami związanymi ze schowkiem

Obsługa plików

Excalidraw obsługuje już eksperymentalny interfejs File Handling API, Oznacza to, że pliki .excalidraw można dwukrotnie kliknąć w menedżerze plików systemu operacyjnego. otwiera się bezpośrednio w aplikacji Excalidraw, ponieważ Excalidraw rejestruje się jako moduł obsługi plików dla .excalidraw w systemie operacyjnym.

Rysunki Excalidraw można udostępniać za pomocą linku. Oto przykład. W przyszłości, jeśli którzy mają zainstalowaną aplikację Excalidraw jako aplikację PWA, takie linki nie otwierają się w karcie przeglądarki, ale uruchamiają nowe, niezależne okno. Oczekuje na wdrożenie. Będzie działać dzięki deklaratywnym przechwytywania linków, bo w momencie pisania tę przełomową propozycję dotyczącą nowej funkcji platformy internetowej.

Podsumowanie

W internecie przeszło długą drogę – coraz więcej funkcji jest dostępnych w przeglądarkach, lat, a nawet miesięcy temu były nie do pomyślenia i były dostępne wyłącznie w aplikacjach działających na określonych platformach. Firma Excalidraw wyprzedza wszystkie możliwości dostępne w przeglądarce, jednocześnie informując, że nie wszystkie przeglądarki na wszystkich platformach obsługują każdą używaną przez nas funkcję. Przez zakłady progresywne ulepszenia, korzystamy zawsze z najnowszych i najciekawszych rozwiązań, ale nie opuszczając w tyle. Najlepiej wyświetlać się w dowolnej przeglądarce.

Electron był bardzo przydatny, ale od 2020 roku możemy żyć bez niego. A, a do tego właśnie cel @vjeux: Sklep Play na Androida akceptuje teraz aplikacje PWA o nazwie Zaufana aktywność internetowa oraz ponieważ Microsoft Store obsługuje aplikacje PWA, również w niedalekiej przyszłości. Tymczasem możesz zawsze używaj i instaluj Excalidraw w przeglądarce i z poziomu przeglądarki.

Podziękowania

Autor opinii: @lipis, @dwelle oraz Joe Medley