 Dann sind wir soweit. Bevor ich gerade anfange mal kurz umfragen, wie runde wer von euch kennt eigentlich so install schon verwendet oder vielleicht auch im Begriff? Niemand? Wunderbar, das ist ein schöner Einführungsvortrag. Okay, also kurz vor weg, wer ich eigentlich bin. Mein Name ist bastien eicher. Ich bin selbst ein Contributor bei zero install. Also ein klein wenig Eigenwerbung ist der schon mit drin, aber das Projekt entstand nicht ursprünglich von mir. Ich möchte euch jetzt am Anfang ein bisschen Überblick geben, was ihr uns da eigentlich macht, wie es funktioniert, welche Vorteile es hat. Der Schärfpunkt bei dem ganzen Vortrag wird dann im Bereich cross-platform-Einsatz sein, also wie ihr das sowohl unter Linux als auch unter Windows verwenden könnt. Es dürfte ungefähr ein Drittel so reiner von Vortrag sein. Der Rest ist dann halt ein Live-Demo. Wenn ihr irgendwelche Fragen habt oder so etwas, dann könnt ihr mich gerne zwischendurch unterbrechen, am besten gerade am Ende einer Folie oder so in der Richtung. Okay, jetzt haben wir an. Ganz klassisch erst einmal ein Überblick, was ihr uns da jetzt eigentlich ist. Ich orientiere mich jetzt hier auch ein bisschen an den offiziellen Angaben von der ursprünglichen Webseite, die nun mal der wichtigste Aspekt von zero install ist natürlich, was es mit Soft-Inflation zu tun hat. Es geht darum, dass man Programme installieren können soll, ohne Rundrechte bzw. Administratorechte zu haben und dass Soft-Inflation ohne Nebeneffekte vonstatten gehen soll. Also, dass das Installieren und Entfernen eines Programms wirklich keine Spuren auf dem Bereich nicht zurücklässt. Ein weiterer wichtiger Aspekt im Vergleich zu Paketverwaltung, wenn man es ja aus der Linux-Welt vielleicht kennt, ist das alles Decentralist. Also, man hat keinen zentralen Travortory von, sagen wir mal, Debian, seine vorgelegte Pakete, die man verwenden kann. Stattdessen wäre Software einfach über normale Webseite zu trieben und kann auch direkt upstream vom ursprünglichen Entwickler kommen. Also, man muss dann nicht für eine neue Firefox-Version zum Beispiel warten, bis, sagen wir mal, die Ubuntu Package wieder eine neue Version rausbringen. Und der dritte wichtiger Aspekt von zero install ist, dass es ein System ist, das versucht vom Grund auf sicher zu sein. Insbesondere sind alle veröffentlichten Programme zunächst mal mit Digitalsignaturen versehen und die Unverändertheit von Dateien wird mit Hashes überprüft. Wie das mit Detail funktioniert, will ich euch dann an den entsprechenden Stellen nochmal zeigen. So, ein zweiter Aspekt ist natürlich jetzt mal die Frage, wozu braucht man noch eine Soft-Insulation, noch ein Paketverwaltungssystem? Und an den Punkte, die ich bereits genannt habe, will ich mal kurz versuchen, so die interessanten Vorteile zu erläutern. Eine nützliche Sache, wenn man keine Administratorechte braucht, ist abgesehen von den Sicherheitsvorteilen, dass man eben auch auf Rechnen, über die man keine volle Kontrolle hat, Soft installieren kann. Also, sagen wir mal, auch Universitätszeichen und Firmbrechnen. So install selbst muss man auch nicht als Administrator das installieren, das ist im Grunde einfach eine portable Anwendung. Und wenn man keine Nebeneffekte neu aussetzen will, kann man einfach sein Userprofil behalten und hat im Grunde alle Anwendungen bereits installiert, muss nicht lang mit App-Gate oder JUM, oder sonst irgendetwas herumhandieren. Zu dem Punkt mit dem Softwarevertreiben kann man es natürlich auch verwenden, wenn man seine eigene Software veröffentlichen will und dabei halt ein Update-System an das so etwas haben möchte. Und wie gesagt, wie vorherwähnt, man muss nicht bis die Distribution ein Update veröffentlicht warten. Man kann zum Beispiel einfach die neueste Version von einem Programm direkt von einem Hersteller beziehen. Und zu den Sicherheitsaspekten, das mit den vorherwähnten Digitalen-Signaturen erlaubt ein nettes kleines Feed-up, das ich nachher noch demonstrieren will, nämlich man kann runtergeladene Programme auch mit anderen Usern teilen, die man nicht zwangseuchig vertraut. Also, wenn auf ein Multiuser-System wie in der Uni zum Beispiel mehrere User das gleiche Programm verwenden möchten, dann werden sie nicht mehr verhunte geladen, aber trotzdem kann kein User dem anderen einmal ein manipuliertes Programm unterschieben. Und das Ganze kümmert sich, wie man es eigentlich heutzutage auch gewöhnt ist, um die automatischen Updates und Anwendungen. Also im Vergleich zum unterladenen Packen von 7. Teilen ist es schon ein schönes Stück komfortabler. Im Bereich von SIRNSTALL kommen zwei gegenläufige Griffe, die man gleich anfangs anrunden kann. Einesseits häufig von einem Interface, die ich rede. Ein Interface-System zusammen mit SIRNSTALL einfach eine HTTP-UI, die als eindeutige Name für ein Programm verwendet wird. Also, man hat nicht Paketennamen im Sinne von Mozilla-Firefox, sondern eine richtige UI, die allerdings, wie wir vielleicht sehen werden, nicht eine URL ist. Ein Feed, das ist der zweite wichtige Begriff, ist eine konkrete XML-Datei, die an irgendeiner bestimmten Adresse im Internet erreichbar ist, die dann die Information über das Programm enthält. Also, man beachtet den Unterschied, UI URL, im Einfall reden wir von etwas, das das Programm identifiziert, im anderen Fall von einer Quelle, von der man das Programm bezieht. Normalerweise wird das eine und dasselbe sein, also ein 1 zu 1-Mapping, sagen wir mal Zone-Adresse. Diese Adresse funktioniert jetzt im Augenblick nicht, weil Mozilla selbst seine Software nicht über SIRNSTALL veröffentlicht, aber technisch gesehen wäre das natürlich ohne Weiteres möglich. Es gibt allerdings auch die Möglichkeit, einen Sonderfall zu haben, bei dem ein Interface potenziell mehrere Feeds hat. Die Idee dahinter ist, dass man sich irgendwann mal entschieden hat, wie ich verwende das Programm Firefox und spreche es unter diesem Namen an. Wenn ich aber von einer anderen Quelle, einer anderen Variante davon beziehe, dann kann ich einfach einen alsativen Feed einhängen. Sagen wir mal, irgendein Hobbyhacker hat seine verbesserte Version von Firefox erstellt, dann kann ich einfach meinem System sagen, dass es diese Adresse als equivalent dazu betrachten soll. Der Begriff Feed ist jetzt natürlich auch schon im Bereich RSS, das wird es vorbelastet. Es ist auch durchaus so beabsichtigt, dass da eine gewisse Ähnlichkeit besteht. Auf so einen SIRNSTALL Feed veröffentlicht man im Grunde einfach immer neue Versionen, so wie ein Use Feed, immer ein neuer Artikel. Bereitschnell würde es zwar ein SIRNSTALL Feed immer die abteilste Version des Programmes anbieten. Also so ein Feed ist, wie schon erwähnt, im Grunde einfach eine XML-Datei. Und bevor wir noch weitergehen, möchte ich noch kurzen Überblick geben, was da drin steckt, jetzt ohne auf das konkrete Format eingehen zu wollen. Einerseits enthält es ein paar Metadaten über das Programm, nichts Ungewöhnliches, der Name des Programms, eine kurze Beschreibung, ein Icon, so Sachen in der Richtung. Und dann ein interessanter Teil, die ganzen Abhängigkeiten, also irgendwelche Bibliotheken, die es benötigt. Und das Interessante daran ist auch, dass diese Abhängigkeiten wiederum verweise auf andere Interfaces sind. Also man kann dieses System dann schon relativ weit treiben, sagen wir mal, wir kommen auf die Idee, eine alternative libc oder so etwas verwenden zu wollen, dann können wir auch bei SIRNSTALL registrieren und jedes Programm, das sagt, ich brauche die libc, würde dann von SIRNSTALL diese andere Version untergeschoben bekommen. Das Ganze kann man auch wirklich von Fall zu Fall einzeln entscheiden. Also man kann schnell mal eine Konfiguration ändern, ohne sein System, bleibend verändert zu haben. Und der letzte Teil, das sind dann die Implementierungen. Eine Implementierung ist einfach eine konkrete Version eines Programms. Und da steht ein Feed eben drin, worum man die runterladen kann, was ein Archiv das ist, sagen wir mal, SIP, TGZ und so weiter, wie man es selbst packen kann und schlussendlich auch noch der Hash. Also im Grunde einfach die Möglichkeit kryptografisch dann anschließend zu überprüfen, ob das wirklich das unverendete Programm ist. Also selbst wenn hier kein HTTPS oder so etwas im Spiel ist, ist es trotzdem von Manipulation sicher. Und der letzte Teil ist noch etwas Potenzial Ungewöhnliches. Dieser Feed selbst ist, wie man sich hier denken kann, nur was Sicherheitskritisches. Wenn ich darüber programmisch starte, dann möchte ich sicher gehen, dass es nicht manipuliert wird. Und eine einfache Textdatei bei HTTPS ist ja relativ simpel, daran was zu verändern. Deswegen werden diese Dinge mit einer digitalen Signatur versehen. Das XML-Format an sich ist ja nur plaintext und es sieht also damit zu, dass die Signature nicht wirklich vor. Deswegen wird eine relativ einfache Möglichkeit gewählt, um zu verhindern, dass man jetzt ein großer Entrassenformat ändern muss. Die XML-Datei wird mit GNU-PG einfach signiert und die dabei entstehende Signatur wird Base64 codiert als Kommentar hinten an die Datei angehängt. Man hat also immer noch eine ganz normale XML-Datei, die man bei sich im Browser anschauen kann. Aber trotzdem lässt sich das dann vom Programm auch verifizieren. Wenn man jetzt ein Programm über SIR install schraben will, die Beispiele sind jetzt zunächst einmal in der Linux-Welt, aber funktioniert mit Windows dann im Grunde genau gleich, gibt es einen Befehl namens Zero Launch. Also dieses Zeichen hier, das ist eine Null, kein O. Zero Launch gefolgt von einer UI und das war es im Grunde auch schon. Das ist so der eigentlich befremdlichste Teil am Anfang. Man startet ein Programm, in dem man auf der Konsole einfach eine Adresse eintippt und alles passiert dann anschließend mehr oder weniger von alleine. Der Vorgang beim Start des Programms ist dann grob in drei Teile gegliedert. Der erste ist der Selection-Teil, bei dem das System im Grunde die Anfrage auswertet. Da fließen ein paar Dinge ein. Könnte das von hinten noch lesen, was in den Kreisen drin steht? Also das ist einerseits wählte Interface, also die Adresse, die der benutzt, eingegeben hat, vielleicht noch irgendwelche zusätzlichen Einschränkungen. Also man kann auch sagen, ich will nur die Version 5.0 oder auf keinen Fall eine Version, die auf Windows aufbaut. Ich möchte bei den Linux-Versionen. Also man kann auch zum Beispiel unter Linux eine Windows-Version starten, die dann in Wein reinschieben. Und zu guter Letzt werte das Ding die ganzen resultierenden Abhängigkeiten aus. Also das kann auch ein ziemlich komplexer Baum sein, auch mit den kreiswörmigen Abhängigkeiten. Also das kann das alles relativ problemlos auflösen. Der nächste Schritt ist dann das eigentliche runterladen. Da werden dann eben Archive aus dem Netz runter geladen. Im Grunde sind das stinknormale SIP-Archive. Im besten Fall sogar die, die sowieso schon von den Projekten angeboten werden. Also wenn jemand Etterseversöhnungsdoll veröffentlichen will, muss er nicht irgendwie neue Installerpakete bauen und verweist einfach auf seine bestehenden Archive. Und von diesen Archiven werden dann sogar sogenannte Manifestarteien generiert. Was das damit auf sich hat, kommt gleich noch. Der letzte Teil ist dann, der auf dem man als Benutzung natürlich wartet, das eigentliche Startenanwendung. Hier passiert noch etwas, was ein bisschen anders ist als bei üblichen Installationssystemen, diese Dependency Injection. Wenn ich typischerweise ein Programm installiere, dann wird es sich ja in X-Stellen im System eintragen. Also Libraries landen in passenden Library-Verzeichen. Sie sind unter Windows, werden irgendwie ein registrierungseinträg erstellt. Bei Sion-Stoll geschieht das ja nicht. Wie der Name am Anfang auch angedeutet hat, Sion-Stoll heißt ja kein Installation im klassischen Sinne. Es werden nur Sachen entpackt. Aber wenn ich jetzt in meinem Programm hab, das an der Einstelle liegt und irgendwo anders die gewählten Libraries, dann müssen die sich hier irgendwie finden. Und das ist dann dieser Dependency Injection-Teil. Also das ist im Grunde ein bisschen eine Umkehrung des Kontrollflusses. Das Programm sucht sich nicht seine Abhängigkeiten, sondern Sion-Stoll sagt dem Programm, zum Beispiel der Umgebungswerferin hier, das ist die Library, die dir zugeteilt wurde für Wendebedriebe. Neben dem Sion Launch Befehl gibt es in neueren Version noch einen etwas ausführlicheren Befehl der heißt dann einfach Sion-Stoll, wie das Programm selber. Und dort kann man dann ausdrücklich einen bestimmten Teil des Workings anstellen. Man kann sagen, lösen wir die Abhängigkeiten auf, ohne es runterzuladen oder laden es runter, ohne es zu starten. So, ich hatte ja vorher diese Manifest-Dateine erwähnt, die kommen jetzt ins Spiel. Wenn Sion-Stoll irgendein neues Programm für uns runterlädt, wird zunächst mal einmal ein Archiv runtergeladen, ein ZIP-Archiv, TAR-GZ, was auch immer. Das Ding wird dann entpackt. Dann haben wir als irgendwo ein relativ unangreiches Erzeichnis, das ein großes Projekt ist. Und an dieser Stelle wird noch nichts mit Hashes geprüft. Das geschieht erst danach. Nämlich von diesem empackten Verzeichnis wird ein Manifest generiert. Das ist eine Textdatei, die den Inhalt des Verzeichnisses auflistet. Da steht dann drin, welche Dateien gibt es, welche sind ausführbar. Das sind die Hashes der einzelnen Dateien. Also im Grunde beschreibt es mehr oder minder eindeutig, solange Schah-Hashes eindeutig sind. Schreibt es mehr oder minder eindeutig, was der Inhalt dieses Archivs war. Und diese Manifest-Datei wird am Schluss wiederum gehascht. Und dann haben wir einen kurzen String, also 256-byte-Langen. Und diese Zeichenkette identifiziert dann kryptografisch eindeutig dieses konkret Programm, diese konkrete Version. Wenn also jetzt irgendjemand uns eine andere Version des Programms unterschieben würde, würde diese Hashes schon nicht mehr übereinstimmen. Immer diese beiden Aspekte kombiniert, also in dem Feed, den wir mit GNU-PG gesichert haben, stehen die Hashes drin. Dann heißt es, dass wir nur Programme bekommen, die tatsächlich von der Person veröffentlicht wurden, die dies aufsigniert hat. Also die ASPG-Hasche stellt sicher, dass keine fremde Person Dateien veröffentlicht. Und dieser Schah-Hash stellt sicher, dass die Dateien selbst dann auch nicht manipuliert wurden. Also ein anderes Archiv, und wenn es selber best signiert wird zum Beispiel. So, jetzt haben wir zur Live-Demo. Ich habe im Hintergrund eine VM gestartet. Ich hoffe mal, dass die jetzt bereits läuft. Yep. Also das ist jetzt ein nahezu blankes Ubuntu. Das Einzige, was ich zusätzlich installiert habe, ist Syronstore selber. Das ist auch in den Paketen drin. Also man muss es nicht unbedingt irgendwo unterladen, wenn etwas entpackt wird. Man kann einfach in seinem Repository schauen. Und Syronstore kann sich dann auch selbst über diese vorher erwähnten Mechanismen mit den Feeds aktualisieren. Also wenn man das einmal drauf hat, ist man im Grunde seine Update-Sorgung immer los. So, ein kleiner Hinweis noch. Ich habe jetzt hier meine WLAN-Verbindungen einfach mal ausgelassen. Das heißt, alles, was wir jetzt hier sehen, ist quasi nur Pseudo-Internet. Ich möchte mal kurz demonstrieren, wie genau das Ganze funktioniert, bevor ich weitergehe. Also ich habe hier für diese Demonstration so eine kleine Armada an Wirtschaftsmachines mitgebracht. Werden hier einerseits ein Stink normal zu Ubuntu, mit dem ich jetzt die Sache demonstrieren will. Noch ein paar Windows XP-Maschinen, die ich jetzt nachher verwende. Und hier quasi das Internet in einer kleinen Flasche. Im Grunde ist das hier einfach nur ein Ubuntu-Server, auf dem eine Patchy läuft. Da habe ich einfach mal ein paar Dateien hingelegt. Aber in Wirklichkeit oder das Ganze exakt identisch funktionieren, dann halt eben eine echte Intentverbindung. Jetzt haben wir hier den Vorteil, dass wir nicht warten müssen, bis du ein Download ewig langsam durchgräbst. Also ich hatte vorher erwähnt, man veröffentlicht hier Software-Eindrucks über eine Webseite. Man, ob ich stehe, keinen Weg mehr will. Man muss nicht irgendwo ein zentrales Repository haben, bei dem man sich Software sucht. Man kann aber natürlich eins haben, wenn man das möchte. Das ist jetzt einfach mal ein paar demonstrative Feats, die ich mal erstellt hatte, die jetzt jeweils in meinem Offline-Cache liegen, damit ich sie jetzt auch hier vorführen kann. Also normalerweise würde man im Internet suchen, findet irgendwo sein Programm, was man verwenden will und dieses Programm bietet ein Zero-Installed-Feed an. Insoffeed, diese XML-Dateien, nehmen wir mal, sagen wir mal Blender. Denn wenn alle Blender Blender es immer eins bei dem Style-Sheet da ist, besser, Out-of-City, also ein Audio-Editor. Das Schöne ist, ich hatte erwähnt, es ist eine XML-Datei, aber dennoch sehen wir hier eine schöne Website, bei der eine Beschreibung steht, was ist das Teil? Link zur Homepage, eine Aufrüstung der Versionsnummern. In Wirklichkeit ist das trotzdem eine programmatisch lesbare XML-Datei, nicht irgendwie eine schöne HTML-Seite. Also hier sind kodiert die ganzen vorherwähnte Informationen drin. Also die Beschreibung des Programms, die Archive, die Hashes und so weiter. Aber mit einem Style-Sheet-Datei wird das Ganze und hat noch mal optisch das aufgepeppt. Also man schlägt dann in Grunde zwei, fliegen wir eine Klappe tot. Der also Normal-User sieht eine schöne Website, die das Programm beschreibt. Aber die Datei, die wir hier sehen, ist im Grunde auch schon alles, was man dann braucht, um das Programm tatsächlich zu starten. Also wir haben jetzt hier unsere Adresse. Das ist eben der Feed, das identifiziertes Programm, und wenn wir das starten wollen, verwenden wir den vorherwähnten zero-Launch-Befehl und können, sagen wir mal, Petrack & Drop oder einfach, indem wir es kokieren, dual einfügen. Wenn ich das Programm jetzt zum ersten Mal starte, dann wird es so install feststellen, dass dieses Programm noch nicht in einem Cash liegt und wird uns jetzt eine Haupion anbieten. Das wird uns halt sagen, hier ist das Alkenn, das ist die ausgewählte Version. Hier ist eine Beschreibung. Ich habe jetzt auch noch die Möglichkeit, ein paar Einstellungen zu verändern. Ich kann zum Beispiel sagen, ich möchte eine andere Version davon verwenden oder einfach alles lassen, wie es ist und auf Run klicken, um das Ding auszuführen. Da habe ich anscheinend nur die Windows-Saison im Cash. Also nehm ich mal kurz ein Programm, wie das sich eine Linux-Saison im Cash habe. Also gleiche Schose. Was wir uns jetzt darauf hin, das ist ein 4,6 Megabyte große Download. Und bis dann zu dieser Stelle ist auch wirklich noch kein Code vom Programm ausgeführt worden. Und wenn ich es jetzt starte, dann wird es runtergeladen und das Programm hat eben selbst keinen Einfluss darauf, wie es im System integriert wird. Das wird einfach irgendwo ein Programm entpackt und erst, wenn es gestartet wird, könnte es potenziell Schadcode ausführen und einen schlecht geschriebenen Installer macht uns unsere schöne Ordnungssysteme zum Beispiel nicht kaputt. Und wenn ich das Programm nicht mehr verwenden möchte, dann muss ich es auch nicht irgendwo deinstallieren oder so, ich leere einfach meinen Cash oder ignoriere es ganz, wenn mein Speicher groß genug ist. Also jetzt haben wir hier FileZilla ein rechnützliches SFTP und FDP-Tool und selbst wenn ich hier nichts vorher eingerichtet hätte, also wenn man an einem frischen Urbunterrichter sitzt, solange es hier uns noch drauf ist, reicht diese eine Befehlsteile aus und das Programm zu starten. Wenn ich es jetzt in Zukunft noch mal starten möchte, dann kommt auch nicht mehr dieses langwierige Konfigurationsfenster, sondern FileZilla startet einfach direkt. Aber ich habe trotzdem jederzeit noch die Möglichkeit, wieder zu sagen, ah, jetzt möchte ich doch noch etwas ändern. Gib mir bitte noch mal dieses GUI und dann kann ich wieder sagen, ich möchte eine andere Version verwenden. Ich möchte die aktuelle Beta-Version, was auch immer. Und hier unten drunter würden dann auch noch zusätzliche Abhängigkeiten aufgelistet, insofern ist es denn welche gibt. So, jetzt sind wir natürlich nicht alle Befehlsteile Menschen, wobei, vielleicht sind wir alle Befehlsteile Menschen, könnte sein. Nichtsdestotrotz gelegentlich möchte man natürlich seine Anwendung auch über seinen Menü starten und auch dem wird es ja uns toll gerecht. Wenn wir jetzt irgendwo unser Portrait UI haben, indem wir so eine Website kopiert haben oder sonst wo und sagen, dieses Programm möchte ich jetzt tatsächlich installiert haben, wobei das auch nur ein Anführungszeichen zu betrachten ist, dann kann ich jetzt hier die URL eingeben. Das Ding wird es eben runterladen, falls es noch nicht geschehen ist und sagt uns jetzt, okay, das Teil hier scheint eine Netzwerkanwendung zu sein, aber ich könnte es auch in eine andere Kategorie einzutieren. Und schon hat es uns ein Menüeintrag angelegt. Also wenn wir jetzt im Ubuntu Menü-Editor umhersuchen, das hatte gesagt Netzwerk bzw. Internet, dann ist hier auch FileZilla aufgelistet. Also natürlich auch im Menü selbst sichtbar. Das Ding ist jetzt immer noch nicht irgendwo ins System tief eingebunden, dort ist einfach ein Menüeintrag der Weiterhandsprogramme, wo es dort startet. So, bevor ich jetzt wieder zurück zum Passenationstil gehe, möchte ich jetzt mal zeigen, was hier im System eigentlich geschehen ist. Nein, dafür gibt es... Ja, dafür gibt es auch ein Tool, das Passenonstall dabei ist, das heißt einfach zero alias. Das ist ziemlich straightforward. Man gibt den Namen einen, den man für das alias haben möchte. Und die URL. Wir sind dasselbe jetzt wie zero alias. Ist das nicht eine persönliche Person oder...? Ja, also was zero alias im Grunde macht, ist einfach irgendwo, also es sucht halt einfach in der Stelle ein path, die beschreibbar ist, legt es ein keines Launcher-Script an, das dann intern nichts weiter macht, aus der zero installen Befehle da aufzurufen. So wird es voraussichtlich auf Anhieb nicht klappen, weil ich halt noch keinen für ein User beschreibbares Verzeichnis im path habe, aber das lässt sich hier schnell nachholen. Aber synchronisiert nicht so viel bei dem Tor. Nein, wurde gemerkt, da gibt es noch etwas, dass das nachher im Windows-Teil kommt. So hat das es schon vorgesehen. Im Augenblick sind es aber wirklich zwei getrennte Sachen. Also die Idee ist, dass wenn ich so install gewöhnlich verwende, dass ich keine Nebenwirkungen habe und davon ausgeht es sich im Programm typischerweise fast kein Zeit es mal starten möchte, ich teste es nur. Und wenn ich es dann tatsächlich integrieren möchte, dann mache ich im Augenblick wirklich die Schritte einzeln. Also ich leg meine alias an, wenn ich es über die Fehlzelle starte, oder ich leg den Menüeintrag an. Also die haben im Augenblick nichts miteinander zu tun. Aber ich kann es jetzt ja noch kurz fertigstellen, das tut es auch so nett und bietet einem Grunde gleich die fertigen Befehlzellen an. Also jetzt habe ich einfach ein Bindverzeichnis in meinem User-Profil und wenn ich den Befehlers normal ausführe, dann hat es jetzt hier die Syskript angelegt und falls Silo wird, die Konsole führt jetzt zum gleichergebnis. Und das Ganze ist jetzt wie gesagt in einem Grunde isolierten Verzeichnis gelandet. Nämlich hier in, ich öffne es mal kurz in Nautius, das ist ein bisschen grafisch vor Augen haben. Unter VAR, Cache, Serial Install gibt es diese Verzeichnis Implementations. Ihr seht ja, das ist jetzt ein systemweites Verzeichnis, aber etwas, was sein Standardbenutzer eigentlich nicht beschreiben können sollte und was sein Standardbenutzer auch nicht beschreiben kann. Dennoch haben wir jetzt ohne vorher irgendwo ein Sudo oder so das gebrauchtsames Programm installiert und es ist hier in diesem Cache gelandet. Was da geschieht ist, wir haben im Grunde einen kleinen Helperprozess, der ein Einungsbenutzerkonto verwendet, das eben Schreibrecht auf dieses eine Verzeichnis hat und das lässt nur zu, dass Programme dort abgelegt werden, deren Hash tatsächlich auch stimmt. Also diese Ordnenname hier trägt eben genau den Hash, der an den Teilten der Teilen. Und es wäre gar nicht möglich gewesen, andere Dateien in diesen Verzeichnis abzulegen. Das bedeutet irgendjemand, der den Rechter verwendet, der nicht notwendig weiß ich bin, kann sich darauf verlassen, dass die Dateien, die in diesem Verzeichnis stecken, tatsächlich mit dem Hasche beeinstimmen. Das heißt also auch, wenn mehrere User das gleiche Programm verwenden, kriegen sie die gleiche Version. Wenn eines sich entscheidet, jetzt eine manipulierte Version von Falsse dazu zu verwenden, dann sieht er die halt. Alle anderen werden mit diesem Hash-Oxoscheichenleads anfangen und deren Feeds werden weiterhin auf die richtigen Hashes verweisen. Das heißt also auch, wenn wir jetzt in einem Größen- und Firmennetzwerk, oder so etwas arbeiten, dann können Sie mal auch diese Hashes auf einem zentralen Falserver auslagern oder, ja. Und wenn es nicht so installt, ob nicht so viel was nutzt, sondern nur als Direktprogramm, ob es sich geopnet und wo man hier rüber wird. Und zwar im Home-Verzeichnis es hält sich da in diese XDG-Specifikationen Blick. Im Home-Verzeichnis landen sowieso Sachen im Cash, nämlich die heruntergeladenen Interfaces beziehungsweise Feeds, der Begriff wird manchmal auch synonym verwendet, so dass jeder benutze im Grunde seinen eigenen Sammelsyrem an den Interfaces hat, die im Grunde definieren, was die Programme tatsächlich sind. Und falls man es nicht systemweit installiert hat, also nicht über seine Paketverwaltung, dann landen auch die Implementierungen hier darin. Also selbst wenn der Administrat vom System zu uns noch nicht installiert hat, kann man das trotzdem verwenden. Okay, ich werde jetzt mal noch kurz zur Demonstration das Programm aus dem Cash hinauswerfen und zwar auf brutale Art, in dem ich einfach das Verzeichnis lösche und da das ganze im Grunde ja von der Logik her wie eine gecached Webseite ist, bedeutet das tatsächlich, dass wenn ich das Programm wieder haben will, ich nicht das irgendwie neu installieren muss oder so etwas, sondern es einfach wieder ausführe und weil es jetzt diesmal im Cash fehlt, wird halt wieder ein Download ausgeführt. Das bedeutet eben auch, wenn ich mir Rechnung neu installieren möchte, reicht es, wenn ich einfach meine angelegten Menüeinträge oder meine angelegten Starscript sicher und sobald ich das Programm das nächste Mal verwendet wird es auch wieder runter geladen in Gecash. Und wenn ich genügend Speich hab, dann kann ich natürlich auch einfach mein Implementierungscash sichern. Das ist davon komplett getrennt. Das ist im Augenblick bei der Roadmap so Bereich 2.0. Die Idee ist, dass solange die Programme sich sagen wir mal halbwegs vorhersehbar verhalten, also ihre Einstellungen in einem Unterverzeichnissen von Conflict zum Beispiel ablegen, das sind bestimmte Namen direkt, dass es dann irgendwann mal auch Instanzen von Programmen verwalten können soll. Damit wäre es dann zum Beispiel auch möglich, dass ich, wenn ich eine neue Beta-Version von Firefox oder so auch probiere, dass es halt nicht mein bestehendes Profil verändern kann. Ja? Wie oft wieder Hashtag prüft? Bitte? Wie oft wieder Hashtag? Im Grunde nur beim ersten Mal, wenn man es installiert, ist ja das Schöne, solange man davon ausgehen kann, dass der eigene Rechner nicht kompromittiert wurde, kann das eigentlich nie mehr manipuliert werden. Also, die Datei liegt ja in diesem Verzeichnis war Cash, das nur von einem Super-User beschreiber ist. Wenn ich aus irgendein Grund davon ausgehe, dass es jemand manipuliert hat, gibt es aber auf jeden Fall die Möglichkeit, die ganzen Hashtags wieder neu berechnen zu lassen. Also, die Semantik hinterher ist im Grunde solange der Rechner ordnungsgemäß funktioniert, kann in einem Cashverzeichnis nur ein Teil liegen, die zum Hashtag passt. Und wenn ich davon ausgehe, dass der Rechner mal kaputt ist, dann sollte man ihn natürlich auch nicht mit darauf laufen, den Tool zu erwähnen, sondern z.B. bei dem USB Stick gut inwiefern. Also, wenn man bei einem Rechner Multi-User-Betrieb ist und ich installiere ein neues Programm, dann verteile ich nicht in dem Sinne, dass man das landet in diesem Cash und dieses Helperscript, das Einzige, was eben tatsächlich schreibt, was diesen Cash hat, würde die Sachen nur dort ablegen, wenn der Hashtag tatsächlich stimmt. Also, zu keinem Zeitpunkt habe ich halt schon an die User überhaupt die Möglichkeit, selber in den Cash direkt hineinzuschreiben. Also, dieses Cashverzeichnis, das, was auch andere benutze, sehen und was damit ein Sicher-Siege-Sekur darstellen würde, wenn ich jetzt hier versuche, in der Datei anzulegen, dann darf ich das nicht. Nur, wenn ich Super-User bin oder dieses Helperscript. Also, dass dieses Helperscript das funktioniert, im Grunde, was können wir als Beispiel nehmen? Ja, so wie ein Standard-User nicht auf die Shatter-Datei zugreifen darf, sie nicht lesen darf und trotzdem jeder die Shatter-Suite verwenden kann, um zu prüfen, ob ein Passwort tatsächlich gestimmt hat, wenn das sich identifiziert. Also, ich weiß jetzt gerade nicht aussehnlich, wie dieses Script heißt, aber das ist ein Grunde, einfach eine Anwendung, bei der dieses Bit gesetzt ist, dass der versorgt, dass das Skript mit den Rechten des Besitzer, dass er nicht mit den Rechten des Auslönen-Users gestartet wird. Also, ich kann das später gerne nochmal genauer darauf eingehen, aber ich weiß nicht, was ist jetzt noch eine konkrete Frage? Ich habe also, wenn noch Fragen zu dem Teil hier bestehen, dann jetzt gleich los schießen, weil sonst gehe ich nochmal zurück und spulen der Präsentation ein bisschen weiter. Ja. Ah, diese Dependency Injection. Okay. Um Augenblick habe ich hier keine Beispielanwendung, die tatsächlich Live-User verwendet. Deswegen ist es etwas schwer, das tatsächlich zu demonstrieren. Ich habe die Beschleusung. Okay, also die Dependency Injection bei Zürich und Stoll ist im Augenblick relativ minimalistisch. Das ist darauf ausgelegt, dass umgebungsvergablen verändert werden. Also, das Modell an sich erlaubt es beliebig zur Weitern. Sagen wir mal, wenn Zürich und Stoll späßig Kenntnisse darüber hätte, wie Pfeifen funktionieren würde, dann könnte es halt zum Beispiel einfach Pfeifen ein neues Modul mitteilen. Aber im Normalfall wird einfach zum Beispiel etwas an dem Path angehängt. Wenn ich kurz die Konsole auf, wenn ich mein normalen System Path anschaue, dann liegen ja diese wohlbekannten Verzeichnisse drin. Wenn ein Zürich und Stoll über den Zürich und Stoll gestatteter Prozess läuft, dann schaut sich das an, dann würden diesen Path hinten angehängt, die konkret ausgedeht Implementierung lieben. Was auch irgendwann mal vorgesehen ist, dass es ein Overlay-File-System verwendet, dass dieser Prozess die ausgedeht Implementierungen in Slash-Lip oder sonstwo sieht, es hat beim Augenblick nicht umgesetzt und funktioniert eigentlich auch im Augenblick auch ganz gut ohne. Es ist halt einfach wichtig, dass die Programme, die wir auf Slash-Lip starten, werden auch keine Annahmen darüber machen, dass Dateien fix an einem bestimmten Ort liegen. Ja. Man kann das ja auch so ein bisschen erleben. Ja, doch. Man kann auf Slash-Lip festigen, welche Umgebungsvariablen gesetzt werden soll. Das wird ja dann beim Starten des Prozesses, also wenn ich Slash-Stoll oder Slash-Launch eintippe, dann bestimmt es eben, welcher Hash der Korrektor ist und fügt es dann für die einen Stanz und so es verändert, also nicht die Umgebung der Label im System, sondern nur für den Prozess. Ich kann mal kurz schauen, falls ich hier in den Seelen hinein komme, was ich nicht garantieren kann. Dann könnte ich noch kurz einen Feed aufrufen, bei dem tatsächlich auch solche Abhängigkeiten verwendet werden. Aber ich mache mir jetzt keine allzu großen Hoffnung. Also das ist die Projektwebsite von Slash-Stoll selber. Und dieser Feed hier, in dem tauchen dann tatsächlich auch Abhängigkeiten auf. Wo wir jetzt da genau das Feed von mal eingehen zu wollen, ist für uns interessant diese eine Abschnitt hier. Kann man das noch von hinten erkennen, was dort steht? Oh, ich kann mal schon. Na ja, kannst du auch unterschreiben. Also Require, es ist in diesem Fall das Attribut, das angebt, dass wir eine Abhängigkeit haben und das Interface, an dem diese Library, von dem diese Library zur Verfügung gestellt wird, eine Einschränkung, welche Version der Library wir verwenden möchten. Und hier ist dann das Binding, das Binding ist das, was eben die Pendency Injection möglich macht. Wir geben halt an, was für unsere Anwendung und für diese bestimmte Leibung gemacht werden soll, damit es zur Entgebungswahlrabel hinzugefügt wird. Also in dem Fall heißt es, füge zu der Umgebungsrabel PackageConfig per den Teil innerhalb der Implementierung hinzu. Also das sucht dann diesen Fart im Casche raus, in dem es liegt, hängt noch dieses Lit PackageConfig an und hängt den ganzen Kram an die bestehende Entgebungswahlrabel an. Okay, eine weiteren Wettungfragen im Blick? Ich will mal, wie das funktioniert, weil ich dann, also aber manchmal nicht so, wie in dem GgC zu empfehlen, im Stadion oder in dem Krammungsprogramm. Das weiß davon gar nichts. Das ist was Wunder, das regt es aber auch nicht. Das ist allerdings auch so beabsichtigt. Die Idee sehr am Grunde, wenn ich hättest Übersöhungsdauer startet, dass es nichts an meinem System Zustand verändert. Eine Möglichkeit, eine Übersöhungsdauer installierte Library für andere Programme bekannt zu machen ist. Es geht im Grunde auch, weil man kann auch lokale Feeds anlegen, die einfach auf am System Nativ installierte Anwendungen zeigen und trotzdem Abhängigkeiten aus dem Netz haben, dann wird es auch injiziert, aber das ist dann einfach nicht so mehr, wie Sie sich sagen, benutzerfreundlich. Also für zum Rumexperimentieren, wenn man zum Beispiel seine eigene Anwendung testen will, die Übersöhungsdauer mal deployed werden soll, geht es ohne Weiteres. Also statt ein Archiv anzugeben, aus dem das was Netzhunde geladen wird, kann man dem auch sagen, wenn da diese Datei in dem Verzeichnis direkt. Ein nettes Feature, das es bei Söhungsdauer auch noch gibt, beziehungsweise es ist im Grunde ja einfach ein zusätzliches Programm, das darauf aufbaut, ist Zero Compile. Wie der Name vielleicht auch schon anbeutet hat, ist etwas damit zu tun, wenn man Software selbst bilden möchte. Wenn man selbst Software kompiliert, dann wird man in der Linux-Welt ja typischerweise sein Target-Z-Archiv entpacken, make, make install ausführen, aber sobald dort wieder Abhängigkeiten auftauchen kann es ein bisschen kompliziert werden. Und Zero Compile verwendet im Grunde genau diese selben Abhängigkeits-Auflösungsfunktion zum Komplieren von Quellcode. Also letzt an Stadt den Archiven mit den Binaries Archive mit Quellcode runter und führt dann vor definierte Buildscripts aus und hat halt vorher alle notwendigen Abhängigkeiten aufgelöst. Und das Schöne ist, dass das dabei resultierende resultierende Binaries selbst wieder als Implementierung registriert werden. Also wenn jemand seine Software-Version so veröffentlichten will, möchte aber nicht Binaries für alle Plattformen anbieten, dann kann er auch einfach ein Quellcode-Archiv anbieten. Und so lange der User die notwendigen Build-Tools installiert hat, wird auch das GUI ihm einfach sagen, hier gibt es keine Binaries-Version, aber es gibt eine Quellcode-Version mit einem Klick wird das Ganze kompiliert und beim nächsten Start wird dann die Generierte bei einem wie verwendet. Die landet dann auch einfach im Cash. Okay, bei Serial Compile das habe ich jetzt in meinem Programm nicht weiter drin. Also falls da Interesse besteht, das ist auf der Webseite schön ausführlich dokumentiert. Ich gehe jetzt nämlich schon mal Reiter zum Windows-Port von Serial Install. Also Serial Install an sich ist im Grunde Plattform unabhängig ausgelegt. Das ist eine Python Anwendung. Breitsunktionieren tut es unter den gängigen unixartigen Systemen auch unter Mac OSX unter Windows lief es früher eigentlich so gut wie gar nicht. Da gab es einige Probleme weil es halt fixe Annahmen gemacht hat zum Beispiel das Verzeichnissen mit Slash und mit Backslash getrennt werden etc. pp. Der Windows-Port ist jetzt relativ neu. Das ist mein kleines Verbrechen. Das Ganze basiert auf dem bereits in Python geschriebenen Solver. Also die Logik die die Abhängigkeiten aufslöst. Es war mal angedacht den Solver nochmal einfach nur als Hobbyprojekt in F-Sharp neu zu implementieren. Ist aber bis noch nichts raus geworden. Darüber liegt jetzt ein neues Backend das wieder im Grunde die selbe Funktionalität bietet also das Entpacken von Archiven das Inizieren von Abhängigkeiten und so weiter jetzt aber halt tatsächlich platt und unabhängig in dem Sinne dass es wirklich überhaupt keine Annahmen macht über Verzeichnisse wie Slash War oder so etwas. Und oben drüber dann auch nochmal neues Frontend also wieder ein GUI eine Befehlzeile die Idee ist dass es für der Endbenutzheit die identische Funktionalität bieten soll und vor allem wenn man Programme verwendet diese wohl unter Linux sie auch unter Windows zur Verfügung stehen dann starte ich sie auch in beiden Fällen mit dem selben Befehl mit ZeroLaunch URL und so wie uns doll weiß dann die binary ist für Windows die ist für Linux und lädt dann auch die passende runter. So die Features die ich jetzt beschreibe sind alle noch experimentell also diese Windows Session gibt es jetzt die funktioniert die kann man runterladen das ist eine 1.0 halbwegs stabil. Der Kram jetzt kommt sind noch neue Features in denen ich im Augenblick arbeite die es noch nicht im Netz gibt ich schätze mal dass es wahrscheinlich so in einem Monat das so ein neue Release rauskommen könnte. Ich demonstriere das nachher auch noch aber kleine Vorwarnung es kann gut sein dass da auch irgendwo schief geht und uns ein paar Exceptions in die Ohren fliegen aber deswegen experimentell. Ein Punkt der in der Linux Welt jetzt der relativ straight forward gelöst war war die Desktop Integration wir legen ein Eintrick im Menü an und das war es. Es gibt natürlich noch ein paar mehr Sachen die für eine orthonormal Desktop Anwendung von Interesse sein könnten. Zum Beispiel jetzt auf die Windows Welt bezogen wir haben unsere Teilendung die mit einem Programm registriert werden sollen oder Auto Lay Handler ein Brennprogramm meldet sich sobald eine leere CD eingelegt wird. Und dann möchte man natürlich seine Icons haben also in der Windows Welt noch verbreitet natürlich die Desktop Icons sicher auch Geschmackssache und dann können sich ja auch Programme als Standard Dienst anmelden also sagen ich bin der Standard Browser oder der Standard Mail Client. All diese Dinge würden ja klassischerweise das ein Setup Programm machen oder das Programm selbst wenn man startet. Das ist jetzt bei Syron Store aber eben so ohne weiteres nicht mehr machbar. Wenn wir jetzt Firefox über Syron Store starten dann zieht es sich selbst in diesem Cache Verzeichnis und würde diese konkrete Version registrieren und dann würde in Zukunft wenn man sagen wir mal seine HTTP URL ein Tipp diese konkrete Version von Firefox gestartet. Aber genau das wollen wir ja nicht sondern das soll weiterhin über Syron Store gehen. Das heißt Syron Store braucht jetzt ein paar zusätzliche Funktionen um die Desktop Integration hinzukriegen. Was ich da jetzt gebaut habe ist etwas was im Grunde ein Hut bringen soll also auch zum Beispiel das Anliegen von Aliasen. Dass wir einfach die Möglichkeit haben wenn wir ein Programm über Syron Store gestartet haben und feststellen das wollen wir dass wir mit der Befehlzeile im Augenblick und später mal auch ein Clickybund die GUI genau definieren können wie es integriert werden soll. Ich sage lege dafür Desktop Verknüpfungen an aber keine Detail-Aussitzation oder doch der Detail-Aussitzion wie man es halt haben möchte. Also das ganze jetzt wieder in einem meiner vielen VMs demonstriert. Also einfach ein blankes Windows XP mit nichts weiter drauf außer der Windows Session von Syron Store. Bis einem Augenblick. Okay, ich warte noch eine Sekunde weil die Festplatte gerade in Medi-Gamma Ratan ist. Ich habe im Hintergrund die andere voreimposiert. Wahrscheinlich frisst das ein bisschen mehr Leistung als ich gedacht hatte. Okay. Also wir haben dasselbe Fehlzeilen Interface. Also wir können auch Zero Launch gefreut von der URL eintippen. Falls es jetzt quasi mein durchgehendes Beispiel weil es dort sowohl ein Windows wie auch ein Linux Bild gibt. Ich habe jetzt die selbe URL eingegeben und kriege jetzt eben eine Windows Binary heruntergeladen. Gibt es auch das ist jetzt ein minimaler Unterschied in der Implementierung bei der Windows Session wenn ich einfach eine Zero Launch ein Tippe kriege eine CLI Version und wenn ich Zero Launch Minus Win ein Tippe kriege kriege ich ein GUI. Es hat den Hintergrund dass bei Windows es tatsächlich ein Flag in der extra Datei ist die angibt ob das in der Befehlzahl Anwendung oder eine GUI Anwendung ist bei die Linux Session oder schaut das einfach gibt es ein Xor wenn ja dann bin ich grafisch wenn nein da nicht. Also wenn ich jetzt stattdessen Minus Win dazu packe und noch den Parameter GUI der ist jetzt notwendig weil es schon im Cache ist dass er dann noch eine Rückfrage stellt. Sorry Zero Install Win Run Also die ursprüngliche Oberfläche ist eine GTK Oberfläche und das hier ist jetzt einfach WinForms also vom Stil her alles andere als ähnlich aber bietet die selbe Funktionalität. Also ich sehe auch hier zum Beispiel eine Liste aller Versionen die in dem Feed aufgelistet sind. Es filtert jetzt auch nur die Version raus die auf mein System zutreffen also hier nur Winters Implementierung und aber ich kann auch zum Beispiel Linux Implementierung oder die Qualification Anzeigen lassen. Ich sehe auch hier dass die Quelle jeweils der gleiche Feed ist. Wenn ich jetzt alternative Quellen für den Feed registrieren möchte dann kann ich da einfach einfach eine URL eingeben. Wenn ich jetzt ganz bösartig sein möchte dann könnte ich sogar auch sagen VLC ist vollkommen gleichwertig zu Falsilla und hinter der Annahme das VLC ein neuere Versionsnummer ist eine Frage. Danke, bitte hinweis. So jetzt halt hier nichts bewirken weil VLC ist ja im 1.0.0.1 etwas Bereich wenn ich mich recht entsinne. Aber wir wird jetzt eben die Abhängigkeit neu auflösen und sagen unter der Annahme dass VLC auch einfach nur ein Falsilla ist ist VLC vielleicht besser? Nein, es nicht. Hier unten taucht es eben auch eine Liste auf. Wenn jetzt VLC eine Versionsnummer hätte. Also die Appenspielerei ist natürlich jetzt nicht der Sinn der Sache aber wenn jetzt eben an andere Anbiete auch Falsilla Version anbieten würde könnte ich die damit einbinden. Und ebenso habe ich dann auch die Möglichkeit diesen Standard Algorithmus der einfach schaut was ist die neueste Version die geht. Kann ich den auch auch aus der Kraft setzen und sagen die 2. neueste Version die möchte ich bitte bevorzugen. Dann würde der Sauber wieder neu durchlaufen und jetzt eben die 3.4.0 auswählen. Da kann es jetzt auch etwas komplexe Wechselwirkungen geben wenn ich jetzt verschiedene Bibliotheken habe die wiederum bestimmte Versionen brauchen. Dann wird es eben wirklich die neueste Version nehmen die tatsächlich möglich ist. Also das ist ein Satz-Sover der dann Hintergrund läuft. Wenn also die neueste Version des Programms von einer Bibliothek abhängt die dann aber nicht existiert dann wird da eben die nächste neueste Version wählen. Hauptsache die Anforderungen des Benutzers sind erfüllt. Also der Benutzer sagt ich möchte Falsilla starten, beliebige Versionen dann geht es eben die bestmögliche Lösung für diese Anfrage. Okay. Da der Autonomal-Windows-User ein Desktop-Icon erwartet bei dem ein Programm starten kann haben wir hier on Honghui das ist im Augenblick eine ziemlich leere Schale die einfach nur eine Liste von wohlbekannten Fees liefert eben diese vorher schon gesehenen Liste. Ein Klick auf einen in diese Icons wird dann unter der Haube genau das gleiche ausfinden. Es wird wieder so install minus win run und so weiter ausgeführt. Der Nutzer sieht die Versionsnummer des gewählten Programms kann noch Konfiguration ändern wenn er das möchte. So alles bis hierhin war jetzt engunder ein Strateboard und die Neuspielerei ist eben die Desktop-Integration. Für die existiert im Augenblick noch kein GUI das heißt es ist alles noch wie viele Zeile was vielleicht den wenig ironisch ist dass wir das Zimmertikationen über Befehlzeile machen wollen aber sobald das ganz ausgereift ist dürfte es relativ simpel sein dafür noch ein GUI zu bauen. Die Session-Stall ist im Grunde dieser Allzweckbefehl sollte ich vielleicht nochmal kurz darauf eingehen. Ich hatte vorher wenige es gibt Befehle select run und download und dann noch eine ganze Batterie unsere Hilfsachen also zum Beispiel die Möglichkeit mit Ad-Feed einen alternativen Feed zu registrieren das ich vorhin GUI gemacht habe oder mit List eine Liste aller Feeds die bereits im Cash sind aber für diesem Fall wollen wir jetzt eben diesen neuen Integrate-App Befehl verwenden dem geben wir auch einfach wieder die Uwe des Feeds und dann können wir spezifizieren was so eine Art von bitte danke was so eine Art von Integration wir haben wollen diesem Fall bleiben wir mal konservativ und sagen wir wollen Desktop-Icons anlegen da wird es dann am Schluss eine relativ umfangreiche Liste geben sei es jetzt Datei-Assoziation oder mache jetzt Standard-Browser was auch immer vor für Effekt also wir sehen dass es hier noch einen kleinen Download gab nämlich filezilla.ico das ist insofern interessant weil warum müssen wir jetzt ein eigen Datei getrennt runterladen wir haben das Ding ja schon im Cash wenn wir etwas in Desktop integrieren dann heißt es ja nicht dass die Anwendung deswegen immer verfügbar sein wird wir können ja zum Beispiel etwas Menü-Enträge anlegen ohne dass es überhaupt im Cash ist wird dann beim ersten Start eben in den Cash gezogen deswegen wenn wir z.B. Desktop-Verknüpfung oder irgendetwas in der Art haben wollen dann müssten wir getrennt vom Programm schon mal das Icon ziehen damit es tatsächlich da ist also es sieht als aus wie eine normal installierte Anwendung aber die Verknüpfung zeigt in der Tat wieder auf diesen Seronstore-Befilm der dann wenn ich darauf klicke die Anwendung aufstattet auf dieselbe Art und Weise kann ich dann zum Beispiel auch die Dateiendungen die ein Programm behandeln kann einbinden lassen das XML-Format von Seronstore ist ja relativ einfacher weiterbar man nennt einfach einen neuen Namespace und dann habe ich jetzt einfach mal die Sachen die man in der Windows-Welt antrifft wird aufgelistet also Dateiendungen Out-to-plays und so weiter im Augenblick gibt es da keinerlei Implementierung für die Linux-Welt aber es dürfte eigentlich relativ einfach möglich sein auch die Punkt Desktop-Dateien mit den Daten anzureichern so dass wenn ich z.B. ein Feed für ein portierbares Programm wie falls ich da angelegt habe und dem gesagt habe dieses Ding kann FDP behandeln und ich installiere das Ding unter Linux sodass es sich dann auch dort entsprechend einträgt bitte Machst du noch einen Stausen? Über die Desktop-Verpippen? Ja In der Windows-Welt leider noch etwas mage der Hauptgrund dafür ist dass im Hintergrund eben diese ursprünglich implementierte Python-Solver läuft das heißt das sind zwei Prozessern-Werk die über Interprozess-Kommunikation Daten austauschen also wenn etwas bereits im Cash ist dann naja spüre ich jetzt auf diesem Rechner hier außerhalb der FM das ist ein Quartidou so vielleicht zwei Sekunden Verzögerung wenn man es ohne GUI startet dann ist es eigentlich nicht mehr spürbar und in der Linux-Implementierung eigentlich auch nicht das war der Grundgedanke warum ich den vorher erwähnten F-Sharp-Solver mal implementieren wollte das wird dann halt im selben Prozess laufen das wird das Ganze um einiges beschleunigen es gibt auch die Idee dass man diese Abhängigkeiten wenn sie einmal gelöst sind in irgendeinem leichtes serialisierbaren Format vorhält also das ist auch gerade auf so Low-Budget-Netbooks noch halbwegs lustig funktionieren würde aber im Augenblick ist es noch nicht implementiert ok mal schauen ob meine zweite vor allem hier läuft so für das nächste interessante Feature muss ich hier noch eine zweite vor allem buten ich bedauere dass ich die vorher noch nicht gestartet habe weil keiner sieht gerne wenn das XP beim Laden zu dann ist es ein ganz normaler tiefer Prozess ja exakt ja also da ist auch keine also es ist nicht wie Anwendungs-Virtualisierung bei der dann zur Laufzeit noch irgendetwas zu ändern wäre also das ist auch das Schöne die ganzen Feats die da jetzt eine Liste sind das ist so vielleicht ein kleiner Bruchteil von denen die im Augen existieren die verweisen auch immer auf die Version auf die Archive von den Original-Herstellern auf deren Websites das sind jetzt zum Großteil Source-Forge-Projekte das sind einfach direkt die Downloads wie die anbieten die wissen von Zero Install nichts aber das System funktioniert damit und es sind deren unveränderten Bindways also wir haben jetzt auch hier unter Windows natürlich diesen Zero Alias Befehl das ist ja auch noch mal kurz wird dass der hier lebt wohl gemerkt die Internet-Implementierung ist in der Windows-Welt etwas anders unter Linux legen wir ja einen ShareScript an und ein ShareScript fällt sich ja wirklich wie eine ausführbare Anwendung solange das Executable-Bit gesetzt ist unter Windows war der erste Gedanke eine Punkt-Batt-Datei aber das ist halt wirklich nicht das Gleiche erstens würde es sich zum Beispiel wenn man diesen Befehl mal aus einer GUI-Ermündung heraus öffnet immer noch mal eine Konsole öffnen oder ein anderes Vor-für-Effekt sollte egal sein Also das andere Problem ist dass Stapelateien also diese Punkt-Batt-Dateien wenn man sie aus einer anderen Stapelatei heraus öffnen sich wieder subtil anders verhalten Sie ersetzen nie bereits laufende Stapelatei und sporn nicht einen eigenen Prozess also unterm Strich klappt das einfach nicht deswegen macht die Windows-Version etwas kringfügig umständlich hier was sie generiert on the fly eine kleine Wrapper-Echse die dann aber ihnen ja nichts anderes tut außer wieder Syron-Stall starten also wenn ich die Konsole schließe und wieder öffne dann dürfte jetzt auch hier direkt über die Fehlzeile Falsilla zum GUI führen ja das Problem war wenn man eine umgebungsarablung für Windows verändert dann kriegen die bereits laufenden Prozesse davon nichts mit da muss man Winz32-AP aufrufen machen der allen Prozessen sagt holt euch die umgebungsarablung neuen und anscheinend habe ich da irgendwo Mist gebaut also da gab es ein Eck es war ja leicht mein Versuch diese API aufzuhofen getestet hatte ich das unter Windows 7 und vielleicht hatte sich irgendwas an den Details unter Windows XP geändert okay so das letzte neue Feature das ich jetzt demonstrieren will das gefällt mir persönlich am besten aber ich hoffe jetzt auch dass es mir nicht im Dioren fliegt diese ganze Desktop Integration die ich jetzt vorgenommen habe die geschieht nicht einfach und hat das System an irreversibel verändert da liegt irgendwo eine XML-Datei in der genau aufgesend ist was habe ich im System verändert ich habe eine Verknüpfung angelegt und ich habe einen neuen Alias generiert diese XML-Datei können wir kurz einen Blick drauf erfen bevor ich weiter gehe die liegt in meinem User Profil und hier drin ist dann die Struktur wiehentisch mit dem was man unter Linux unter Tilde Slash Config kriegen würde was gibt es jetzt dieses Verzeichnis Desktop Configuration in dem alles drin ist was irgendwie mit der Desktop Configuration zu tun hat die Gekeshten-Icons und hier zum Beispiel die Liste am Augenblick haben wir ein Programm integriert wir haben dort ein Menüe-Eintrag und ein Desktop-Eintrag angelegt so ich hatte hier gerade Synx eingetippt und statt lang zu erklären was es macht demonstriere ich es einfach wenn ich jetzt bei meiner zweiten VM also getrennte Maschine die einfach nur beide Internet- und Anführungszeichen hängen Synx-Sync-Eintippe dann wird entweder ein weiterer Stacktrace kommen oder ja also der Entfernbefehl ist zum Teil nicht vollständig implementiert aber es ist im Grunde von der aber bevor ich darauf eingeh wegen diesem Sync also was jetzt hier geschehen ist das da diese Desktop-Integration aufgezeichnet ist lässt sie sich ohne weiteres zum Beispiel auf irgendeinen Public-Server oder auch auf einen privaten Server hochschieben und noch wieder runterziehen also ich hab jetzt auf dieser zweiten Maschine einen selben Befehl eingetippt und hab jetzt auch hier meine Verknüpfung gekriegt und auf die selbe Art und Weise könnte das Ding auch aliasse oder Dateizorten oder so das Synchronisieren wenn ich die Sachen wieder entfernen will dann ist der vorgesehenen Befehl einfach Integrate-App und so weiter die gesamte URL Punkt, Punkt, Punkt und dann genauso wie ich vorher add hatte ein Remove oder einfach Remove-App um sämtliche Integration dafür rückgängig zu machen diese Idee mit dem Synchronisieren ist im Grunde dass ich mir meine Destruunggebung zusammenstellen kann mit allen Programmen die ich brauche sagen wir mal Browser FTP-Tool was auch um mich eventen möchte Synchronisiere das mit irgendeinem Server und kann dann bei allen Rechnern die ich einsetze ist im selben Stile wie zum Beispiel Firefox Sync immer auf dem gleichen Standhalten das verwendet intern ein 3D-Generz so dass ich nicht bei einem Programm eine Zuführung im anderen entferne das ist dann das auch durchaus versteht und so lange ich jetzt nicht richtig funky werde und die Details der Integration einer Anwendung auf zwei Rechnen für Ende ohne zu synchronisieren dürfte es damit auch gut umgehen können da komme ich jetzt direkt drauf also die Ammendungsliste liegt ja lokal als X-Meter-Teil wenn ich das Ganze synchronisieren will dann muss ich zunächst mal ein das habe ich jetzt in den VMs Forschung gemacht mir irgendeinen privaten Schüssel auswählen also eine beliebige Zeichenkette solange es eindeutig ist die auch nur ich kenne und mit der wird das Ganze dann verschüsselt es ist jetzt nicht super sicherheitskritisch aber potenziell will man nicht dass Räumler Leute sehen welche Anwendungen verwendet und das Ganze wird dann auf einem HTTP Server mit einem Put abgelegt also am anderen Ende ist ein minimalistisches PHP-Script das nichts weiter macht außer Credential zu überprüfen benutzt man ein Passort und dann die Datei ablegt ich habe dann vor das Ganze noch einen kostenlosendienst auf Sirmstoll.de die Projektleibseite zu stellen dass das Ganze anbietet aber jeder kann sich so das auch selbst aufsetzen also da auf der Server-Seite ist dort nichts außer einen verschüsselten Benerblock der weiß von nichts und der Sync Befehl der zieht sich die aktuelle Version hat außerdem noch eine Kopie des Standes wie es beim letzten Sync war mit den 3 Daten also die Daten von Server die Daten vom letzten Sync und die aktuell macht es dann sein 3W-Gemerge kann die Veränderung feststellen und schiebt dann einen neuen Stand wieder auf dem Server also auf die Art und Weise dürfte es auch problemlos mit mehr als 2 Rechtern funktionieren Wie muss das an den kleinen Sync bei den Schlüsselern? Ich kann noch mal kurz in die Vm zurückgehen im Augenblick gibt es dafür jetzt noch kein schönes GUI sondern nur eine einfache Auflistung des Inhalts der Config-Datei aber es sind einfach Konfigurationswerte bei dem ich ein HTTPS Server habe ein Benutzen haben einen Passort mit dem ich mich bei dem Server authentifiziere und dann davon getrennt diesen Kryptischlüssel im Augenblick hier ein einfach A aber ist natürlich beliebig lang sein also ist intern einfach IS mit 128 Bit Schlüssel also die Logik dahinten ist im Grunde stark von Firefox sind auch abgekupfert inklusive dieser Lokalverschlüsselung das heißt also der Server kennt zu keinem Zeitpunkt irgendwelche Details und die benutzenden Passort-Comedies eben nur dazu gedacht dass kein anderer das Profil einfach überschreiben könnte oder dass man eine Quote überschreiben könnte okay also der letzte Teil da möchte ich noch kurze Überblick geben welche Sachen bei Sørenstall noch geplant sind einerseits die schon angefragte Konfigurationsverwaltung also dass Sørenstall die konkrete Instanz inklusive des Profils und so weiter steuern kann das könnte man vielleicht auch nur in dieses Zink mit hineinbauen es dürfte um einiges komplizierter werden weil so ein Firefox Profil ist kann ja schnell bei 50 80 Megabyte groß werden und das kann man nicht einfach schnell in einem Vinerblop drüber schieben aber die Idee ist auch dass man komplexere Konfiguration so etwas wie das Gesamt im Augenblick anbietet auf einen Schlag abdecken kann wenn jemand irgendein größeres Projekt das viele zusammenhängende Komponenten hat starten will dann reicht es vielleicht nicht nur Abnichtkeiten zu lösen runter zu laden die Dinger müssen auch potenziell irgendwie konfiguriert werden aber die Konfiguration will ich ja trotzdem nicht fest reingebraten haben das Programm dem Fall würde Sørenstall halt die Möglichkeit bieten für diese Instanz den Default Konfiguration zu liefern die die User noch weiter zu ändern kann dann ein weiter Aspekt wo diese hessend großen Vortests sind ist dass man bei den Downloads so viel machen kann im Augenblick laden wir ja nur wenn der Datei von fdp oder http server runter wenn packen sie aber da man diese kryptografischen Hashes hat könnte man zum Beispiel auch Mirrors oder peer-to-peer sharing den Dateien verwenden und weiß immer dass man die richtigen Dateien bekommen hat die Idee mit dem peer-to-peer ist dass User die etwas wieder Sørenstall installiert haben haben die Dateien ja immer noch in ihrem Cash drin und sie können selbst sicherstellen dass sie nicht beschädigt wurden und sie können andere Leute schicken die auch sicherstellen können dass es nicht beschädigt wurde also wenn ich in einem ähm Einnetzwerk bin und es will ja auch am zweiten Rechner etwas über Sørenstall dann könnte es bestellen einen Rechner in diesem Heimnetz hat er schon im Cash oder mehrere und sieht sich dann peer-to-peermäßig für die Linung des und gibt es davon auch schon Implementierung diesem Augenblick auch noch experimentell aber solange es innerhalb des Heimnetzwerkes ist und nicht übers Internet geht funktioniert die auch und Delta Patch ist auch so eine Möglichkeit im Augenblick wird eine neue Wissung komplett runter in den Pack und fertig wenn es was kleines ist wie falls kein Problem ein Monsterprojekt wie irgendein größeres Spiel zum Beispiel würde damit natürlich früher später bei Updates Problem führen weil wir jedes Mal die komplette Version laden da wir wissen dass die Teilen unverändert sind könnte man auch einfach eine kleine Detail generieren und ein interessanter Aspekt an dem auch noch gearbeitet wird damit habe ich dann nichts zu tun das ist im Augenblick nur in der Linux-Version umgesetzt ist Sandboxing Sørenstall steht ja schon mal sicher dass bei Installation nichts am Rechner verändert wird aber wenn das Programm gestartet ist kann das immer noch Amok laufen aber wenn man das mit irgendeiner Sandbox wie zum Beispiel Plash oder E ist noch ganz interessant in dem Aspekt kombiniert dann kann man damit Grunde die Sache Ende zu Ende abdecken Sørenstall sorgt dafür dass das Programm unverändert runtergeladen wird und nur kontrolliert ins System integriert und die Sandbox sorgt dafür dass das System das laufende Programm da nur die Dinge durchführen kann die es soll Kennt ihr E es das ist ein Begriff das ist eine Programmierspare die spezifisch auf Sandboxing ausgelegt ist also es ist keine Allzweckwaffe mit der man bestehende Programme es sicher macht sondern mit der man neue Programme schreiben kann das besondere ein E ist dass ein Programm aus Sicht des Benutzers alles kann man kann damit jede Beliege der Datei öffnen aber es kann tatsächlich nur Aktion ausführen die von Benutzer angefordert werden also wenn es in der Teilöffnendialoge hat dann ist dieser Teilöffnendialoge aussagt der Kontrolle des Grams und das Programm kriegt nur zu auf die Dateien die der Benutzer geöffnet hat man könnte damit also ein Textidee zu machen der wenn er will Dateien zerstören kann die Benutzer bearbeitet aber jenseits dessens nichts anrichten kann da gibt es auf eine fertige Demo auf der Seite von SyronStore wo diese Integration mit E umgesetzt ist der Ursprünglichentwickler hat da auch so eine kleine Challenge draus gemacht er hat gesagt schreibt ein Programm mit E ich führe es aus und wenn euer Programm es schafft eine bestimmte Datei von einem Rechen zu stehlen habt ihr gewonnen ist bislang auch noch nicht geklappt es ist jetzt nichts was Grunde eine Errungsschaft von SyronStore sondern eben dieser Sprache aber der Schöne daran ist dass SyronStore dieses ganze drumherum für einen löst also es installiert E für einen es startet das Programm mit E E ist einfach eine weitere Abhängigkeit die Selbstsiederung von Java abhängt und auch darum kümmert es sich okay das sind jetzt so die zwei relevanten Websites SyronStore.net ursprüngliche Projekt-Webseite und der Windows Port und noch eine deutsche Beschreibung das hinter SyronStore.de mit dem einen Vortragsteil hier bin ich soweit durch ich hab wenn nach den Fragen Interesse besteht eine Sache die potentiell interessant sein könnte nämlich ich kann mal kurz demonstrieren wie man selbst ein Programm über SyronStore pakettiert also wie man selbst etwas damit veröffentlicht aber aus die useperspektive bin ich soweit durch und wenn ihr jetzt gerade Fragen habt dann schießt bitte los gut also es gibt ja diese KnuPG-Signature das viel selbst man kann beliebig viele KnuPG-Signaturen auf ein viel anwenden also wenn man zum Beispiel den man in mindestens verwenden möchte um zu sagen ich Kraft meines Amtes als Ubuntu-Package das sage dieses Programm ist sicher dann könnte ich sagen damit ich signiere Feeds mit diesem KnuPG-Schlüssel SyronStore hat dann auch noch so ein Lookup-Sauer bei dem es diesen Kies in welchen Extrembation zuordnen kann also wenn man ein Programm das erst mal startet könnte es anzeigen dieses Programm ist signiert von Hans Müller und zusätzlich wurde es auch noch abgesignet von folgendem Benutzern ja Herr Michel was sind die was wollen wir kurz erwählen das weigliche Griff uns auf einer Pfeifensolver wie die Kommunikation geredet war xml der Pfeifensolver der generiert ein xml-Dokument das die ausgewählten Implementierungen beschreibt und wie die in Abhängigkeit zu nah stehen und das ganze geht dann über eine Pipe an den TheNet-Prozess der diese xml wieder zerlegt und darauf basierend die Sachen runterlegt integriert und so weiter also das ist eindeutig der Performance Bottle Neck im Augenblick wenn ich dann eine Messung durchführe dann ist der Prozess so vielleicht 90% der Zeit damit beschäftigt entweder xml zu pausen und darauf zu warten dass der Pfeifensolver etwas liefert also so im Augenblick ist es halt auch nicht sonderlich drängend daran was zu ändern weil es funktioniert nur nicht sonderlich schnell ist nee das ist ein Grunde einfach nur Standard Out vom Pfeifensolver und der wird dann abgefangen ok der allerletzte Teil also wie gesagt das ist alles was von User Perspektive her interessant ist wäre dann noch das Paketieren ich hatte ja vorher erwähnt dass man mit Syrnstool auch wenn diese Desktop Integration mal steht zu Sachen wie Datei Association machen kann wenn man das von Hand in so ein Feet eintragen müsste wäre das ja ziemlich mehr verfreibend vlc kann vielleicht 30 verschiedene Dateivamate und wenn man der jetzt anfangen soll für jeden die Datei Endung den meinem Type uns weiter nachzulesen mit welchen Parameter man starten muss dann würde ein das Fudo später wahrscheinlich in den Wahnsinn treiben deswegen habe ich mir da etwas abgeguckt was in der Welte Desktop Integration recht gängig ist bei so Tools wie z.B. AppV oder ThinStall die funktionieren der Regel so dass man eine Anwendung dass man das als System vor den Zustand ins Snapshot erstellt die Anwendung installiert dann nachher ins Snapshot erstellt dann das Ding stellt fest was sich am System verändert hat und zieht daraus dann alles also welche neuen Libraries zugefügt und so weiter und bei so Install habe ich jetzt einen etwas kleineren Ansatz gewählt bei dem das Ding nur feststellt welche Desktop Integration vorgenommen wurde und die dann in dieses Feed Format extrahiert ich könnte also jetzt oder wenn diese vor allem sich mal dazu bequem zu starten ich kann zum Beispiel einfach das Firefox Setup auswählen und das VLC Setup und die Endung die ist dran vorgenommen hat Caption und die habe ich dann in ein MixML Format und das kann ich dann anschließend das komplett los gewünschende Setup verwenden ich kann wieder diese sauber so über uns Installation machen bei der nur in Archiv entpackt wird und zusätzlich dann noch Install sagen verknüpfe es bitte korrekt mit in der Tie Endungen und zwar nicht einfach direkt mit der extra Tie sondern jeweils wieder über diesen Install Befehl sprich wenn ich auf irgendeinem Entdeckene Recher VLC integriere dann wird es trotzdem erst geladen wenn man ihn tatsächlich braucht also diese Erfassung das ist wieder ein eigenes Befehlsteilen Tool Zero Capture also in der Install Install Welt fängt alles mit Null an die ganzen zusätzlichen Tools da gibt es zum Beispiel das Zero Compile oder Zero Publish ist ein Editor für die Feed Formate also wenn man Null drückt und dann Autor vollständig dann sieht man im Grunde was es in der Install Install Welt gibt also das Programm orientiert sich jetzt in der Bedienung vielleicht entfernt an einem Versuchensverwaltungssystem ich initialisiere ein Capture Verzeichnis und wenn ich dann mit CD in dem Verzeichnis drin bin dann beziehen sich alle Operationen auf diese Capture Prozesse also ich lege einen Schnappschuss vom System an wie es im Augenblick ist das heißt das merkt sich welche Datei Association gibt es was ist das Standard Browser all der Kram dann kann ich mein Setup ausführen zu dem Zweck werde ich jetzt einfach mal das Firefox 5 Setup das ich auf meinem Host Rechnerhabe reinziehen beziehungsweise vielleicht habe ich hier noch eine Kopie liegen wo gemerkt dass wir jetzt immer in einer Vm machen also das ist wenn man jetzt selbst ein Programme über Studio Install veröffentlichen will für das man schon ein Installer gebaut hat oder man möchte ein Studio Install Feed für ein fremdes Programm erschellen dann wäre der Ansatz dass man sich wird schon Maschinen aussetzt die ruhig zugemüllt werden darf verwendet dieses Tool um den Differenz festzustellen was das System am System verändert wird und hat anschließend ein Feed der das Ganze so beschreibt dass man es auch wieder reversibel anwenden kann dann den zweiten Schnappschuss was das System anschließend aussieht und der letzte Teil ist tatsächlich erfassende Änderungen wobei ich dem System noch einmal ein bisschen auf die Sprünge helfen muss man muss ihn noch sagen was ist denn jetzt eigentlich die Haupt-Echse bei Firefox liegen ja noch ein paar Hilfsexen dabei Exerteien dabei zum Beispiel dieser Crashreporter oder der Uninstaller und wenn man das nicht angibt dann müsste das nicht was jetzt die tatsächlich Exerteils die startet werden soll und was jetzt geschehen ist ist wir haben hier eine neue XML-Teile gezeigt bekommen und das ist wieder ein Mission-Stall Feed in dem bereits der Name und die Beschreibung des Programms drin steht diese Beschreibung die stammt aus den Daten die Firefox in der Registronen eingetragen hat und hier eine Liste der Fähigkeiten also Capabilities was das Programm alles kann also es kann diesen Fall das FTP-Hart-DTP und HTTPS-Protokoll verarbeiten und kann der Time diese mit diesen Endungen verarbeiten und wenn ich jetzt die Sache noch vollständig wollte dann würde ich jetzt eben entweder ein fertiges Archiv finden das Mozilla anbietet oder Selbstsensiv-Archiver stellen das Ganze hochladen und dann könnte der End-User es auch wieder über diesen Integrate-App Befehl installieren okay und das ist mmh ja uns auch nicht veröffentlicht also das ist jetzt ich bin ehrlich froh dass mir da keine Exception um die Augen geflogen dass es jetzt gerade noch entstehen es gibt sowohl für Windows wie auch für Linux einen grafischen E-Tor um Pakete zu erstellen die sind in beiden mehr oder mit der Äquivalenz in ihren Funktionen ich kann ja gerade mal hier starten da ich jetzt außerhalb der vor allem bin dürfte es auch ein klein wenig schneller sein also klassischerweise fängt man entweder mit einem leeren Texte die du anrufen oder wenn du das tul trägt dann diese vorwähnten Metadaten ein das heißt also Name des Programms URL unter der ich's veröffentlichen möchte URL der Website Icons was auch immer na also sagen wir mal wenn wir Firefox zu öffentlichen wollten das ist noch ein ein kleiner Sicherheitsaspekt dieser Interface URL das ist die URL wo die Datei hochgeladen wird und das steht in der Datei selber nochmal drin und das ist insofern relevant weil es da einen etwas absurden aber doch denkbaren Angriff gibt wenn das nicht der Fall ist wenn wir davon ausgehen dass jemand einfach diese Datei austauschen könnte dann könnte jemand der ein Paket für die Tools Cat und RM angelegt hat beide signiert haben und sagen ja, diese Programme sind zuverlässig die tun das was sie sollen M löscht Sachen Cat löscht Sachen nicht und wenn jemand diese Datei einfach austauschen wie diese Fieze dann stimmen ihre Signaturen noch und das Programm würde nicht Alarm schlagen und jemand der dann Cat startet kriegt stattdessen er hat seine Daten damit vernichtet aus dem Grund muss auch diese URL mit in der Datei drinstehen und diese auch vor der Signatur abgedeckt will er heißen wenn ich jetzt diese URL aufrufe dann wird es uns alles nur aushöhnen wenn tatsächlich das drinsteckt was ich erwarte so der interessante Teil ist dann das Anlegen eine Implementierung die Implementierung ist dann die konkrete Version also sagen wir mal Firefox ist aktuell 5.0 und dann ist Archiv von dem es ganz sehr ausrund geladen werden soll hier ist es eigentlich fast fast unverzichtbar ein Editor dafür zu verwenden ist nicht mit der Konsole zu machen weil in diesen viel stehen ja Anschluss ja auch die Hashes drin und wenn ich jetzt von Hand anfange Hashes zu berechnen werde ich nicht möglich jetzt könnte ich hier die URL eintragen es gibt dummerweise kein ZIP Archiv für Firefox ja aber ich könnte mal das WLAN steht einfach irgendeine andere ZIP Archiv nehmen von den ganzen Feeds für dies welche gibt typischerweise würde man sich jetzt diese URL von der Website holen oder zum Beispiel diesen ganzen Sourceforschprojekten da gibt es ja ein sehr vorhersehbarer Schema wie die Dateien benannt sind in dem Fall habe ich jetzt zum Beispiel für die ganzen Projekte die es hier gibt einen Script angelegt das ist ganz automatisiert also alles was dieser Editor hier kann ist auch über eine API über zum Beispiel Ironpipers ist so etwas ansprechbar das heißt wenn man sich schließt ich verwarte jetzt den Feed-for-File sondern muss ich nicht jedes mal einem Editor rumklicken wenn ein Neu-Version auskommt sondern mir einfach ein Script bauen dem ich sage falls es ein Version 5.0 ist draus mach alles dann zieht es das Archiv runter in Pactes generiert die Hashes und kann dann man möchte zum Beispiel auch gerade Armour läuft nichtsdestotrotz das ist eben der Feed in dem Aum begreichlich wenig drin steckt eben Version 5.0 und keine Download URL aber alle weiteren Daten werden da auf drin also wenn ich selbst ein Feed veröffentlichten möchte gehe ich einfach durch den grafischen Editor und klickt mir die Sachen im Grunde zusammen okay ich spare mir na ich setze noch mal das nette Fragezeichen hoch ja bitte das ist ein Grunde nicht Aufgabe der Sache die Idee ist dass die Sicherheitsüberprüfe im Grunde bei der Wahl der URL stattfindet also wenn ich mich entscheide ich hole etwas von diese URL und weiß wer den dazugehörigen Key hat dann muss ich diese Person vertrauen können also die Idee ist nicht dass es sozusagen einen Sirensdorl Gott gibt der definiert was ist bei Sirensdorl in Ordnung und was nicht sondern jeder sich selbst vernexte und wenn man so etwas wie zuverlässige Quellen haben möchte dann muss man entweder auf die Websites der original Hersteller gehen also wenn zum Beispiel irgendwann mal Firefox also Mozilla Firefox über Sirensdorl veröffentlichen würde dann wüsste man halt die Version die von Mozilla kommt ist die die die die ich vertrauen möchte ja wohlgemerkt die Veeds die wir im Augenblick haben sind im Grunde nur Daten da um die Sachen in Sirensdorl in Sirensdorl zu bringen aber die Software die wir dort haben sind im Grunde einfach bekannte Projekte die auf Source verschieben was es übrigens noch gibt wenn man jetzt davon ausgehen dass diejenigen den Feeder stellt hat dass der reingelegt wurde und hat versehentlich eine falsche Person veröffentlicht oder es werden gravierende Sicherheitslücken gefunden da gibt es schon eine Möglichkeit der Feed der enthält unter anderem auch Flex für Stabilität angeht ich kann zum Beispiel sagen diese Version ist mir weiterhin bekannt aber ab sofort gilt ihr als Unsicherer oder als Buggy dann dieser Software hat ja dann einige Sachen die mit einkließen wie schon vor erwähnt kann ich sagen diese Version bevorzugeh ich aber kann zum Beispiel auch sagen Update nicht um jeden Preis ich will die Version dem Crash ich will mal in Brandbreite schon aber wenn eine Version als Unsicher gilt dann wird das Software sagen ja das ist wichtig in diesem Fall überschreiten wir das wir sind inzwischen schon eine halbe Stunde drüber gut offiziell geht es doch bis 14.0 oder gut vielen Dank für Ihre Aufmerksamkeit