WEBVTT

00:00:00.017 --> 00:00:06.537
Bei den isolated Web Apps geht es darum, dass man auch solche APIs wie Direct Sockets aktiviert.

00:00:06.537 --> 00:00:14.137
Das ist ein bisschen wie ein Electron, wo ich einfach die auf dem System vorhandene Browser-Technik gleichsam hijacke,

00:00:14.137 --> 00:00:19.857
um darin meine Applikation abzufeuern und ich schleppe sie nicht mit mir mit für jede Echse, die ich mir da installiere.

00:00:19.857 --> 00:00:25.457
Das sind ja wirklich Unmengen an APIs und so mehr ist ja nicht immer besser.

00:00:25.457 --> 00:00:31.813
Je intrinsischer die Motivation ist, umso besser ist natürlich auch das Ganze für ein Projekt wie Fugu.

00:00:32.400 --> 00:00:56.880
Music.

00:00:57.254 --> 00:01:06.577
Working Draft Revision 563 Diese Revision von Working Draft wird euch präsentiert von pCloud,

00:01:06.724 --> 00:01:12.417
der sicheren Cloud-Lösung aus der Schweiz. Der Online-Speicher von pCloud ist etwas Besonderes,

00:01:12.417 --> 00:01:17.417
denn es gibt ihn nicht nur als monatliches Abo, sondern auch mit lebenslanger Lizenz.

00:01:18.031 --> 00:01:21.560
Ihr zahlt nur ein einziges Mal und könnt all eure Dateien, Dokumente und Projekte in,

00:01:22.457 --> 00:01:25.341
in einer bis zu 10 TB großen Cloud abspeichern.

00:01:26.017 --> 00:01:30.537
Durch den Schweizer Standort hält sich pCloud an besonders strenge Datenschutzbestimmungen

00:01:30.537 --> 00:01:33.326
und ist damit vollständig DSGVO-konform.

00:01:34.017 --> 00:01:40.123
PCloud überzeugt zudem mit leistungsstarken Apps für Mobile und Desktopgeräte. Und jetzt der Clou.

00:01:40.617 --> 00:01:45.677
Zu Ostern bekommt ihr die Familienlizenz von pCloud 78% günstiger.

00:01:46.019 --> 00:01:47.352
Aber schnell sein lohnt sich.

00:01:47.697 --> 00:01:51.177
Nach 24 Stunden steigt der Preis Stunde für Stunde wieder an.

00:01:51.817 --> 00:02:00.972
Also, sichert euch die 78% Rabatt ab dem 6. April. Den passenden Link zu pCloud findet ihr auf workingcraft.de in den Shownotes.

00:02:01.777 --> 00:02:05.554
Wir danken pCloud für die Unterstützung von dieser Revision von WorkingCraft.

00:02:10.337 --> 00:02:15.115
Wir sind heute zu dritt. Da hätten wir aus dem Team den Peter. Moin Moin.

00:02:16.033 --> 00:02:20.462
Ich bin der Shep und das bedeutet, wir haben wieder einen Gast und zwar den Tom.

00:02:20.597 --> 00:02:22.469
Hallo Tom. Hallo, Moinsen.

00:02:23.077 --> 00:02:30.850
Moinsen. Du warst schon mal bei uns. Das ist aber ganz schön lange her, nämlich das jetzt mal im Oktober 2019.

00:02:31.247 --> 00:02:35.077
Und viele unserer Hörerinnen und Hörer kennen dich vielleicht gar nicht deswegen,

00:02:35.451 --> 00:02:40.366
oder kennen dich wahrscheinlich schon, aber vielleicht nicht mehr aus der Folge mit uns.

00:02:40.577 --> 00:02:43.382
Deswegen erzähl doch nochmal, wer du bist und was du machst.

00:02:44.471 --> 00:02:47.910
Ja, sehr gerne. Wow, 2019, hör das? Ja, ja, die Zeit fliegt.

00:02:48.180 --> 00:02:50.561
Das kommt einem voll wie vorgestern. Na gut.

00:02:50.845 --> 00:02:57.137
Ja, also, ich bin Thomas Steiner, Tomajag auf Twitter, Mastodon und so weiter im Internet GitHub.

00:02:57.281 --> 00:02:59.641
Genau, ich bin im Chrome Team,

00:03:00.090 --> 00:03:07.801
Chrome Developer Relations, und fokussiere mich dort auf das Thema Project Fugu, also sprich, dem Browser neue Fähigkeiten beibringen,

00:03:07.801 --> 00:03:14.863
sodass ihr, ihr Developer hier draußen, auf der Webplattform alle Applikationswünsche und Ideen umsetzen könnt,

00:03:15.367 --> 00:03:20.721
für die ihr früher vielleicht eine Windows, Mac, Android, iOS, was auch immer, Applikationen bauen musstet.

00:03:21.155 --> 00:03:26.133
Genau, unser Ziel ist, euch das zu ermöglichen, auf der Webplattform zu realisieren.

00:03:26.773 --> 00:03:33.521
Ja, cool. Tatsächlich warst du auch damals schon zu diesem, ja, zu diesem Themenkomplex,

00:03:33.521 --> 00:03:35.561
zu diesem Project Fugu, zu Gast.

00:03:35.561 --> 00:03:43.861
Das damals, glaube ich, noch relativ neu war, auch nicht immer so ganz neu, aber schon doch relativ neu.

00:03:43.861 --> 00:03:47.739
Genau, und seitdem hat sich viel getan.

00:03:48.171 --> 00:03:55.361
Tatsächlich ist auch der Ursprung dessen, dass wir drei hier sitzen, war ein,

00:03:55.361 --> 00:03:59.136
also ich glaube, ein Mastodon-Tut von jemandem,

00:03:59.361 --> 00:04:03.361
der sich gewünscht hat, dass wir das Project Fugu mal besprechen.

00:04:03.361 --> 00:04:07.361
Und daraufhin haben wir halt gesagt, so, ja, das haben wir ja schon mal.

00:04:07.361 --> 00:04:10.301
Da hatten wir, Moment, ich such das mal raus.

00:04:10.361 --> 00:04:16.357
Ich glaube, da hat sich nicht so viel dran geändert. Dann hast du gesagt, ja, Moment, das ist nicht so ganz korrekt.

00:04:16.841 --> 00:04:18.338
Da hat sich schon einiges getan.

00:04:18.887 --> 00:04:21.551
Da wollen wir jetzt mal so ein bisschen reinschauen.

00:04:22.801 --> 00:04:27.601
Aber du hast ja schon gesagt, das Project Fugu hat ja so ein bisschen das Ziel,

00:04:28.024 --> 00:04:31.401
also das, was man, ich weiß nicht, ob man das noch heutzutage benutzt,

00:04:31.441 --> 00:04:41.161
aber Cordova oder vielleicht auch Dinge wie Elektron und andere Wrapper-Konstrukte um Browser und Web-Anwendungen herum,

00:04:41.455 --> 00:04:44.084
die möglicherweise überflüssig zu machen.

00:04:45.821 --> 00:04:50.401
Ist das so richtig? Ja, genau, also, das geht zumindest in die richtige Richtung.

00:04:50.401 --> 00:04:55.201
2019, ja, also da war Project Fugu noch ziemlich frisch.

00:04:55.201 --> 00:05:00.221
Damals war eigentlich das Hauptthema das Schließen der sogenannten App-Gap,

00:05:00.221 --> 00:05:03.041
haben wir das immer genannt, also sprich, die Lücken APIs,

00:05:03.331 --> 00:05:07.541
die nativ anbietet, also sprich Android, Windows, Mac, was auch immer,

00:05:07.541 --> 00:05:10.601
die aber auf dem Web noch nicht realisierbar ist.

00:05:10.601 --> 00:05:19.381
Also zum Beispiel direkten Zugriff auf das System-Clickboard oder die Fähigkeit, dass man Dateien nicht nur aufmachen kann,

00:05:19.381 --> 00:05:22.561
im Sinne von File Open, sondern tatsächlich auch öffnen kann,

00:05:22.875 --> 00:05:24.181
um darauf zu schreiben.

00:05:24.181 --> 00:05:28.521
Ganz viele andere Fähigkeiten, direkten Zugriff auf Videocodecs,

00:05:28.521 --> 00:05:34.839
Audiocodecs und so weiter. Und von 2019 bis, ja, 20...

00:05:35.892 --> 00:05:41.627
22 kann man vielleicht sagen, war das Ziel von Project Fugo tatsächlich, das Schließen dieser App-Gap.

00:05:41.762 --> 00:05:45.142
Und wir haben ganz, ganz viele APIs implementiert im Browser.

00:05:45.142 --> 00:05:51.520
Ja, haben das in Chrome, in Chromium, in vielen Fällen direkt geschippt.

00:05:51.925 --> 00:05:55.462
Die ein oder andere API, die wir zwar gedacht hatten, dass man braucht,

00:05:55.462 --> 00:06:00.382
haben wir am Ende dann festgestellt, die brauchen wir so in dieser Form vielleicht nicht,

00:06:00.382 --> 00:06:05.422
oder die Grundlagen haben sich geändert, also sprich, vielleicht irgendwas in Android hat sich geändert.

00:06:05.422 --> 00:06:12.222
Also, das, was damals ursprünglich realisierbar schien, auf einmal dann in Android sich nicht mehr realisieren hat lassen,

00:06:12.222 --> 00:06:14.622
aber im großen Ganzen waren wir sehr, sehr erfolgreich,

00:06:14.998 --> 00:06:21.222
und ich hab das damals nachgezählt, haben 55 APIs und Features released,

00:06:21.222 --> 00:06:23.822
und ich hab dann so einen Post geschrieben,

00:06:24.189 --> 00:06:30.222
wo ich die rhetorische Frage gestellt habe, ist Project Fugu dann? Also, sind wir fertig mit Project Fugu?

00:06:30.222 --> 00:06:31.622
Haben wir alles implementiert?

00:06:31.922 --> 00:06:36.342
Und natürlich, rhetorische Frage, die Antwort war natürlich, nein, wir sind nicht fertig.

00:06:36.459 --> 00:06:42.518
Sondern bei ganz vielen APIs haben wir so eine Art MVP-Implementierung realisiert.

00:06:42.563 --> 00:06:47.822
Und je mehr Leute das jetzt nutzen, je mehr Leute ihre App-Wünsche auf dem Web realisieren,

00:06:47.822 --> 00:06:50.562
Stellen wir eben fest, oder stellen Entwickler viel mehr fest.

00:06:51.718 --> 00:06:55.848
Bestimmte Sachen, ja, da kann man einfach noch das Ganze fine tunen,

00:06:55.848 --> 00:07:00.568
da kann man das Ganze geschmeidiger machen, sodass es einfach sich besser anfühlt,

00:07:00.568 --> 00:07:04.208
richtig gleichzieht mit Nativ und nicht nur fast gleichzieht.

00:07:04.208 --> 00:07:12.528
Als konkretes Beispiel kann man angeben, zum Beispiel, dass man Dateien jetzt natürlich im Web aufmachen kann und editieren kann.

00:07:12.729 --> 00:07:19.528
Das kann man auch mit Verzeichnissen machen, das heißt, ich kann via code.dev, also die Visual Studio Code

00:07:19.528 --> 00:07:25.768
Implementierungsumgebung kann ich im Web aufmachen und dann meinen Project Folder selektieren.

00:07:25.768 --> 00:07:31.670
Wenn ich die Applikation dann aber neu lade, also sprich, beim Browser reload drücke oder einfach

00:07:31.768 --> 00:07:32.848
dem Browser neu starte,

00:07:33.291 --> 00:07:40.826
da wird dann zwar der Zugriff nach wie vor auf die Dateien möglich sein, aber eben erst nach einer erneuten Sicherheitsabfrage.

00:07:41.128 --> 00:07:48.248
Grund hierfür ist natürlich, dass man einfach sagt, man will sicherstellen, dass der Benutzer ganz bewusst

00:07:48.248 --> 00:07:54.488
nochmal Zugriff gibt auf das Verzeichnis, dass sie oder er hochgeladen hat, oder was heißt hochgeladen, geöffnet hat,

00:07:54.488 --> 00:07:57.208
also ich denke immer noch so ein bisschen in den alten Schemen,

00:07:57.208 --> 00:08:05.008
ja, also Upload, Download, aber ja, letztendlich natürlich haben wir echten lokalen Zugriff hier ermöglicht, also sprich,

00:08:05.008 --> 00:08:10.208
das Verzeichnis, dass sie oder er aufgemacht hat, dass da eben nach wie vor dann Zugriff besteht.

00:08:10.785 --> 00:08:13.728
Und man möchte eben sicherstellen, dass das eine Bewusstentscheidung ist.

00:08:13.728 --> 00:08:21.528
Und das ist natürlich, wenn man jetzt ein gewiefter Benutzer ist von VS Code und jeden Tag den Browser neu gestartet oder

00:08:21.528 --> 00:08:24.528
von mir aus jede Woche, was auch immer, ist das immer lästig,

00:08:24.528 --> 00:08:29.768
wenn man dann jedes Mal nochmal sagen muss, ja, ich möchte tatsächlich nochmal auf C, Programs, bla, was auch immer,

00:08:29.969 --> 00:08:33.888
Program Files Zugriff gewähren, was auch immer,

00:08:34.155 --> 00:08:37.441
dann ist das natürlich, ja, so ein Erneuerungs, wenn man sagt,

00:08:37.540 --> 00:08:40.648
klar, theoretisch ist alles möglich, aber halt in der Praxis

00:08:40.979 --> 00:08:43.448
ist es noch ein bisschen umständlicher als über nativ,

00:08:43.868 --> 00:08:52.408
und, ja, da sind wir eben dabei, uns zu überlegen, Wie kann man das so hinbekommen, dass eben Benutzer, die genau das eben wollen?

00:08:52.808 --> 00:08:58.658
Diesen Schritt gehen können und sagen können, ich möchte jetzt auf mein Projects-Folder für immer Zugriff gewähren für

00:08:58.658 --> 00:09:04.340
VS Code.dev oder was auch immer es sein mag, aber halt jemand, der jetzt aus Versehen

00:09:04.658 --> 00:09:10.658
vielleicht Zugriff gewährt hat für eine Datei, diese Person erwartet vielleicht nicht, dass in der Zukunft

00:09:10.658 --> 00:09:13.658
jedes Mal, wenn man jetzt die App wieder neu lädt,

00:09:14.044 --> 00:09:19.658
dass nach wie vor dieser Zugriff besteht. Und ja, da sind wir eben dabei, herauszufinden, wie kann man im konkreten

00:09:19.658 --> 00:09:25.538
Beispiel Permissions für das File-System, wie sagt man, persistieren, genau, das ist das richtige Wort,

00:09:25.666 --> 00:09:29.458
persistieren, sodass das in Zukunft eben möglich ist,

00:09:29.816 --> 00:09:34.668
genau das zu realisieren, was der Benutzer möchte, und was natürlich auch der App-Developer möchte.

00:09:35.920 --> 00:09:40.498
Ja, ist auf jeden Fall schwierig. Also stelle ich mir auf jeden Fall sehr knifflig vor,

00:09:40.498 --> 00:09:46.047
da eine gute Heuristik zu finden, so die das ausbalanciert.

00:09:47.163 --> 00:09:53.858
Ich glaube, was ihr auch gemacht habt, ist, dass hier mehrere APIs, die im Grunde sich relativ ähnlich sind,

00:09:53.858 --> 00:09:56.858
dass ihr die noch mal quasi aufgeschnürt habt.

00:09:56.858 --> 00:10:03.458
Also mir fällt jetzt zum Beispiel diese Sensors API ein. Ich weiß nicht, ob die so heißt, aber auf jeden Fall, es gibt ja

00:10:03.583 --> 00:10:11.055
irgendwie Accelerometer und, keine Ahnung, Ambient Sensor und irgendwie noch zig andere.

00:10:11.983 --> 00:10:17.123
Und die funktionieren im Grunde alle ungefähr ähnlich. Und ich glaube, da gibt's jetzt quasi so eine,

00:10:17.681 --> 00:10:25.747
übergreifende API, die man eben anzapft, wo die dann alle dranhängen, anstatt irgendwie jede einzeln zu bespielen.

00:10:26.674 --> 00:10:32.233
Genau, also das ist die Generic Sensor API. Das ist tatsächlich schon eine der älteren APIs.

00:10:32.233 --> 00:10:37.450
Da ist die Idee, man hat verschiedene Sensoren im Telefon typischerweise,

00:10:37.639 --> 00:10:45.193
die zu sogenannten Fusion-Sensoren typischerweise zusammen modelliert werden,

00:10:45.193 --> 00:10:51.793
sodass man dann so eine Art Orientierungssensor quasi hat, was in dem Sinne gar nicht existiert.

00:10:51.944 --> 00:10:57.473
Ein Orientierungssensor ist eine Kombination von Magnet, Gyroskop,

00:10:57.473 --> 00:11:03.193
wie heißt das auf Deutsch, Gyroskop, keine Ahnung, Beschleunigungssensor,

00:11:03.323 --> 00:11:08.193
Und, ja, das wird eben über die High-Level-Akis verfügbar gemacht,

00:11:08.193 --> 00:11:10.993
aber letztendlich ist das, wie gesagt, ein Fusion-Sensor,

00:11:11.317 --> 00:11:19.313
und, ja, da möchte man eben auch Zugriff gewähren auf die einzelnen Untersensoren, um eben neue Use-Cases zu ermöglichen,

00:11:19.313 --> 00:11:26.113
die eben nicht quasi die abstrahierte, fusionierte

00:11:26.269 --> 00:11:29.357
Sensor-View abbilden, sondern eben, ja,

00:11:29.708 --> 00:11:34.613
eine Art und Weise, wie jetzt eben ein Magnetsensor oder ein Gyroskop oder was auch immer

00:11:34.840 --> 00:11:37.813
Bewegungen, Magnetfelder, was auch immer registriert.

00:11:38.305 --> 00:11:45.653
Und man hat dann festgestellt, letztendlich die Art und Weise, wie das funktioniert, ist bei allen gleich, also man hat so eine Art Polling-Intervall,

00:11:45.903 --> 00:11:47.933
wo man eben Sensorwert ja ausliest.

00:11:48.244 --> 00:11:55.493
Und da ist dann die Idee, dass man eben sagt, man abstrahiert das Ganze, man hat diese Generic Sensor API on top,

00:11:55.905 --> 00:12:02.893
Man kann dann eben über die jeweiligen Unterklassen sozusagen auf den jeweiligen Sensor zugreifen

00:12:03.278 --> 00:12:09.237
Und eben nach wie vor, auch wenn man das möchte, bestimmte Fusion-Sensoren auch über das gleiche Interface abfragen.

00:12:10.921 --> 00:12:18.104
Okay, das heißt so die Fusion ist dann hauptsächlich, wenn ich jetzt, ich scroll da gerade so durch die Code-Beispiele in der Spezifikation.

00:12:18.618 --> 00:12:22.975
Also der Hauptgegenstand der Fusion ist ja mehr oder minder dann das gemeinsame Permissionsmodell, ne?

00:12:23.074 --> 00:12:28.520
Also ich frag ab, gib Sensor und zwar mit diesen und jenen Capabilities und dann kann ich mir darunter selbst konstruieren,

00:12:28.889 --> 00:12:31.464
wie ich da gleichsam reingreifen möchte, was ich mir da rauspicken will.

00:12:33.930 --> 00:12:39.917
Genau, also da ist eben wichtig auch zu verstehen, solche Sensoren, solche Sensordaten, die können immer auch,

00:12:40.646 --> 00:12:47.371
verraten, zum Beispiel, ob jemand sich gerade bewegt, ob jemand läuft, ob jemand joggt, ob jemand hüpft oder was auch immer.

00:12:47.695 --> 00:12:54.211
Man kann über diese Sensoren und natürlich dann inzwischen Machine Learning, jada jada,

00:12:54.474 --> 00:13:04.931
wenn man gewisse Patterns einfach von Sensordaten über Machine Learning annotiert und lernt, so sieht was auch immer Jogging aus, so sieht Laufen aus, so sieht Gehen aus, so sieht Hüpfen aus,

00:13:05.213 --> 00:13:09.891
kann man eben, wenn man dann ein Sensorsignal abfängt von jemand,

00:13:10.101 --> 00:13:12.531
das über Machine Learning dann klassifizieren lassen.

00:13:12.531 --> 00:13:16.131
Und ja, das ist natürlich nicht zwingend im Sinne des Erfinders,

00:13:16.131 --> 00:13:22.691
dass diese Daten direkt dann für Fingerprinting und User Tracking verwendet werden.

00:13:23.047 --> 00:13:29.331
Das heißt, man möchte natürlich dann schon sicherstellen, dass diese Bewegungsdaten und Sensordaten im Allgemeinen

00:13:29.582 --> 00:13:32.328
eben nur verwendet werden, wenn den Nutzer dem zustimmt.

00:13:33.273 --> 00:13:41.069
Ihr habt auch diese schöne Seite, die heißt, glaube ich, Fugu API Tracker. Aber die war das.

00:13:42.051 --> 00:13:49.361
Die ist wirklich sehr, sehr lang. Da steht drin, welche APIs sind geschippt,

00:13:49.361 --> 00:13:53.361
welche sind vielleicht gerade in Beta oder Canary,

00:13:53.889 --> 00:13:58.696
und welche stecken noch gerade so in den Grundzügen.

00:13:59.002 --> 00:14:05.861
Und was ich ganz gut fand, da hatte jemand gesagt, ob man nicht...

00:14:05.861 --> 00:14:10.669
Also es gibt ja bestimmte APIs, die so user-activated sind.

00:14:11.317 --> 00:14:15.541
Also wo man jetzt keine Permission braucht, aber so ein User Activation.

00:14:15.656 --> 00:14:23.941
Und das war die Vibration API jetzt zum Beispiel. Und das ist mir aufgefallen, weil ich selber diesen Wunsch irgendwann mal hatte,

00:14:23.941 --> 00:14:28.376
dass die einfach nicht jedes Mal erst User Activated werden muss.

00:14:28.502 --> 00:14:32.261
Also was bei einer SPA vielleicht noch so gerade so okay ist,

00:14:32.261 --> 00:14:33.976
aber bei einer MPA dann doof.

00:14:34.261 --> 00:14:44.261
Genau, und was ich ganz charmant fand, Das war eben da auch den Vorschlag, hey, wenn man eine PWA,

00:14:44.261 --> 00:14:50.261
also eine Progressive Web App, einmal installiert hat auf seinem System, könnte man da dann nicht eben

00:14:50.261 --> 00:14:53.261
anderes Verfahren mitrechten.

00:14:53.261 --> 00:15:00.261
Und ich finde das eigentlich ganz gut. Also der Safari, der hat jetzt ja auch die Push Notifications,

00:15:00.261 --> 00:15:03.261
und die haben auch so einen Ansatz.

00:15:03.261 --> 00:15:10.141
Also ich glaube, die erlauben ja gar nicht erst diese Push-Requests in der nicht installierten Version,

00:15:10.141 --> 00:15:16.141
so wie das an anderen Browser erlauben, sondern man muss eben sozusagen sich auf eine Anwendung

00:15:16.141 --> 00:15:19.981
erstmal committen, Interesse zeigen,

00:15:20.310 --> 00:15:24.341
die installieren als Progressive Web App und dann kommt so was.

00:15:24.341 --> 00:15:29.301
Aber ich finde also dieses, dass man das unterschiedlich betrachtet,

00:15:29.301 --> 00:15:34.661
wenn es gerade so quasi aus dem Web geladen wird oder ob man sich das richtig installiert hat,

00:15:34.661 --> 00:15:37.370
So da Unterschiede zu machen, finde ich total gut.

00:15:39.665 --> 00:15:43.563
Ja, also das wäre auch mein Lied jetzt gewesen, um die Frage zu beantworten.

00:15:44.463 --> 00:15:50.360
Ja, also es gibt quasi zwei Schulen, auch innerhalb von Chrome, die sagen...

00:15:51.476 --> 00:15:58.606
Installieren einer Applikation ist ein ganz klares Signal. Wir wollen da dann mehr Use Cases, vielleicht auch mit

00:15:58.606 --> 00:16:02.406
leichteren Permissions, also sprich, die dann weniger scary sind,

00:16:02.406 --> 00:16:05.406
oder weniger häufig auftreten, arbeiten,

00:16:05.808 --> 00:16:11.846
oder dass man sagt, manche APIs sind vielleicht sogar ohne explizite Permission dann nutzbar,

00:16:11.846 --> 00:16:17.709
und es gibt die andere Schule, die sagt, nee, also die zwei Welten sollten genau gleich sein, installiert und nicht installiert.

00:16:17.808 --> 00:16:22.726
De facto ist es, glaube ich, einfach so, die Differenzierung existiert.

00:16:22.726 --> 00:16:26.506
Also, es gibt bestimmte APIs, die ergeben nur Sinn für installierte Applikationen.

00:16:26.506 --> 00:16:30.886
Also, konkretes Beispiel, die Badging API, die einem erlaubt, so ein kleines App-Pad,

00:16:30.886 --> 00:16:34.426
also, sprich so, was man so kennt von Gmail zum Beispiel,

00:16:34.732 --> 00:16:39.106
dass man sagt, fünf ungelesene E-Mails, also meistens sind es eher 5.000 als 5,

00:16:39.106 --> 00:16:48.606
dass man dann eben so eine kleine 5 oder eine 5.000 auf das App-Icon setzt und der Benutzer dann weiß, das ist, ja, was ich zu tun habe,

00:16:48.606 --> 00:16:53.486
gibt's natürlich in den Fav-Icons, quasi per Software umgesetzt,

00:16:53.486 --> 00:16:55.726
also dass man irgendwie in SVG-Fav-Icons setzt.

00:16:56.373 --> 00:17:00.926
Und dann per SVG die Zahl im Fav-Icon modifiziert.

00:17:00.926 --> 00:17:03.326
Das ist das, was im Browser läuft.

00:17:03.701 --> 00:17:10.326
Es gibt aber auch quasi direkt auf dem installierten App-Icon die Möglichkeit, so ein Badge zu setzen,

00:17:10.326 --> 00:17:17.846
und das sind klassischerweise eben keine SVGs, die man einfach mal so modifizieren kann, sondern das sind PNGs, typischerweise,

00:17:17.846 --> 00:17:23.166
was da Android, MacOS und so weiter voraussetzen, und dafür gibt's die Badging-API,

00:17:23.166 --> 00:17:27.881
und ja, die ergibt natürlich nur Sinn für installierte PWAs.

00:17:28.548 --> 00:17:33.126
Und es ist ziemlich interessant eigentlich, dass Apple dieses Modell aufgenommen hat,

00:17:33.126 --> 00:17:37.846
weil Apple hatte so eine interessante Beziehung zum Thema PWAs,

00:17:37.846 --> 00:17:42.646
also sie nennen das ja gar nicht PWA, sondern sie nennen das App Added to the Home Screen,

00:17:42.646 --> 00:17:48.646
Ja, die sagen ja, die erkennen das ja nicht an als offiziell, also oder als, weiß ich nicht,

00:17:48.646 --> 00:17:50.558
Web-Anwendungsgattung.

00:17:51.756 --> 00:17:59.826
Der WebKit Lead, hat das vor kurzem klargestellt, Mathieu, der meinte, sie haben nichts gegen den Begriff PWA,

00:17:59.826 --> 00:18:03.026
aber was sie eben verstört, ist so ein bisschen

00:18:03.215 --> 00:18:08.486
diese Unterscheidung zwischen ist PWA jetzt installiert, oder ist PWA nicht installiert, oder ist das installierbar,

00:18:08.486 --> 00:18:10.066
oder was bedeutet das denn jetzt?

00:18:10.498 --> 00:18:17.686
Und letztendlich, ja, wie im Prompting, wir sagen PWA und installierte PWA, wenn man so unsere Artikel liest,

00:18:17.686 --> 00:18:24.906
um einfach diesen Unterschied klar zu machen, Und das ist aus, ja, Gründen, die Matthe aufgeführt hat,

00:18:24.906 --> 00:18:31.406
eben nicht Apple-konform, das heißt, die sagen jetzt einfach App added to the home screen, um ganz eindeutig zu sagen,

00:18:31.406 --> 00:18:35.326
das ist eine installierte PWA, was auch immer, auf iOS.

00:18:35.678 --> 00:18:37.526
Also, lange Rede, kurzer Sinn, ich finde es sehr interessant,

00:18:37.526 --> 00:18:44.526
dass Apple dieses Modell gewählt hat, um eben nur installierten PWAs den Zugriff auf Push zu gewähren.

00:18:44.526 --> 00:18:54.246
Ja, letztendlich ist es natürlich wahrscheinlich auch so ein bisschen Sicherheitsdenken. Ihnen war es ja ganz arg, das Thema Notification Spam,

00:18:54.246 --> 00:18:59.746
also kennen wir alle, wenn man so ein fremdes Android-Gerät von jemand an die Hand bekommt,

00:18:59.746 --> 00:19:07.466
die oder der jetzt nicht zwingend super webaffin ist und man dann sieht eine Milliarde Notifications

00:19:07.466 --> 00:19:14.066
von irgendwelchen sketchy Sites, ja, und das wollten sie auf jeden Fall verhindern und ich vermute mal,

00:19:14.066 --> 00:19:16.426
Das war jetzt auch einer der Gründe, warum sie gesagt haben,

00:19:16.426 --> 00:19:22.386
wir machen das jetzt vielleicht zumindest erstmal hinter Installation.

00:19:22.386 --> 00:19:26.546
Vielleicht wird ja irgendwann das aufgemacht, wenn man merkt,

00:19:26.546 --> 00:19:29.486
es ist jetzt vielleicht nicht so spammy, oder Benutzer haben gelernt,

00:19:29.486 --> 00:19:32.946
damit umzugehen, oder vielleicht auch die Prompts werden in einer anderen Art

00:19:32.946 --> 00:19:36.566
und Weise gezeigt, also was wir ja in dem Chrome-Desktop machen.

00:19:36.566 --> 00:19:43.186
Wenn wir merken, die Seite ist ein bisschen spammy, was jetzt Permissions angeht, dann zeigen wir nicht diesen blockierenden

00:19:43.186 --> 00:19:49.686
Prompt, sondern wir zeigen so einen, ja, in der URL-Bar versteckten ein bisschen Bubble Prompt.

00:19:49.686 --> 00:19:56.186
Kann man auch im Artikel darüber lesen, wo ich erzähle, wie das Permissions-Team das gemacht hat.

00:19:56.680 --> 00:20:02.686
Ja, letztendlich, ja, sehr interessantes Modell, wie gesagt, das Apple da gewählt hat, aber ja,

00:20:02.686 --> 00:20:08.686
so ist es und ich glaube, persönlich, man sollte schon so ein bisschen unterscheiden zwischen,

00:20:08.686 --> 00:20:15.026
jemand hat die App installiert, das heißt, man kann dann etwas Laxa sein, was Permissions angeht, und ich denke,

00:20:15.026 --> 00:20:18.626
längerfristig ist das auch das, was die Mehrheit des Chrome-Teams

00:20:19.015 --> 00:20:23.048
möchte, aber ja, nach wie vor, es gibt beide Schulen innerhalb des Chrome-Teams.

00:20:25.326 --> 00:20:32.426
Ja, also ich finde das auf jeden Fall auch eigentlich einen guten Ansatz, also deswegen, da wäre ich dann

00:20:32.797 --> 00:20:36.164
auch bei euch, mit in eurem Team.

00:20:36.254 --> 00:20:42.986
Genau, und ich hab auch gesehen, als ich diese Liste durchging,

00:20:42.986 --> 00:20:50.986
dass es nicht nur PWAs gibt mittlerweile, sondern etwas, das sich IWA nennt.

00:20:51.765 --> 00:20:58.095
Das habe ich jetzt zum ersten Mal gesehen. Und habe dann geguckt, was das denn wohl sein könnte.

00:20:58.095 --> 00:21:00.455
Und das sind isolated Web Apps.

00:21:00.533 --> 00:21:03.735
Was hat es denn damit auf sich?

00:21:04.422 --> 00:21:16.015
Genau. Isolated Web Apps sind quasi, wenn man so die Bandbreite an gefährlich und nicht gefährlich anschaut,

00:21:16.015 --> 00:21:19.843
dann ist quasi im Browser-Tab laufend, das ist komplett ungefährlich.

00:21:20.428 --> 00:21:28.656
Installierte PWA ist potenziell ein kleines bisschen gefährlich und dann hat man so am anderen Ende des Spektrums die sogenannten IWAs

00:21:28.701 --> 00:21:33.904
und gefährlich meine ich im Sinne von, welche APIs sind denn für diese Applikationen verfügbar

00:21:34.012 --> 00:21:41.943
und bei den isolated Web Apps, da geht's eben darum, dass man auch solche APIs wie jetzt Direct Sockets aktiviert.

00:21:42.070 --> 00:21:47.335
Viele wundern sich, ja, Web Sockets ist ja eine API, die existiert.

00:21:47.786 --> 00:21:50.460
Websockets ist halt limitiert, was man darüber schicken kann.

00:21:50.514 --> 00:21:59.715
Und Direct Sockets erlaubt einem eben, dass man jedes Protokoll quasi abbilden kann über, ja, native Sockets.

00:21:59.715 --> 00:22:05.195
Und das große Problem dabei ist, das erlaubt einem, wenn man geschickt ist und weiß, wie es geht,

00:22:05.484 --> 00:22:08.835
dass man da eben zum Beispiel Enterprise Firewalls umgehen könnte.

00:22:08.835 --> 00:22:16.635
Und das ist eben natürlich das, was viele Leute nicht wollen und natürlich auch die meisten Leute nicht von einer Webapplikation erwarten,

00:22:16.635 --> 00:22:20.915
dass die jetzt sich irgendwie über die Windows-Firewall oder was auch immer,

00:22:20.915 --> 00:22:23.955
die vom Arbeitgeber vorgegebenen Firewall hinweg setzt.

00:22:24.020 --> 00:22:30.035
Letztendlich gibt's aber viele Use Cases, die das doch durchaus erfordern,

00:22:30.035 --> 00:22:35.755
also sprich native Sockets, und im konkreten Fall sind das Anbieter,

00:22:35.755 --> 00:22:39.835
die aktiv sind im Bereich VDI, also Virtual Desktop.

00:22:40.539 --> 00:22:48.595
Das I steht für Integration, glaube ich, Also sprich, das Streamen von einem Betriebssystem auf ein anderes.

00:22:48.595 --> 00:22:53.995
Und da gibt's verschiedene Anbieter, ich kann jetzt natürlich keine Namen nennen,

00:22:53.995 --> 00:22:58.995
aber parallel auf Englisch übersetzt ist zum Beispiel einer davon,

00:22:58.995 --> 00:23:09.075
oder was so ähnlich klingt wie Zitrone, ist ein anderer, und ja, die haben eben klassischerweise native Applikationen für Windows,

00:23:09.075 --> 00:23:11.435
für Mac, die eben genau das umsetzen.

00:23:11.435 --> 00:23:15.295
Für die ist eben der Bereich Chromebooks auch ein sehr interessanter Bereich,

00:23:15.295 --> 00:23:23.975
eben weil Chromebooks relativ günstig zu haben sind und Chromebooks eingesetzt werden gerne auch im Enterprise-Bereich natürlich.

00:23:24.695 --> 00:23:28.431
In Callsend dann beispielsweise, wo man eben eine riesige Flotte an Chromebooks hat,

00:23:28.989 --> 00:23:33.785
und die ganzen Applikationen aber letztendlich alle auf Windows-Ebene laufen

00:23:34.157 --> 00:23:40.245
und was diese Anbieter dann machen, ist, sie streamen die Windows-Umgebung auf das lokale Chromebook

00:23:40.245 --> 00:23:44.145
gerne eben so, dass sich das überhaupt nicht mehr nach einem Chromebook anfühlt,

00:23:44.145 --> 00:23:48.845
sondern dass eben alles aus einem Guss sich anfühlt.

00:23:48.845 --> 00:23:56.025
Das haben sie bisher gemacht über sogenannte Chrome Apps. Die Chrome Apps Plattform wird allerdings deprecated.

00:23:56.025 --> 00:24:03.305
Und isolated Web Apps ist jetzt ein erster Schritt, um dann eben die Use Cases, die diese Anbieter haben,

00:24:03.305 --> 00:24:08.385
doch nochmal umzusetzen auf, ja, Web Plattform ist ein bisschen relativ,

00:24:08.385 --> 00:24:12.985
weil, ja, es gibt bestimmte Einschränkungen, was jetzt eine IWA kann,

00:24:12.985 --> 00:24:15.745
zum Beispiel kann man sie nicht einfach so direkt im Browser aufrufen,

00:24:15.745 --> 00:24:21.505
sondern muss diese Applikation über irgendeine Form von Store beziehen,

00:24:21.505 --> 00:24:27.305
oder man muss über den Enterprise Admin die Applikation installiert bekommen,

00:24:27.305 --> 00:24:29.512
aus seinem gemanagten Chromebook.

00:24:29.705 --> 00:24:38.265
Und ja, da kann man dann auf diese Art und Weise dann eben quasi mit Web-Technologien, also nicht Web, aber Web-Technologien,

00:24:38.265 --> 00:24:46.905
Applikationen bauen, die dann mit zum Beispiel dem nativen Socket Server von einem Streaming-Anbieter sprechen.

00:24:47.183 --> 00:24:52.385
Und dann eben da diese Windows, was auch immer, Umgebung gestreamt darstellen

00:24:52.385 --> 00:24:53.332
auf dem lokalen Chromebook.

00:24:53.585 --> 00:24:57.185
Und da kommt man dann natürlich auch gleich sehr schnell vom 100. ins 1000.

00:24:57.185 --> 00:25:01.985
Wenn ich ein Browser-Fenster hab und im Browser-Fenster ein anderes Fenster darstelle,

00:25:02.073 --> 00:25:06.345
also sprich im, sagen wir, Chromebook-Fenster ein Windows-Fenster darstelle,

00:25:06.345 --> 00:25:08.985
was passiert denn, wenn ich das Windows-Fenster schließe,

00:25:08.985 --> 00:25:14.785
soll dann auch das Chromebook-Fenster sich schließen, oder was passiert, wenn ich das Windows-Fenster minimiere oder maximiere,

00:25:14.785 --> 00:25:17.065
erzähle ich jetzt dann immer sehr schnell der Wunsch da,

00:25:17.065 --> 00:25:23.945
Fenster im Fenster quasi gar nicht erst anzuzeigen, sondern das gestreamte Fenster zum eigentlichen Fenster

00:25:23.945 --> 00:25:26.665
quasi abzugraden, also sprich das Chrome-Fenster,

00:25:26.665 --> 00:25:32.345
Chromebook-Fenster, dann seamless zu machen, also borderless, seamless, keine Controls mehr anzuzeigen,

00:25:32.345 --> 00:25:39.864
keine Chromebook-eigenen Close-Buttons, Minimize-Buttons und so weiter, sondern das alles dann quasi, ja,

00:25:40.265 --> 00:25:46.225
über die gestreamte Plattform zu emulieren, dass man eben sagt, wenn ich jetzt in Windows Minimize drücke,

00:25:46.225 --> 00:25:51.305
dann soll das übersetzt werden in ein Chromebook-Window, Minimize-Event und so weiter,

00:25:51.305 --> 00:25:55.145
sodass sich das Ganze sehr natürlich und nativ anfühlt.

00:25:55.510 --> 00:26:01.825
Und ja, da ist man eben sehr schnell bei APIs, die ziemlich, in Anführungszeichen, gefährlich sind,

00:26:01.825 --> 00:26:05.746
und deshalb eben dieses neue Arbeitsfeld isolatet überwärmt.

00:26:06.583 --> 00:26:10.625
Dass dann, wenn ich es richtig verstehe, ein verschobenes Feature-Set ist,

00:26:10.625 --> 00:26:17.465
also privilegiert in so mancherlei Hinsicht, weil ich direkt Zocken spucken kann und ähnliches, aber halt limitiert in anderer Hinsicht,

00:26:17.701 --> 00:26:20.573
Ich schaff das nicht eben an und dann ist das da.

00:26:22.400 --> 00:26:25.407
Genau, also das ist einfach ein anderes Sicherheitsmodell da.

00:26:25.749 --> 00:26:30.070
Die Installation ist tatsächlich eine Installation im klassischen Sinne, also sprich,

00:26:31.123 --> 00:26:39.810
es ist noch nicht genau, ja, realisiert, aber die Idee ist, dass man auf irgendwie so eine Art Play Store, Chrome Web Store, was auch immer gehen muss,

00:26:40.099 --> 00:26:47.210
und dann auch so eine komplette Zeremonie in puncto möchtest du das jetzt wirklich installieren, das und das sind die Permissions, bla bla,

00:26:47.399 --> 00:26:49.690
du downloadest das in Anführungszeichen,

00:26:49.893 --> 00:26:54.090
Das läuft dann auch nicht in einem Origin wie example.com oder HTTPS,

00:26:54.090 --> 00:26:57.850
example.com vielmehr, sondern das läuft dann auch so einem

00:26:58.112 --> 00:27:01.821
Gewalt Chrome Extension sozusagen, die ja auch so ein eigenes Scheme haben,

00:27:02.118 --> 00:27:07.310
also Chrome Extension slash Scrolling blablabla und das ist dann eben auch so eine

00:27:07.310 --> 00:27:13.850
quasi opake Origin-artige Umgebung, die eben auch komplett von der Webumgebung

00:27:14.217 --> 00:27:17.890
gesendboxt ist und ja, auf die Art und Weise wird eben sichergestellt,

00:27:17.890 --> 00:27:25.050
dass jetzt auch zum Beispiel so eine IWA sich nicht sandboxen lässt oder iframen lässt oder was auch immer,

00:27:25.050 --> 00:27:27.766
sondern dass das komplett eine eigene Umgebung ist.

00:27:28.261 --> 00:27:35.810
Ist ein bisschen wie ein Electron, wo ich einfach die auf dem System vorhandene Browser-Technik gleichsam hijacke,

00:27:35.810 --> 00:27:41.566
um da drin meine Applikation abzufeuern und ich schleppe sie nicht mit mir mit für jede Echse, die ich mir da installiere, ne?

00:27:42.916 --> 00:27:49.690
Das geht in die Richtung, genau, Elektron schickt ja jedes Mal ein eigenes Chromium mit, das heißt, wenn ich mir jetzt zwei

00:27:49.690 --> 00:27:53.215
Elektron-Apps installiere, dann habe ich zweimal Chromium intern,

00:27:54.007 --> 00:28:01.690
installiert, sozusagen, gerne auch mal outdated, wenn jetzt Elektron nicht so häufig aktualisiert wird, was das

00:28:01.690 --> 00:28:09.690
Paket, das drunter liegt, angeht. Es gibt dann andere von, andere Wrapper-Technologien, die dann eben versuchen,

00:28:09.690 --> 00:28:14.433
System WebView oder die System Chrome oder Default Browser Umgebung zu nutzen.

00:28:14.505 --> 00:28:17.650
Das Problem dabei ist, ich hab mir das vor kurzem mal angeschaut,

00:28:17.650 --> 00:28:25.272
das funktioniert prinzipiell, aber sobald man interessante Sachen machen möchte, also sprich irgendwelche Advanced Web APIs nutzen,

00:28:25.330 --> 00:28:28.432
dann ist es eben blöd, wenn man sich darauf verlässt, dass jetzt

00:28:28.513 --> 00:28:38.170
bestimmte Chrome-APIs da sind, aber der Benutzer Safari installiert hat beispielsweise und dann eben die Applikation sagt, okay, ich bin jetzt

00:28:38.170 --> 00:28:41.650
der Wrapper. Ich schaue, was gibt es für Browser auf dem System.

00:28:41.650 --> 00:28:49.450
Okay, es ist Safari da. Ich implementiere intern meine gewappten Calls.

00:28:48.174 --> 00:28:53.744
Über Safari APIs und wenn die eben nicht da sind, dann ist es halt blöd und dann ist man wieder bei diesem Thema,

00:28:53.744 --> 00:28:58.067
ja, ich will halt irgendwie doch sicherstellen, dass meine Runtime vorhersehbar ist.

00:28:58.733 --> 00:29:05.584
Und dann ist man doch wieder zurück beim Modell Elektron oder, ja, es gibt verschiedene andere Tricks,

00:29:05.584 --> 00:29:10.589
die dann zumindest sagen, wir verwenden das installierte Chromium oder Chrome oder was auch immer

00:29:10.815 --> 00:29:13.824
und man kann dann quasi den Browser festzuhren,

00:29:14.181 --> 00:29:23.624
aber auch das, habe ich festgestellt, ist nicht zwingend vorhersehbar, also man kommt da in sehr, sehr komische Bugs und ja, wir hatten vorher das Thema Masteron,

00:29:23.624 --> 00:29:30.784
es gibt einen interessanten Client, der heißt Elk, da gibt es auch eine native Applikation, die über ein Framework namens Tauri

00:29:30.784 --> 00:29:36.664
implementiert wird, und da bin ich gerade mit ein paar anderen Leuten auf dem Issue, ich weiß jetzt die Nummer nicht,

00:29:36.664 --> 00:29:43.504
aber können mir bestimmt im Nachhinein nachreichen, wo dann eben drin steht, ja, man startet die Applikation,

00:29:43.504 --> 00:29:45.664
man lockt sich ein und dann hat man einen schwarzen Bildschirm.

00:29:45.664 --> 00:29:51.154
Und das ist letztendlich genau der gleiche Code, der auch im Browser läuft, ohne jedes Problem,

00:29:51.199 --> 00:29:56.984
aber halt aus irgendwelchen Gründen kommt dieser super spezielle Bug dann zum Vorschein.

00:29:56.984 --> 00:30:03.844
Und ja, also, das müsste man eben über IWIS quasi dem Benutzer ersparen, dass man sagt,

00:30:03.844 --> 00:30:09.244
die Umgebung ist vorhersehbar, das ist eben das Chrome, das der Benutzer installiert hat,

00:30:09.244 --> 00:30:17.404
oder das Chrome, das jetzt auf dem Chromebook läuft, Und ja, dadurch ist die Umgebung verhälssicher, aber halt am Ende

00:30:17.404 --> 00:30:23.778
auch der Vorteil, dass man nicht für jede Applikation ein eigenes Chromium mitschippen muss, ist dann auch gegeben.

00:30:26.384 --> 00:30:35.564
Ich hab gerade nachgedacht, weil ich irgendwie musste ich an die Apple Store-Regel denken, dass man ja eben keinen anderen Browser

00:30:35.564 --> 00:30:38.271
installieren darf, keine andere Engine benutzen darf,

00:30:38.326 --> 00:30:43.984
als die Safari-Engine und da kam ich gerade erst auf den Gedanken,

00:30:43.984 --> 00:30:47.784
dass das ja anscheinend bei Elektron eben nicht der Fall ist.

00:30:47.784 --> 00:30:51.712
Wobei, nee, stopp, das ist ja eh Desktop, genau, deswegen ist das wurscht, da geht das ja.

00:30:51.802 --> 00:30:57.984
Okay, nee, Kommando zurück, ich hatte nur überlegt, also wie sieht's denn da eigentlich aus?

00:30:57.984 --> 00:31:01.569
Okay, ja, das ist ja auch ein Problem, das man dann nochmal separat lösen muss.

00:31:01.840 --> 00:31:06.584
Ich weiß ehrlich gesagt nicht, wie es auf dem MacOS App Store ist,

00:31:06.584 --> 00:31:12.633
dass man da Elektronenapplikationen liefern darf, aber auf iOS, iPadOS da auf jeden Fall nicht.

00:31:14.119 --> 00:31:18.369
Genau, weil Slack gibt's ja auch für MacOS, aber da ich selber Windows hab,

00:31:18.620 --> 00:31:22.969
weiß ich jetzt nicht, ob man das auch über den Apple Store beziehen kann.

00:31:23.029 --> 00:31:26.767
Aber das werden uns unsere Hörerinnen und Hörer vielleicht noch erzählen.

00:31:27.910 --> 00:31:33.209
Wie seid ihr denn, ähm, also wie geht ihr denn vor? Also ist es so, dass ihr ...

00:31:33.941 --> 00:31:38.129
Oder ich könnte mir vorstellen, dass ihr euch vielleicht so ein paar für Fugu jetzt,

00:31:38.189 --> 00:31:41.889
sozusagen, dass ihr irgendwie auslotet, was brauchen die Leute,

00:31:41.889 --> 00:31:44.834
dass ihr so ein paar Flagship, vielleicht, sagen wir mal,

00:31:45.230 --> 00:31:50.461
Elektronenanwendungen oder ehemals Cordova-Anwendungen euch irgendwie geschnappt habt,

00:31:51.037 --> 00:31:54.209
und dann mit den Entwicklern gesprochen habt und gesagt habt,

00:31:54.269 --> 00:32:01.254
das sind jetzt erst mal so unsere Flagsschiffe, die werden wahrscheinlich relativ viele API-Wünsche mitbringen

00:32:01.429 --> 00:32:03.478
und damit decken wir dann relativ viel ab.

00:32:04.162 --> 00:32:09.229
Oder ist es eher so, dass ihr quasi wartet, was so eintrudelt,

00:32:09.229 --> 00:32:16.180
und ihr dann sozusagen aussiebt so ein bisschen, wo die meisten Leute nachrufen.

00:32:16.981 --> 00:32:21.549
Wie macht ihr das? Also eine Mischung aus beiden, plus eine dritte Komponente.

00:32:21.549 --> 00:32:24.369
Die dritte Komponente erwähne ich ganz am Anfang.

00:32:24.369 --> 00:32:29.949
Das hat eben quasi ursprünglich mit dem Vorgänger von Project Fugu angefangen.

00:32:29.949 --> 00:32:35.689
Das Projekt hieß Intern FIS. Und die Idee war Chrome Apps.

00:32:36.372 --> 00:32:43.369
Hatte ich ja vorher schon erwähnt, eine Plattform, die inzwischen deprecated ist, und ein erster Schritt war quasi, man schaut sich

00:32:43.369 --> 00:32:52.849
alle Chrome Apps, APIs an, und versucht die dann zu übersetzen in Open Web APIs, also sprich, keine Chrome APIs mehr, sondern,

00:32:53.341 --> 00:32:55.649
ja, man versucht sie eben zu generalisieren.

00:32:55.649 --> 00:33:07.475
Das war der dritte Inputfaktor sozusagen, ohne dass ich die jetzt irgendwie ranken möchte. Der zweite ist letztendlich Partner Requests.

00:33:08.132 --> 00:33:13.862
Konkrete, große Leuchtturmprojekte, natürlich jetzt Adobe, Photoshop, haben wir

00:33:14.056 --> 00:33:19.342
bei Google I.O. gehört, ohne Ende, und ja, ist auch nach wie vor, würde ich sagen,

00:33:19.342 --> 00:33:21.342
einer der faszinierendsten Fälle,

00:33:21.672 --> 00:33:26.622
und dann natürlich auch einfach in die Breite, also Entwicklerbedarf,

00:33:26.622 --> 00:33:33.393
jeder kann einen neuen Fugu-Bug requesten, also das ist bit.ly slash new dash Fugu dash request,

00:33:33.662 --> 00:33:39.662
und da kommt man auf so ein Bug Template sozusagen und beschreibt dann seinen Use Case

00:33:39.662 --> 00:33:41.662
und das landet dann in der Queue

00:33:42.062 --> 00:33:50.065
und ja, interessierte Entwickler, Entwicklerinnen können sich dann auf diesen Bug quasi starren, also sprich den Bug.

00:33:50.506 --> 00:33:58.782
Abonnieren sozusagen, natürlich auch kommentieren und die eigenen Use Cases, ja, klar machen, warum braucht man jetzt die API

00:33:58.782 --> 00:34:03.502
und was auch immer. Und ja, also die Kombination aus diesen drei Faktoren

00:34:03.676 --> 00:34:12.142
Chrome APIs, also Chrome Apps APIs, große Partner und letztendlich allgemeine Entwickler-Requests.

00:34:12.381 --> 00:34:20.902
Das ist das, was uns quasi motiviert hat und auch priorisiert hat, jetzt die ganzen APIs zu entwickeln.

00:34:20.902 --> 00:34:27.582
Und ja, inzwischen ist eben diese Phase, wo man jetzt die Haupt-App-Gap abgedeckt hat,

00:34:27.582 --> 00:34:31.302
also weitmachen, es gibt natürlich noch eine lange, lange Liste, du hast ja vorher erwähnt,

00:34:31.302 --> 00:34:38.782
den Fugue API Tracker. Da gibt's auch ganz, ganz viele APIs, die sind under consideration, also sprich, man schaut sich das mal an,

00:34:38.782 --> 00:34:41.662
aber wir haben einfach noch keine konkrete Entscheidung getroffen.

00:34:41.662 --> 00:34:47.542
Und ja, da schauen wir dann eben, was machen wir in Zukunft,

00:34:47.542 --> 00:34:54.062
und welche von den existierenden APIs haben denn vielleicht irgendwelche Feinheiten, die man noch korrigieren kann.

00:34:54.062 --> 00:34:56.902
Ich hatte ja anfangs erwähnt, das mit dem Thema Permissions,

00:34:56.902 --> 00:35:03.462
und, ja, die eben persistiert werden, so dass das eben doch irgendwie sicher ist,

00:35:03.462 --> 00:35:07.349
aber halt auch Use Cases unlocked, die vorher nicht möglich war.

00:35:09.672 --> 00:35:14.832
Ja, man muss ja auch dazu sagen, also es sind ja wirklich Unmengen an APIs.

00:35:15.073 --> 00:35:18.152
Mehr ist ja nicht immer per se besser.

00:35:18.413 --> 00:35:25.332
Ist ja auch einfach Arbeit für euch. Also Engineering-Arbeit wird da gebunden, das zu implementieren.

00:35:25.332 --> 00:35:34.432
Ihr müsst quasi Tests schreiben. Und alles wird ja dann letztlich, also je mehr APIs man später dann durch Codeänderungen nicht kaputt machen darf,

00:35:34.432 --> 00:35:37.201
desto schwieriger wird es natürlich auch.

00:35:37.354 --> 00:35:42.492
Das ist ja sowieso, also bei Browsern, das ist ja der helle Wahnsinn,

00:35:42.552 --> 00:35:45.792
was das für Monstermaschinen sind mittlerweile.

00:35:45.852 --> 00:35:49.984
Und ein Wunder, dass die nicht einfach kaputtgehen.

00:35:50.263 --> 00:35:57.292
Also, dass Releases überhaupt geschippt werden können, ohne dass irgendwie links und rechts

00:35:57.352 --> 00:35:59.692
irgendwelche APIs wieder kaputtgegangen sind.

00:35:59.869 --> 00:36:03.392
Einfach weil's so viele sind und weil das so ein komplexes Thema ist.

00:36:03.392 --> 00:36:07.728
Genau, also da bin ich immer wieder höchst beeindruckt.

00:36:08.808 --> 00:36:16.572
Also, es kommt vor, dass was kaputt geht. Teil unseres Prozesses sind natürlich auch, dass man genügend Webpagetests schreibt,

00:36:16.991 --> 00:36:20.412
dass man genügend Webpagetests schreibt, die eben versuchen,

00:36:20.412 --> 00:36:24.732
alle möglichen Fallstricke, die eine API hat, abzutesten.

00:36:24.732 --> 00:36:33.792
Vor kurzem ging kaputt die Shape Detection API, die eben intern in das Framework des Betriebssystems sich einhakt,

00:36:33.933 --> 00:36:40.592
um dann eben QR-Codes aus Bildern oder aus Bildestreams, also von der Kamera zum Beispiel, zu lesen.

00:36:40.592 --> 00:36:48.913
Da hat mit macOS Venture sich irgendwas intern geändert und das hat bisher kein Test abgefangen.

00:36:49.507 --> 00:36:56.192
Ready von unserem Team hat dann durch großes Hin- und Her-Engineering herausgefunden, wo das Problem war.

00:36:56.637 --> 00:37:00.392
Und dann natürlich den Test geschrieben, dass das in Zukunft nicht mehr passiert,

00:37:00.392 --> 00:37:04.592
aber ja, also du hast schon Recht, das ist schon alles mit Arbeit verbunden,

00:37:04.592 --> 00:37:10.992
man möchte natürlich auch, dass die APIs genutzt werden, dass man sich auf das fokussiert, was den größten Impact hat,

00:37:10.992 --> 00:37:17.792
also sprich, was die meisten Leute verwenden werden, oder was vielleicht die größten Partner von einem wünschen,

00:37:17.792 --> 00:37:20.832
dass man implementiert, letztendlich ist natürlich auch immer wichtig.

00:37:21.645 --> 00:37:29.512
Idealerweise soll das alles natürlich auch sich in Web APIs übersetzen lassen und nicht nur Chrome APIs bleiben.

00:37:29.512 --> 00:37:34.272
Viele APIs, ja, die werden von anderen Browsern auch unterstützt,

00:37:34.272 --> 00:37:37.632
also zum Beispiel WebShare oder WebTransport,

00:37:37.632 --> 00:37:43.112
WebCodex zum Beispiel, wo die anderen Browser-Mentoren sagen,

00:37:43.112 --> 00:37:44.712
tolle Idee, wollen wir auch haben.

00:37:44.712 --> 00:37:48.592
Da startet das dann vielleicht zuerst auf Chrome und wird dann später umgesetzt,

00:37:49.111 --> 00:37:50.832
auf anderen Browsern.

00:37:51.370 --> 00:37:55.632
Es gibt aber auch APIs, würd's zum Beispiel Apple oder Firefox ganz klar sagen,

00:37:55.632 --> 00:38:00.252
wir wollen im konkreten Fall zum Beispiel sowas wie WebUSB nicht haben,

00:38:00.252 --> 00:38:04.252
nicht mit dem existierenden Modell, weil grundlegende...

00:38:04.784 --> 00:38:10.754
Ja, Annahmen, die jetzt Chrome sagt, sind sicher. Die sagen, sind nicht sicher.

00:38:10.754 --> 00:38:16.354
Also, zum Beispiel, wenn man jetzt ein Gerät auswählt, in einem Hardware-Picker, dann sagen wir,

00:38:16.354 --> 00:38:19.314
der Benutzer hat jetzt ausgewählt, seine, was auch immer,

00:38:19.701 --> 00:38:23.394
Nintendo Joy-Cons, um damit über die Web-Hit-API zu sprechen,

00:38:23.394 --> 00:38:28.314
und Apple und dann Mozilla sagen dann, ja, das hat vielleicht der Benutzer gemacht,

00:38:28.314 --> 00:38:33.438
aber es war jetzt keine bewusste Entscheidung, weil die meisten verstehen nicht, was da passiert.

00:38:33.681 --> 00:38:42.834
Und das sind eben einfach grundlegend andere Auffassungen, was das Thema Educated Consent sozusagen angeht.

00:38:42.834 --> 00:38:48.634
Ich würde sagen, das ist letztendlich auch okay. Jeder Vendor darf natürlich machen, was er möchte.

00:38:48.634 --> 00:38:55.634
Wir versuchen einfach zu zeigen, die Use Cases sind da. Wir sind der Ansicht, wenn die Use Cases da sind,

00:38:55.634 --> 00:39:01.634
dann wird das eben umgesetzt über eine native Applikation, die im schlimmsten Fall eben deutlich mehr kann,

00:39:01.634 --> 00:39:03.983
hat jetzt eine Web-Applikation jemals können wird.

00:39:04.091 --> 00:39:09.916
Und ja, deshalb sind wir der Meinung, wenn jetzt der Use-Case da ist und gerechtfertigt ist.

00:39:10.447 --> 00:39:16.460
Dann sollte man das vielleicht in der sicheren Web-Sandbox realisieren und ja, dadurch eben dann

00:39:16.775 --> 00:39:23.714
sicherstellen, dass die Leute, dann wenn sie ein Gerät aus dem Hardware-Picker auswählen, dass sie eben wissen, um was es geht.

00:39:23.714 --> 00:39:29.034
Und ich bin immer wieder fasziniert, wenn ich dann auf diesen Bugs subscribed bin und dann mitbekommen wir unser

00:39:29.034 --> 00:39:31.954
interne Security-Team und UI-Team.

00:39:32.241 --> 00:39:35.680
Ihr werdet zum Beispiel den Text von einer Vermischung.

00:39:36.454 --> 00:39:42.644
Kilometerweise E-Mail-Threads führen, um eben sich hinzustellen, das Chrome-Team sagt, wir wollen A,

00:39:42.644 --> 00:39:44.644
einfach nur API macht das,

00:39:45.096 --> 00:39:50.564
das Security-Team sagt, ja, API macht das, und möglicherweise kann das und das und das und das dann passieren,

00:39:50.957 --> 00:39:53.304
und dann sagt das UI-Team, nee, nee, du kannst jetzt nicht eine

00:39:53.459 --> 00:39:58.573
hellenlange Liste an das und das und das kann passieren, Dingen in diesem Permission-Text aufführen,

00:39:58.684 --> 00:40:00.976
wir brauchen eben den sinnvollen,

00:40:01.552 --> 00:40:09.646
ja, Middle Ground sozusagen, Und ja, da geht's eben dann teilweise wirklich kilometerweise E-Mails hin und her, was jetzt der richtige Text ist,

00:40:10.060 --> 00:40:16.244
und da geht dann sehr, sehr viel Arbeit rein, das so darzustellen, dass die meisten benutzer dann eben verstehen,

00:40:16.244 --> 00:40:19.845
was sie sagen, was sie abnicken oder was sie eben vielleicht auch blockieren.

00:40:21.646 --> 00:40:27.164
Das ist auch eine Kunst für sich, irgendwie so Dinge treffend und verständlich und so zu formulieren,

00:40:27.164 --> 00:40:31.674
genau, nicht ohne Grund gibt's da wirklich Experten dafür.

00:40:31.998 --> 00:40:45.504
Wie ist es denn, wenn andere Vendoren sagen so, hey, wir haben da irgendwie so ein anderes zugrunde liegende oder eine andere zugrunde liegende Philosophie, was die Kommunikation an den User angeht.

00:40:45.556 --> 00:40:53.702
Die wollen vielleicht irgendwie, weiß ich nicht, vielleicht wollen die sich da irgendwie an Betriebssystemen Dingen bedienen, die da den Weg ebnen wollen.

00:40:54.585 --> 00:41:03.731
Ist es denn so, dass die dann sagen, wir finden das nicht so cool, wie jetzt gerade der Serviervorschlag ist,

00:41:03.803 --> 00:41:09.164
aber wir hängen uns jetzt auch dahinter und wir arbeiten das weiter aus,

00:41:09.164 --> 00:41:12.684
sodass es dann am Ende so ist, wie wir möchten?

00:41:12.684 --> 00:41:17.044
Oder ist es eher so, dass sie das nur doof finden und tendenziell nichts machen?

00:41:17.044 --> 00:41:25.976
Oder ist das so ein Mix? Wie würdest du das, also wie ziehen die da mit bei der ganzen Geschichte?

00:41:27.272 --> 00:41:35.044
Also Hintergrund der Frage ist natürlich, das ist total cool, dass Chrome das alles kann, aber natürlich ist es ja immer schöner,

00:41:35.044 --> 00:41:43.044
wenn man so eine Perspektive darauf hat, dass alle Engines irgendwann dahin kommen.

00:41:43.044 --> 00:41:47.044
Vielleicht, also es muss ja jetzt ja nicht alles sein, aber eben so eine gewisse

00:41:47.044 --> 00:41:49.778
diese Mindestzahlen-APIs dann eben auch implementieren.

00:41:49.886 --> 00:41:55.350
Wollte es genau auch gerade fragen, weil es gibt ja auch diese schöne Webseite hier aus den Shownotes hier,

00:41:55.467 --> 00:42:00.484
howfuguismybrowser.dev, wo ich gerade mal spaßeshalber mit meinem Chrome drauf gegangen bin

00:42:00.760 --> 00:42:05.244
und da fehlt am Ende irgendwie noch so 5% und da bin ich mit meinem Firefox drauf gegangen

00:42:05.244 --> 00:42:10.303
und dann ist der optische Eindruck von dieser Progressbar mehr so, dass die 5% sich da halt eben an dem,

00:42:10.582 --> 00:42:13.796
was unterstützt, daran orientiert.

00:42:14.255 --> 00:42:20.844
Und das ist ja, also, ne, klar, das sind Web APIs im Sinne von, die sind im Browser und die haben irgendwie eine Spezifikation und Zeug,

00:42:20.844 --> 00:42:23.644
aber ich meine de facto ist es ja schon alles ein bisschen chromig im moment noch.

00:42:25.778 --> 00:42:31.108
Genau. Ich möchte zwei Geschichten dazu erzählen. Die erste Geschichte ist Figma.

00:42:31.512 --> 00:42:39.828
Figma ist natürlich eine sehr populäre Applikation. Gibt es online, aber man wird sehr schnell feststellen,

00:42:39.828 --> 00:42:44.668
man muss da eine Chromium-Applikation runterladen, Quatsch, eine Elektronen-Applikation runterladen,

00:42:44.668 --> 00:42:48.185
also sprich, eine Chromium-Runtime, in der das Ganze läuft,

00:42:48.266 --> 00:42:50.428
dann funktioniert das alles wunderbar.

00:42:50.930 --> 00:42:55.692
Wenn man die Web-Applikation verwendet, muss man eine zusätzliche Browser-Extension installieren

00:42:55.773 --> 00:43:01.904
und diese Extension macht letztendlich möglich, dass man Zugriff hat auf die lokalen Schriftarten.

00:43:02.183 --> 00:43:08.248
Für Designers ist natürlich immer wichtig, Zugriff auf alle Schriftarten zu haben, die jetzt auch vielleicht nicht zwingend

00:43:08.248 --> 00:43:09.574
als Web-Fonts verfügbar sind.

00:43:09.728 --> 00:43:14.648
Also, das erste, was die meisten sagen, ist, ja, lokale Fonts ist doch Blödsinn,

00:43:14.648 --> 00:43:18.928
gibt doch Web-Fonts, ja, gibt es natürlich, aber ganz viele Schriften,

00:43:18.928 --> 00:43:20.608
gerade im Corporate-Umfeld,

00:43:20.926 --> 00:43:25.208
sind eben so lizenziert, dass die nicht als Webfonds ausgeliefert werden dürfen

00:43:25.589 --> 00:43:31.768
und nur quasi als physische Dateien auf den genau 27 Geräten, die die Firma jetzt

00:43:31.768 --> 00:43:40.408
bei was auch immer, Linotype oder wem auch immer, angemeldet hat und da ist eben genau das Ding, dass diese Schriftarten dann doch lokal ausgeliefert werden müssen

00:43:40.408 --> 00:43:43.848
und ja, also, was ist der Umweg?

00:43:43.848 --> 00:43:48.888
Entweder man lädt sich die Elektron App runter, die eben Chromium implementiert

00:43:48.888 --> 00:43:53.433
und dann Zugriff liefert auf die lokalen Schriftarten über irgendwelche Node APIs

00:43:53.514 --> 00:43:57.768
oder über diesen Umweg, dass man dann im Browser zwar arbeiten kann,

00:43:57.768 --> 00:44:00.288
aber trotzdem eine Browser-Extension braucht.

00:44:00.896 --> 00:44:03.688
Und, ja, was ist der Use Case?

00:44:03.688 --> 00:44:07.168
Ja, der Use Case ist natürlich, lokale Schriftarten zu bekommen.

00:44:07.512 --> 00:44:12.048
Es gibt die Local Fonts Access API, die eben genau das ermöglicht.

00:44:12.689 --> 00:44:18.539
Da sagt bisher zumindest Apple, das ist ein großer Tracking-Vektor und da haben sie absolut recht.

00:44:18.539 --> 00:44:22.739
Also die Schriftarten, die man installiert hat, die sind sehr, sehr, sehr identifizierend.

00:44:23.158 --> 00:44:27.739
Konkretes Beispiel, ich bin bei Google angestellt, das heißt, auf meinem Laptop findet sich eine Schriftart,

00:44:27.957 --> 00:44:32.699
die heißt Google Suns, die sieht quasi genau gleich aus wie Helvetica,

00:44:32.699 --> 00:44:39.739
für den Nicht-Typografen ist aber nicht Helvetica, was letztendlich Google ermöglicht,

00:44:39.739 --> 00:44:42.139
dafür keine Lizenzgebühren zu bezahlen.

00:44:42.549 --> 00:44:46.258
Und, ja, so ist das bei ganz vielen Firmen, und wenn man eben weiß,

00:44:46.654 --> 00:44:51.099
dieser Tracking-Vektor existiert, dann könnte ich über die Schriftarten,

00:44:51.099 --> 00:44:54.819
die ich installiert habe, rausfinden, ist diese Person bei Google beschäftigt,

00:44:54.819 --> 00:44:59.179
ja oder nein. Das ist, was die meisten Leute eben gar nicht so richtig klar haben,

00:44:59.179 --> 00:45:03.299
und, ja, was wir eben wollen, ist trotzdem diesen Use-Case zu ermöglichen,

00:45:03.516 --> 00:45:07.499
was eben, trotz der Tatsache, dass dieser Tracking-Vektor existiert,

00:45:07.499 --> 00:45:11.950
einfach, weil wir sagen, Firmen wie Figma, die müssen einfach diesen Use Case abdecken

00:45:12.139 --> 00:45:16.459
und sie finden einen Weg und dieser Weg ist typischerweise eben ein schlechterer,

00:45:16.459 --> 00:45:22.979
als im Browser direkt die API anzubieten und wir geben natürlich auch die Schriftart nicht einfach nur so raus,

00:45:22.979 --> 00:45:26.259
sondern da kommt ein Prompt und in diesem Prompt steht dann irgendwie drin,

00:45:26.579 --> 00:45:30.859
möchtest du Zugriff auf die lokalen Schriftarten gewähren, bla bla bla,

00:45:30.859 --> 00:45:36.819
und dieses bla bla bla ist wie gesagt sehr sehr sorgfältig gewählt, ich weiß nicht genau den Satz,

00:45:36.819 --> 00:45:40.819
der da drin steht, aber das steht schon in Richtung, ja, das kann möglicherweise

00:45:40.819 --> 00:45:43.459
identifizierend sein, steht irgendwas dazu.

00:45:43.459 --> 00:45:47.050
Und die andere Geschichte, die ich erzählen möchte, ist die von Adobe.

00:45:47.131 --> 00:45:52.419
Adobe hat Photoshop, das natürlich eine native Applikation ist und war,

00:45:52.686 --> 00:45:55.939
also gibt es natürlich auch nach wie vor als native Applikation,

00:45:55.939 --> 00:45:59.299
und das haben sie übersetzt mit M-Scripten auf Web,

00:45:59.879 --> 00:46:05.928
und die haben gesagt, wir brauchen Zugriff auf Dateien, und zwar so, dass das schnell ist.

00:46:06.891 --> 00:46:12.861
Jeder, der sich ein bisschen auskennt, weiß natürlich, man kann über Dateien, über File Open und so weiter arbeiten,

00:46:12.861 --> 00:46:18.541
also, dieser klassische hat mir vorher schon File Upload Case oder man kann auch auf den Client dann zugreifen,

00:46:18.541 --> 00:46:22.979
aber letztendlich das Problem bei sowas ist immer, man kann nicht zurückschreiben.

00:46:23.600 --> 00:46:30.021
Das Problem der Dateien aus dem Internet ist natürlich auch immer, da kann ein Virus drauf gespeichert sein,

00:46:30.021 --> 00:46:36.141
es kann sein, diese Datei wird dann oder das Wortzeichnis, das man jetzt freigibt, wird verschlüsselt,

00:46:36.419 --> 00:46:41.661
und dann verlangt jemand eine Milliarde Bitcoins, um das Verzeichnis wieder zu entschlüsseln,

00:46:41.661 --> 00:46:44.539
und was auch immer, also solche Ransomware-Attacks,

00:46:44.601 --> 00:46:53.601
und da haben einfach Apple und Mozilla gesagt, wir wollen keinen Zugriff derzeit auf Dateien geben

00:46:53.601 --> 00:47:00.194
für native Applikationen, andererseits sehen wir aber ein, diese Use-Case von Adobe Photoshop,

00:47:00.626 --> 00:47:07.581
dass die eben Zugriff brauchen auf native Dateien in einer performanten Art und Weise, ohne dass jetzt

00:47:07.581 --> 00:47:11.321
Safe Browsing oder der Virenscanner drauf rumpusht.

00:47:11.798 --> 00:47:13.976
Und dadurch dann quasi die Performance wieder kaputt macht.

00:47:14.075 --> 00:47:20.181
Warum braucht Adobe das? Weil sie ein Format verwenden, das nennt sich Midmaps. Die Idee ist,

00:47:20.467 --> 00:47:26.821
zoomen auf dem Web ist ja sehr, oder allgemein, in den Grafikseditoren, ist ja eine sehr teure Operation,

00:47:26.821 --> 00:47:29.141
vor allem, wenn man sehr, sehr große Dateien hat,

00:47:29.141 --> 00:47:38.441
Der Trick, wie man das schneller macht, ist, man speichert quasi permanent für verschiedene Auflösungen das vorgerechnet quasi schon mal

00:47:38.441 --> 00:47:43.301
in der Mid-Map, also sprich 100 Pixel auf 100 Pixel, 200 Pixel auf 200 Pixel

00:47:43.301 --> 00:47:52.541
und so weiter, und wenn der Benutzer dann zoomt, kann man immer nur auf der nächsten näheren Schrittweite quasi die Skalierung berechnen,

00:47:52.541 --> 00:48:00.021
was sehr viel billiger ist, als jetzt immer von, was auch immer, den 5000 auf x 1000

00:47:59.519 --> 00:48:07.109
komplett hoch und runter skalieren, und ja, diese Maps, die müssen natürlich bei jedem Schritt, den man editiert,

00:48:07.432 --> 00:48:11.789
aktualisiert werden, ja, das heißt, man braucht eben permanent, wenn ich jetzt einen Pixel auf den Bild dazu füge,

00:48:12.041 --> 00:48:19.069
muss sich das natürlich auch auf alle Zoom-Stufen sofort auswirken, und ja, da ist man eben sehr schnell an den Grenzen,

00:48:19.069 --> 00:48:25.209
was mit herkömmlichen Storage-Mechanismen zu machen war, also IndexDB oder was auch immer.

00:48:25.544 --> 00:48:29.089
Da haben wir die Leute, Filesystems quasi on top implementiert,

00:48:29.089 --> 00:48:32.233
aber das war einfach nicht performant genug.

00:48:32.350 --> 00:48:39.569
Lange Rede, kurzer Sinn, Adobe hat diesen Use Case und Adobe ist natürlich Adobe, Adobe ist nicht irgendwer,

00:48:39.569 --> 00:48:43.569
das heißt, Adobe sagt dann zu Apple, hört her, wir können folgendes machen,

00:48:43.569 --> 00:48:48.089
wenn wir Photoshop Adobe.com aufrufen, sagen wir, liebe Benutzer,

00:48:48.089 --> 00:48:52.529
bitte installiere Chrome, oder ihr Apple Safari, was auch immer,

00:48:52.529 --> 00:48:58.189
Mozilla's implementiert bitte das Origin Private File System und

00:48:58.189 --> 00:49:00.089
letztendlich hat das eben funktioniert, dass der große

00:49:00.089 --> 00:49:02.809
Partner dann gesagt hat, hey, wir brauchen diese API,

00:49:03.183 --> 00:49:09.151
wir haben das sehr wohl motiviert, warum wir das brauchen, und am anderen Ende des Spektrums wurde dann eben trotzdem.

00:49:09.673 --> 00:49:16.689
Im Sinne von, ja, die Benutzer können eben keine gelegigen Dateien öffnen und der Browser kann nicht auf

00:49:16.689 --> 00:49:25.809
gelegige Dateien zurückschreiben, die im User Visible File System sind, wurde eben auch dieser Sicherheitsaspekt, den jetzt Apple und

00:49:25.809 --> 00:49:36.729
Mozilla sehen, beachtet und letztendlich, ja, die Picker-Methoden, die das File System Access API anbietet, die implementieren Apple und Firefox

00:49:36.968 --> 00:49:45.016
im gegentfall jetzt noch nicht. Chrome tut das aber und die Speck, die dahinter steht, die File System Access API Speck, die wurde dann eben auch

00:49:45.249 --> 00:49:52.529
gesplittet in eine OPFS-Spec sozusagen, die dann eben die rudimentären Dinge,

00:49:52.529 --> 00:49:57.008
wie Dateien, Zugriff auf Dateien, Lesen, Schreiben und so weiter spezifiziert.

00:49:57.133 --> 00:50:03.049
Und die File System Access API-Spec, die beinhaltet dann eben jetzt nur noch die Picker-Methoden,

00:50:03.049 --> 00:50:06.235
die eben auch Zugriff geben auf das User Visible File System.

00:50:07.576 --> 00:50:13.186
Ja, wahrscheinlich, weil bei dem OPFS dann einfach der Browser selber entscheidet immer noch,

00:50:13.186 --> 00:50:19.504
wo findet diese Schreiboperation statt. Und der ist ja dann immer noch Mittler.

00:50:19.666 --> 00:50:25.286
Und die Seite kann eben dann nicht frei entscheiden, wo jetzt gerade hingeschrieben werden soll,

00:50:25.286 --> 00:50:29.566
sondern einfach nur, hey, ich möchte eben diesen Riesenberg mit Maps schreiben.

00:50:29.566 --> 00:50:31.432
Mir völlig egal, wo du die parkst.

00:50:32.044 --> 00:50:35.825
Ich muss die jetzt schreiben, und ich brauch die später. Kümmer dich drum. So, ne?

00:50:36.635 --> 00:50:39.366
Ganz genau, und der Benutzer kann jetzt auch nicht erwarten,

00:50:39.366 --> 00:50:42.366
diese Dateien irgendwo physisch auf der Festplatte zu finden.

00:50:42.730 --> 00:50:50.366
Intern kann es sogar sein, der Browser implementiert diese OPFS-Dateien, was auch immer, in eine SQLite-Database,

00:50:50.366 --> 00:50:56.188
oder was auch immer, und lasst das dann eben nur für den Benutzer aussehen, über das Interface, als wären das Dateien.

00:50:56.366 --> 00:50:59.141
Ich weiß ehrlich gesagt nicht mal, wie es intern realisiert ist.

00:50:59.366 --> 00:51:04.299
Das ist einfach dann im Browser irgendwie im Profil gespeichert,

00:51:04.366 --> 00:51:09.366
Aber letztendlich, ja, der Benutzer weiß nicht wie, kann auch auf diese Dateien nicht zugreifen,

00:51:09.854 --> 00:51:20.086
und, ja, das ist eben quasi dann die Idee dahinter, dass man auch sagt, selbst wenn jetzt da irgendein Virus sich auf der Datei registrieren würde,

00:51:20.360 --> 00:51:26.526
der Benutzer kommt, oder Trojaner, was auch immer, der Benutzer kommt nie in die Verlegenheit, quasi diese Datei auszuführen

00:51:26.526 --> 00:51:29.166
oder die Excel zu klicken oder was auch immer,

00:51:29.166 --> 00:51:36.926
einfach weil man kann überhaupt nicht drauf hin navigieren, nicht mit dem Terminal, nicht mit dem, was auch immer, Windows Explorer.

00:51:37.320 --> 00:51:41.542
Das ist einfach private Evidence Origin quasi der Seite.

00:51:42.217 --> 00:51:47.762
Einfach ein High-Performance-Index-DB oder Local Storage letztlich, ne?

00:51:48.401 --> 00:51:51.667
Der dann eben, ja genau, im Prinzip ist es das.

00:51:51.667 --> 00:51:54.467
Und sieht auch nach außen eben einfach nur aus wie ein Dateisystem.

00:51:54.467 --> 00:51:58.967
Ja, genau. Also wie gesagt, es kann sein, dass es als SQLite implementiert ist.

00:51:58.967 --> 00:52:03.967
Ich weiß es nicht. Es ist einfach spezifiziert als dieses Interface muss es unterstützen.

00:52:03.967 --> 00:52:07.267
Wie du browserintern das machst, ist dir überlassen.

00:52:07.267 --> 00:52:11.167
Und das kann jetzt auch sein, Chrome, also wie gesagt, ich weiß es nicht, wie es umgesetzt ist,

00:52:11.167 --> 00:52:15.967
Das kann sein, Chrome speichert das als echte Dateien, irgendwo in Chrome Profile, bla bla.

00:52:16.408 --> 00:52:20.907
Und es kann sein, WebKit, die setzen das als SQLite oder was auch immer Datenbank um.

00:52:20.907 --> 00:52:25.507
Das ist einfach Implementierungsdetail, das kommt nicht nach außen.

00:52:26.049 --> 00:52:28.822
Die Dateien sind nicht für den Benutzer erreichbar.

00:52:30.469 --> 00:52:33.971
Ja. Ja, interessiert ja auch keinen. Also, wenn die Performance stimmt.

00:52:34.214 --> 00:52:41.425
Gibt es Fugu APIs, die nicht vom Chrome-Team gekommen sind?

00:52:41.902 --> 00:52:48.247
Also, das passiert ja dann, also zum Beispiel bei Apple passiert das ja,

00:52:48.247 --> 00:52:53.247
die sind ja oft so, dass die jetzt, sagen wir mal, eher hinterher implementieren,

00:52:53.247 --> 00:52:57.242
aber manchmal kommen die dann und, hey, guck mal hier,

00:52:57.485 --> 00:53:02.987
Wir haben folgenden Vorschlag, und dann ist man so,

00:53:03.273 --> 00:53:07.707
sagen wir mal, überrascht, dass die auch mal wieder was einbringen.

00:53:07.707 --> 00:53:13.563
Die machen super Arbeit, aber ich würde sagen, die sind jetzt noch nicht sozusagen vor der Welle.

00:53:13.707 --> 00:53:17.147
Das heißt also, die implementieren eben tendenziell immer noch hinterher,

00:53:17.147 --> 00:53:19.787
gerade was so APIs angeht, vielleicht nicht so bei CSS.

00:53:19.787 --> 00:53:24.387
Und dann kommt eben aber trotzdem hin und wieder, kommt was richtig Cooles von denen.

00:53:24.387 --> 00:53:31.891
Ist das im Fugu-Bereich auch so, dass die anderen Browser-Ersteller dann auch irgendwie Dinge mal eingebracht haben?

00:53:33.017 --> 00:53:38.467
Also man muss vorsichtig sein, die Unterscheidung Chrome und Chromium.

00:53:38.467 --> 00:53:45.507
Also Chromium ist ja das Open-Source-Projekt unter Chrome. Zum Beispiel Microsoft Edge, Samsung Internet und so weiter,

00:53:45.890 --> 00:53:47.457
die bauen alle auf Chromium auf.

00:53:47.600 --> 00:53:51.707
In Project Fugu ist nicht nur Google, sondern da sind auch Microsoft,

00:53:51.707 --> 00:53:53.627
da sind auch Intel, da sind auch Samsung.

00:53:53.911 --> 00:54:02.947
Interessanterweise auch Intel als Prozessorhersteller organisiert und verschiedene APIs kommen aus verschiedenen Ecken.

00:54:02.947 --> 00:54:10.987
Also Microsoft, die Adbustern, die haben zum Beispiel auch Office mit Excel, die sie auf dem Web umsetzen möchten.

00:54:10.987 --> 00:54:17.547
Die sind eben sehr daran interessiert, dass das Thema Clipboard reibungslos funktioniert, also sprich, dass man aus einer Excel-Tapelle

00:54:17.547 --> 00:54:20.107
mit Formatierung und was auch immer und Formeln

00:54:20.477 --> 00:54:30.227
direkt kopieren kann in eine Web-Excel-Tabelle oder in eine Web-Word-Datei oder in eine native, was auch immer, Microsoft-Powerpoint-Datei,

00:54:30.649 --> 00:54:34.467
und dass das eben alles quasi aus einem Guss funktioniert.

00:54:34.467 --> 00:54:34.826
Das war's.

00:54:35.385 --> 00:54:52.475
Edge hat eben sehr viel Arbeit geleistet in puncto Clipboard und aus dem Chrome-Team kommen dann vielleicht andere Vorschläge, die jetzt wir mit unseren Partnern, was auch immer, Google Slides oder was auch immer, intern gehört haben als Use Cases oder natürlich auch extern.

00:54:52.822 --> 00:55:05.115
Und ähnlich ist es bei Microsoft auch. Die sind zum Beispiel sehr interessiert am Thema Inking, also die haben mit dem Surface ein Gerät, das natürlich einen Touchscreen hat mit Stylus.

00:55:05.115 --> 00:55:08.695
Und die wollen eben, dass man da so schön wie möglich draufschreiben kann.

00:55:08.695 --> 00:55:11.775
Samsung, die haben verschiedene Foldable Devices,

00:55:11.775 --> 00:55:15.355
ich weiß gar nicht genau, wie die heißen, aber die klappbaren Handys,

00:55:15.355 --> 00:55:23.735
und die haben eben das Thema, ja, klappbare Devices, wie kann ein Browser feststellen, ist ein Gerät ein klappbares Device,

00:55:24.087 --> 00:55:30.775
wie kann ich über CSS oder über JavaScript sagen, dieses Element soll jetzt auf dem zweiten Windows-Segment

00:55:30.775 --> 00:55:32.540
dargestellt werden, und so weiter.

00:55:33.143 --> 00:55:39.229
Also, sprich, jeder hat so ein bisschen seine Vorstellungen und seine Motivationen, was man jetzt umsetzen möchte.

00:55:39.445 --> 00:55:43.355
Wir werden immer wieder gefragt, warum ist denn Intel im Projekt dabei?

00:55:43.355 --> 00:55:52.755
Die machen doch gar keinen Browser. Die Antwort ist, ja, Intel hat festgestellt, auf Intel-Prozessoren laufen eben mehr als 60% der Zeit

00:55:53.155 --> 00:55:56.635
irgendwelche Web-Anwendungen, und Intel hat eben deshalb gesagt,

00:55:56.635 --> 00:56:02.855
wenn diese Web-Anwendungen auf unseren Prozessoren laufen, dann sollen sie bitte schön auch gut und sauber laufen.

00:56:02.855 --> 00:56:08.279
Und die haben dann interessante Proposals eingebracht, wie zum Beispiel die Compute Pressure API.

00:56:08.837 --> 00:56:14.035
Die einem erlaubt, als Applikation uns festzustellen, wie

00:56:13.635 --> 00:56:17.885
Beschäftigt ist dann gerade der Prozessor, wenn ich jetzt in der Videostreaming-Applikation bin

00:56:18.110 --> 00:56:21.755
und ich merke, der Prozessor ist bei 90% Auslastung,

00:56:22.151 --> 00:56:26.925
dann kann ich vielleicht mal kurzfristig von 4K runtergehen auf 2K oder was auch immer Videoauflösung

00:56:27.202 --> 00:56:29.191
und dadurch eben den Prozessor ein bisschen entlasten.

00:56:29.344 --> 00:56:35.765
Elektron, das ist das, was der Vocher erwähnt, zum Thema Elektron und Cordova überflüssig machen.

00:56:36.060 --> 00:56:39.445
Man würde denken, die würden, also zumindest jetzt Elektron,

00:56:39.445 --> 00:56:42.445
Cordova ist, glaube ich, so ein bisschen nicht mehr aktiv.

00:56:42.445 --> 00:56:45.865
Ich will nicht sagen, tot, aber hab's jetzt auch nicht mehr in letzter Zeit verfolgt,

00:56:45.865 --> 00:56:51.085
vielleicht bin ich da falsch, aber jedenfalls Electron, da kann ich garantiert dafür sprechen.

00:56:51.085 --> 00:56:55.285
Man wird jetzt erwarten, vielleicht, die hassen Project Fugu, weil das ja deren Ast sägt,

00:56:55.285 --> 00:57:02.945
auf dem sie sitzen. Das Gegenteil ist der Fall. Electron ist selber Teil von Fugu, und man fragt sich dann vielleicht so, hm, warum?

00:57:03.346 --> 00:57:08.685
Die Antwort ist, jede API, die Sie im Chromium nutzen können, ist eine Node-API weniger,

00:57:08.685 --> 00:57:11.945
also eine Dependency für die weniger, die Sie mit reinziehen müssen.

00:57:11.945 --> 00:57:18.326
Also, konkretes Beispiel, Web Serial wurde angeboten über, ich glaube, das Paket heißt Node Serial,

00:57:18.451 --> 00:57:23.165
und als das dann eben über Web möglich war, über die Web Serial API,

00:57:23.529 --> 00:57:29.085
konnten sie eine Dependency sich einsparen, also sprich, das Electron Gesamtpaket wurde kleiner,

00:57:29.085 --> 00:57:31.208
einfach weil der Browser mehr mitgebracht hat.

00:57:31.406 --> 00:57:37.225
Und deshalb ist eben auch Electron mit dabei, und die sind eben auch daran interessiert.

00:57:37.789 --> 00:57:45.332
Ihre Dependency Trees so klein wie möglich zu halten und so viele möglich über die Browser APIs direkt abzuholen.

00:57:47.511 --> 00:57:55.861
Das heißt, es ist auch hilfreich, wenn diejenigen, die an diesen Features arbeiten,

00:57:56.063 --> 00:58:00.661
selber in-house-Use-Cases haben, sozusagen.

00:58:00.661 --> 00:58:11.161
So wie früher XML, HTTP-Requests auch aus dem Outlook-Team kamen und so eben vieles damals im Internet Explorer gelandet ist,

00:58:11.161 --> 00:58:16.361
weil Microsoft eben einige Teams im Haus hat, die die Dinge gebaut haben.

00:58:16.361 --> 00:58:22.661
Und ins Web bringen wollten, so ist es im Endeffekt auch ein Stück weit,

00:58:22.661 --> 00:58:28.401
und genau, das haben dann eben andere Browser,

00:58:28.678 --> 00:58:32.581
ja, Engine-Konglomerate vielleicht weniger,

00:58:32.891 --> 00:58:38.248
als die, die sich jetzt eben um das Chromium-Projekt herum gesellt haben.

00:58:39.013 --> 00:58:42.161
Genau, aber wie gesagt, die sprechen eben oftmals auch mit denselben Partnern

00:58:42.161 --> 00:58:45.561
wie Google oder wie Microsoft oder wie Intel.

00:58:45.954 --> 00:58:50.641
Das heißt, im konkreten Fall von Adobe, da können wir das erzählen, weil das alles publik ist,

00:58:50.641 --> 00:58:54.881
oder zumindest Adobe-Mitarbeiter auf Twitter publik gemacht haben.

00:58:54.881 --> 00:58:59.401
Die sprechen halt auch mit Microsoft und die sprechen auch mit Apple.

00:58:59.925 --> 00:59:03.441
Und auf die Art und Weise hat man eben auch so einen Hebel, wo man sagen kann,

00:59:03.940 --> 00:59:09.108
wir decken diesen genialen Use Case ab, liebe Browser-Vendoren, setzt doch das mal um.

00:59:09.945 --> 00:59:15.281
Und klar, je intrinsischer die Motivation ist, umso besser ist natürlich auch das Ganze,

00:59:15.625 --> 00:59:17.066
für ein kollektives Wohl.

00:59:18.119 --> 00:59:30.272
Und erzähl doch mal, was ist das Incentive für Anwendungsentwickler in den vermehrt Anwendungen auf Fugoo zu portieren?

00:59:30.767 --> 00:59:39.463
Was beobachtet ihr da? Was ist so der Hauptantrieb für Firmen wie zum Beispiel Adobe,

00:59:39.859 --> 00:59:45.666
Photoshop zu portieren? Weil man könnte ja auch sagen, das ist jetzt so ein cooler Tech-Showcase.

00:59:46.089 --> 00:59:51.906
Vielleicht hat da irgendwie Google auch so ein bisschen Invest drin,

00:59:51.906 --> 00:59:55.326
um sozusagen ein bisschen so ein Paradebeispiel zu haben,

00:59:55.326 --> 01:00:01.126
ein bisschen Show-off, so für, also eine Raison d'etre für Fugu zu schaffen.

01:00:01.126 --> 01:00:06.641
Was ist so die Motivation für die Kunden?

01:00:08.630 --> 01:00:15.031
Also, ich würde sagen, für die meisten ist die Motivation dieses uralte der Write Once Run Anywhere.

01:00:15.823 --> 01:00:21.146
Es ist natürlich in vielen Firmen so, dass sie verschiedene Teams beschäftigen, die

01:00:21.146 --> 01:00:24.933
die iOS App umsetzen, die Android App umsetzen und dann vielleicht auch

01:00:25.146 --> 01:00:27.146
die macOS App umsetzen und was auch immer.

01:00:27.742 --> 01:00:32.711
Adobe natürlich, die sind auf allen Plattformen, v.a. auch mit nativen Apps präsent.

01:00:33.146 --> 01:00:36.753
Und manche Firmen können sich das leisten oder wollen sich das leisten,

01:00:37.146 --> 01:00:41.146
aber letztendlich, wenn man dann so sich umschaut und dann überlegt,

01:00:41.146 --> 01:00:43.146
Ja, ist das denn tatsächlich nötig?

01:00:43.793 --> 01:00:46.906
Dann sieht man bei ganz vielen Firmen eben auch das Bedürfnis,

01:00:46.906 --> 01:00:51.508
mit wenigen Entwicklern mehr Plattformen abzudecken.

01:00:52.499 --> 01:00:58.026
Also, es gibt ja, was auch immer, Blogposts von Airbnb, und darüber sprechen, wie sie

01:00:57.270 --> 01:01:03.340
ich weiß nicht mehr, von React Native wegmigrieren oder hinmigrieren, ich weiß nicht mehr, in welche Richtung es war,

01:01:03.562 --> 01:01:07.540
vielleicht hat sich das auch wieder inzwischen umgekehrt, keine Ahnung, aber

01:01:07.703 --> 01:01:10.800
so, es gibt viele Firmen, die eben genau diesen Wunsch haben,

01:01:11.043 --> 01:01:17.140
schon irgendwie die nativen Plattform-Guidelines zu respektieren, also wo soll's

01:01:17.372 --> 01:01:23.380
der Action-Button sein, oder wie soll die Botten-Navigation aussehen, oder was auch immer,

01:01:23.637 --> 01:01:28.085
Aber letztendlich wollen sie eben auch sehr viel Code dann einsparen oder teilen zumindest.

01:01:28.180 --> 01:01:36.960
Und da ist mit M-Scripten sehr viel möglich geworden in puncto Algorithmen, also bei Adobe oder was auch immer.

01:01:37.393 --> 01:01:46.300
Die pure Rechenleistung quasi in M-Scripten umsetzen und dann letztendlich nur noch das Interface nach draußen

01:01:46.300 --> 01:01:52.680
über Web-Anwendungen umsetzen zu lassen und mit der nativen Applikation wird dann oftmals eben

01:01:52.680 --> 01:01:57.360
der Großteil der MScripten APIs geteilt,

01:01:57.486 --> 01:02:02.960
aber letztendlich dann, ja, das User Interface wird vielleicht noch mal tief entwickelt,

01:02:02.960 --> 01:02:12.260
aber wir sehen eben ganz viel dieses Bedürfnis zu sagen, ja, wir wollen Code einsparen, wir wollen Code nutzen auf verschiedenen Plattformen.

01:02:12.260 --> 01:02:19.120
Auf Desktop vor allem merkt man, viele Applikationen sind einfach inzwischen auf dem Browser zu Hause,

01:02:19.120 --> 01:02:25.820
Einfach auch über das Thema installierbare PWAs oder neue APIs, die möglich geworden sind.

01:02:25.820 --> 01:02:33.060
Man merkt das auf Mobile auch ein Stück weit. Bisschen weniger, also da ist Nativ immer noch sehr, sehr stark.

01:02:33.060 --> 01:02:40.180
Vor allem natürlich auf iOS. Vielleicht ändert sich das in Zukunft, gerade weil jetzt eben Push möglich geworden ist.

01:02:40.180 --> 01:02:49.699
Und jetzt vielleicht nicht mehr jede News-Applikation eine eigene iOS-App und ne Android-App und ne was auch immer MacOS-App braucht.

01:02:50.239 --> 01:02:54.160
Sondern die jetzt inzwischen überall über Web alle abdecken können.

01:02:54.160 --> 01:02:59.280
Und ja, ich denke, in diese Richtung wird sich da einiges entwickeln.

01:02:59.280 --> 01:03:04.200
Safari war schon oftmals, oder ist oftmals nach wie vor,

01:03:04.200 --> 01:03:09.324
ein Hinderungsgrund, warum uns manche sagen, wir brauchen eben doch noch die nativen Apps.

01:03:10.494 --> 01:03:19.380
Ja, aber die geben ja wirklich auch gerade übelst Gas, Also vielleicht jetzt nicht was Fugu APIs angeht,

01:03:19.380 --> 01:03:25.380
aber so PWA, so der Kernbereich da und auch sonst.

01:03:25.380 --> 01:03:28.562
Also das ist schon, ja, ist super.

01:03:29.066 --> 01:03:36.196
Peter und ich haben auch letztens erst eine Folge dediziert zu den Tech Previews des Safari gemacht,

01:03:36.380 --> 01:03:39.905
was da wieder an Feature Lawinen auf einen zurollt.

01:03:40.661 --> 01:03:41.471
Das ist schon super.

01:03:42.893 --> 01:03:46.983
Also, ich bin auch persönlich sehr gespannt auf iOS 16.4, was da final herauskommen wird.

01:03:46.983 --> 01:03:49.903
Bin bei jeder Beta mit dabei und

01:03:50.275 --> 01:03:57.747
ja, da ist schon sehr, sehr viel Fugoliebe auch dabei und gerade, was jetzt APIs angeht, wo

01:03:58.008 --> 01:04:00.323
wir gemeinsam mit den anderen Vendoren auch

01:04:00.646 --> 01:04:06.623
ein gemeinsames Verständnis haben, also sprich, zum Beispiel Webshare oder zum Beispiel Webtransport,

01:04:06.623 --> 01:04:08.334
zum Beispiel Webcodecs,

01:04:08.739 --> 01:04:15.543
da ist einfach auch so ein gemeinsamer Antrieb zu spüren, bei den ganzen Teams auch, wir wollen Anwendungen auf dem Web ermöglichen.

01:04:15.543 --> 01:04:20.783
Und solange da keine großen Risiken, in Anführungszeichen, damit verbunden sind,

01:04:21.018 --> 01:04:23.863
sind die anderen Vendoren eben auch dabei.

01:04:24.331 --> 01:04:28.343
Und die ganzen Diskussionen sind, man tut das immer so vielleicht negativ ab,

01:04:28.343 --> 01:04:34.183
ja, Apple ist ein Bremser und was auch immer, aber die ganzen Diskussionen sind natürlich auch sehr, sehr hilfreich, um eben auch.

01:04:34.674 --> 01:04:38.063
Als jetzt jemand, der eine API umsetzen möchte, festzustellen,

01:04:38.063 --> 01:04:39.863
was sind denn mögliche Sicherheitsrisiken.

01:04:39.863 --> 01:04:47.103
Wir setzen immer natürlich auch voraus, dass die B3C-Tag, also die Technical Architecture Group,

01:04:47.530 --> 01:04:54.203
involviert wird. Jede API, jeder Vorschlag für eine API, wird von der Tag reviewed auf Security,

01:04:54.203 --> 01:05:00.603
auf Privacy, auf verschiedene andere Aspekte, und wenn jetzt die Tag sagt, das ist eine furchtbar schlechte Idee,

01:05:00.603 --> 01:05:06.263
dass sie das macht, dann blockiert uns das nicht, also wir hören nicht auf, dann zwingend,

01:05:06.263 --> 01:05:11.563
weil die Tech Nein gesagt hat, irgendwas zu shippen, aber es gibt uns dann schon sehr zu denken,

01:05:11.563 --> 01:05:17.714
und typischerweise wird dann eben nochmal zurückgegangen und geschaut, kann man vielleicht die Tech, ja.

01:05:18.503 --> 01:05:25.723
Über verschiedene andere Limitierungen oder Begrenzungen oder was auch immer, dann vielleicht überzeugen,

01:05:25.723 --> 01:05:27.123
das ist doch eine gute Idee.

01:05:27.123 --> 01:05:34.463
Manchmal ist das Resultat dann die Agree to Disagree, aber oftmals ist eben auch genau das Gegenteil,

01:05:34.463 --> 01:05:39.943
dass man sagt, okay, das war vielleicht in der ersten Iteration keine so gute Idee,

01:05:39.943 --> 01:05:41.943
Ich lasse das nochmal zurückgehen.

01:05:43.200 --> 01:05:46.050
Vielleicht ganz von vorne planen, vielleicht nochmal ein Stück weit zurücknehmen

01:05:46.050 --> 01:05:48.050
und Teilschritte neu planen.

01:05:48.313 --> 01:05:54.050
Und das ist auf jeden Fall Teil des Ganzen, das bei Fugu auch eine Sache, ja, am Ende

01:05:54.147 --> 01:05:58.550
als Resultat haben kann. Wir haben es versucht, aber es ist nichts am Ende dabei rausgekommen,

01:05:58.550 --> 01:06:00.268
was wirklich alle zufriedenstellt.

01:06:02.663 --> 01:06:08.721
Ja, ja, klingt gut. So will man das ja eigentlich auch bei der Softwareentwicklung haben,

01:06:09.050 --> 01:06:15.550
dass viele Meinungen da irgendwie zusammenkommen und man das beste Destillat daraus macht,

01:06:15.550 --> 01:06:19.550
oder eben auch irgendwelche Features gar nicht erst implementiert.

01:06:20.487 --> 01:06:29.550
Dann vielleicht noch die abschließende Frage. Wir reden ja darüber, dass idealerweise das Project Fugu

01:06:29.550 --> 01:06:35.550
und dieser PWA-Bereich dazu führt,

01:06:35.550 --> 01:06:44.050
dass wir Anwendungen, die wir bisher entweder nativ geschrieben haben oder irgendwie als Hybrid-Anwendungen verpackt haben,

01:06:44.050 --> 01:06:50.050
dass es nicht mehr nötig ist, die auf diese Weise zu programmieren und zu shippen.

01:06:51.293 --> 01:06:55.550
Also, ich finde, was bei den Web-Apps immer noch ein großes Problem ist,

01:06:55.550 --> 01:06:59.550
und vielleicht ist das aber auch nur mein subjektives Empfinden,

01:06:59.773 --> 01:07:04.550
ist, dass es, und das fand ich bei Firefox auch ein Problem damals,

01:07:04.550 --> 01:07:06.550
es gibt keinen richtigen Store,

01:07:06.550 --> 01:07:12.190
Also keinen ausgewachsenen Store mit einer guten Discoverability,

01:07:12.190 --> 01:07:17.930
vielleicht noch ein bisschen Curation, ist natürlich auch nicht schlecht, damit nicht nur Müll da drin ist.

01:07:17.930 --> 01:07:26.290
Und eben vielleicht auch noch der Möglichkeit, Payments durchzuführen, also Anwendungen für Geld zu kaufen.

01:07:28.751 --> 01:07:34.781
Um den Bereich hört man irgendwie nicht so viel, und das erstaunt mich, weil ich glaube,

01:07:34.781 --> 01:07:38.181
dass das ein ganz wichtiger Baustein ist,

01:07:38.699 --> 01:07:43.781
auf dem Weg da in diese Zukunft, die wir uns da ausmalen.

01:07:43.781 --> 01:07:47.422
Weißt du da irgendwie Dinge zu berichten?

01:07:48.169 --> 01:07:55.381
Ja, also ein paar Dinge sogar. Erstmal, PWAs sind ja inzwischen auch auf vielen App-Stores willkommen.

01:07:55.381 --> 01:08:04.175
Also Microsoft zum Beispiel, die betreiben sogar PWIBuilder.com an so eine Umwandlungsmaschine, wo man seine URL eingibt,

01:08:04.643 --> 01:08:12.421
und dann kommt am Ende eine PWA raus, die man über den Microsoft Store serviten kann. Die haben verschiedene Plugins auch für, oder Plugins,

01:08:12.421 --> 01:08:21.941
verschiedene Subfeatures für den Oculus Store, dass man seine PWAs so bekommt, dass sie auf Oculus Devices laufen.

01:08:21.941 --> 01:08:27.941
Die haben sogar einen iOS-Wrapper, der dann über WKWebView das Ganze implementiert.

01:08:27.941 --> 01:08:36.281
Und, ja, also, lange Rede, kurze Sinnen, viele App-Stores sind inzwischen auch offen für PWRs.

01:08:36.728 --> 01:08:40.301
Der Play Store übrigens auch, über sogenannte Trusted Web Activity,

01:08:40.301 --> 01:08:48.101
wo einfach quasi eine Fullscreen-Webview läuft, die dann die ganze PWR abbildet.

01:08:49.088 --> 01:08:57.718
Es gibt natürlich auch immer die Möglichkeit, irgendwelche PWA-Directories zu bauen, zu basteln.

01:08:57.718 --> 01:09:04.398
Da ist gerade im Stealth-Modus was, was mich erreicht hat. Ich weiß nicht, weiß den Namen nicht mehr,

01:09:04.398 --> 01:09:07.958
aber PWA-Rocks oder was auch immer, gab's ja in der Vergangenheit, also in diese Richtung,

01:09:07.958 --> 01:09:11.678
oder AppScope, gab's ja schon verschiedene Ansätze.

01:09:11.678 --> 01:09:16.078
Da gibt's wohl irgendwas, was gerade so im Stealth-Modus, wie gesagt, ich weiß den Namen gerade nicht,

01:09:16.078 --> 01:09:20.858
aber können wir vielleicht auch nachreichen, oder wenn's Stealth ist, dann vielleicht doch nicht.

01:09:20.858 --> 01:09:27.077
Vielleicht erst nach Release das Ganze. Aber da gibt's jemand, der sehr viel Humor intern macht.

01:09:27.491 --> 01:09:30.238
Auf den verschiedenen sozialen Netzwerken.

01:09:30.238 --> 01:09:39.275
Und ja, wir haben bei Google natürlich auch uns überlegt, wie können wir denn coole Fugo-Use-Cases und Fugo-Applikationen darstellen.

01:09:39.347 --> 01:09:43.078
Und da haben wir den sogenannten Fugo-API-Showcase entwickelt,

01:09:43.078 --> 01:09:46.158
wo man als App-Entwickler sagen kann,

01:09:46.158 --> 01:09:53.898
Ich möchte meine Fugo APIs gelistet sehen und man kann dann sagen, ich bin App-Entwickler,

01:09:53.898 --> 01:09:59.098
ich möchte meine Applikation, die heißt abc.com darstellen.

01:09:59.098 --> 01:10:05.358
Im Fugo Showcase, ich verwende die API x, y, z und man schickt das dann über ein Formular ab

01:10:05.358 --> 01:10:11.179
und dann guckt jemand rüber vom Team und sagt dann, okay, das ist CURL-Spam, das ist alles legitim.

01:10:11.251 --> 01:10:16.013
Wenn man den Source-Code hält, kann man das natürlich auch im Formular mit angeben.

01:10:16.098 --> 01:10:22.198
Und ja, wir haben inzwischen eine ganz schöne Kollektion an filterbaren Fugo-Applikationen

01:10:22.504 --> 01:10:29.438
in unserem Showcase, wo man sagen kann, ich bin interessiert an Apps, die den Namen Futo im Namen haben

01:10:29.438 --> 01:10:33.058
und was auch immer die File System Access API verwenden.

01:10:33.058 --> 01:10:38.058
Und ja, da kann man eben sehr schön slicen und dicen und gucken, dann gibt's welche davon,

01:10:38.058 --> 01:10:41.278
die vielleicht auch von SoaS sogar sind, und dann kann man auch immer so ein bisschen spickeln,

01:10:41.616 --> 01:10:45.910
wie haben die denn das implementiert, und sich dann Inspiration holen.

01:10:48.518 --> 01:10:58.315
Ja, habe ich eben im Vorfeld der unserer Aufnahme, habe ich auch nochmal da ein bisschen geguckt und gefiltert und geschaut, welche Anwendung denn welche,

01:10:59.170 --> 01:11:04.329
auch vielleicht ein bisschen exotische API nutzen könnte.

01:11:04.463 --> 01:11:06.868
Genau, ja, super interessant.

01:11:07.750 --> 01:11:14.958
Also, ist offen für alle, wenn ihr, liebe Hörer, an der API arbeitet, aber abarbeitet, die Fugo APIs einsetzt,

01:11:15.330 --> 01:11:21.487
gerne über das Formular, das im Showcase verlinkt ist, abschicken, und dann werden wir das gerne lösen.

01:11:22.612 --> 01:11:29.258
Genau, das kommt in die Show Notes rein, sowie auch die ein oder andere Geschichte,

01:11:29.258 --> 01:11:32.638
die während des Erzählens gefallen ist.

01:11:32.638 --> 01:11:42.408
Genau und du hast ja auch in unserem Projektboard für diese Aufnahme hast du auch noch ein paar Links hinterlegt. Die wandern da auch alle rein.

01:11:43.975 --> 01:11:48.638
Ja, super. Ich würde sagen, damit haben wir das Thema Fugu ganz gut,

01:11:48.801 --> 01:11:52.101
oder da uns ganz gut wieder auf Stand gebracht.

01:11:52.274 --> 01:11:53.641
Fürs Erste?

01:11:54.102 --> 01:12:02.521
Fürs Erste, genau. Da die Annahme ja nicht stimmt, dass sozusagen da sich gar nicht mehr so viel ändert,

01:12:02.561 --> 01:12:09.101
hoffen wir natürlich darauf, dich spätestens in, na ja, vielleicht nicht in vier Jahren

01:12:09.141 --> 01:12:12.601
und auch nicht in dreieinhalb hier wieder begrüßen zu dürfen.

01:12:12.601 --> 01:12:16.101
Genau, ihr seid ja jetzt in einer neuen Phase, wo ihr fein schleift,

01:12:16.101 --> 01:12:19.941
und das ist bestimmt auch echt spannend, und das sind vielleicht sogar fast

01:12:19.941 --> 01:12:24.801
die dickeren Nüsse zu knacken, die ihr da habt,

01:12:24.801 --> 01:12:30.462
also mit diesen ganzen Permissions und Userflows und so, da bin ich sehr gespannt, wo uns das hinführt.

01:12:30.813 --> 01:12:33.761
Ja, ich auf jeden Fall auch. Vielen, vielen Dank für die Einladung,

01:12:33.761 --> 01:12:38.601
dass ich das zweite Mal hier erzählen durfte, und vielen Dank auch für die tollen Fragen, die ihr vorbereitet habt.

01:12:38.601 --> 01:12:43.941
Ja, also in drei Jahren oder vier Jahren oder was auch immer, gerne wieder am Start.

01:12:43.941 --> 01:12:46.820
Ich freue mich. Oder früher. Oder früher.

01:12:47.323 --> 01:12:56.001
Genau. Wenn du was hast, sagst du Bescheid. Und wenn unsere Hörerinnen und Hörer Fragen oder Feedback haben, dann findet ihr uns.

01:12:56.001 --> 01:12:58.090
Also ihr wisst ja, wo ihr uns findet.

01:12:58.281 --> 01:13:05.801
Und den Thomas findet ihr, wie gesagt, als Thomajag auf Twitter und auf Mastodon, Thomajag

01:13:05.801 --> 01:13:09.641
at, was ist das, frontend.social oder sowas? Ich habe Tooth, Pong, Kaffee.

01:13:10.487 --> 01:13:17.346
Ich war auf Mastodon, bevor es cool war. Ja, ich auch, aber ich bin bei Mastodon.social gelandet.

01:13:17.643 --> 01:13:22.289
Und Frontend.social gibt's ja, da sind die coolen Leute, aber die sind schon dicht.

01:13:22.417 --> 01:13:28.897
Ich glaube, weil man kann ja maximal 150 Leute auf so einen Server packen und dann ist der schon irgendwie am Limit.

01:13:28.897 --> 01:13:31.353
Das scheint sehr viele Ressourcen zu ziehen.

01:13:31.498 --> 01:13:35.260
Alles klar, also tomajack.at.tud.café.

01:13:35.417 --> 01:13:37.340
Genau.

01:13:37.619 --> 01:13:40.113
Ja, vielen Dank fürs Zuhören.

01:13:40.554 --> 01:13:45.181
Und genau, nächste Woche ist dann wirklich der Marvin Hagemeister da.

01:13:45.703 --> 01:13:52.097
Wo ich schon letzte Woche überlegt hatte, ob der möglicherweise diese Woche unser Gast ist,

01:13:52.097 --> 01:13:56.893
aber es war fast andersrum, und der Thomas war der Gast, und Marvin kommt nächste Woche.

01:13:57.325 --> 01:14:06.817
Und dann reden wir darüber, wie man das JavaScript Ökosystem und die Build-Tools schneller machen kann

01:14:06.817 --> 01:14:09.506
und noch nicht direkt auf Rust wechseln muss.

01:14:09.910 --> 01:14:10.379
Glaub ich.

01:14:10.937 --> 01:14:15.285
Alles klaro. Also, bis dann. Tschüss. Tschau. Tschüssi. Danke!

01:14:15.600 --> 01:14:38.640
Music.

