In den letzten 10 Jahren ist das Interesse an „wissenschaftlichem Rechnen“ und „Datenwissenschaft“ explosionsartig gestiegen: das heißt, die Anwendung von Berechnungen zur Beantwortung von Fragen und zur Analyse von Daten in den Natur- und Sozialwissenschaften. Um diesem Bedarf gerecht zu werden, haben wir eine Renaissance von Programmiersprachen, Tools und Techniken erlebt, die Wissenschaftlern und Forschern helfen, Daten und wissenschaftliche Konzepte zu erforschen und zu verstehen und ihre Ergebnisse zu kommunizieren. Bislang gibt es jedoch nur sehr wenige Tools, die Wissenschaftlern einen ungefilterten Zugang zum vollen Kommunikationspotenzial moderner Webbrowser ermöglichen. Deshalb freuen wir uns, heute Iodide vorstellen zu können, ein experimentelles Tool, das Wissenschaftlern helfen soll, schöne interaktive Dokumente mit Hilfe von Webtechnologien zu schreiben, und zwar innerhalb eines iterativen Workflows, der sich ähnlich anfühlt wie andere wissenschaftliche Computerumgebungen.
Iodide in Aktion.
Iodide ist nicht nur eine Programmierumgebung zur Erstellung lebendiger Dokumente im Browser, sondern versucht auch, Reibungsverluste in kommunikativen Workflows zu beseitigen, indem es das Bearbeitungswerkzeug immer mit dem sauberen lesbaren Dokument bündelt. Dies unterscheidet sich von IDE-ähnlichen Umgebungen, die Präsentationsdokumente wie .pdf-Dateien ausgeben (die dann vom ursprünglichen Code getrennt sind) und von zellenbasierten Notizbüchern, die Code und Präsentationselemente mischen. Mit Iodide erhalten Sie sowohl ein Dokument, das so aussieht, wie Sie es wünschen, als auch einen einfachen Zugriff auf den zugrunde liegenden Code und die Bearbeitungsumgebung.
Iodide befindet sich noch in einem Alphastadium, aber gemäß dem Internet-Aphorismus „Wenn die erste Version deines Produkts dir nicht peinlich ist, bist du zu spät auf den Markt gekommen“ haben wir uns entschlossen, eine sehr frühe Markteinführung vorzunehmen, in der Hoffnung, Feedback von einer größeren Gemeinschaft zu erhalten. Wir haben eine Demo, die Sie jetzt schon ausprobieren können, aber rechnen Sie mit vielen Ecken und Kanten (und verwenden Sie diese Alpha-Version bitte nicht für kritische Arbeiten!). Wir hoffen, dass Sie trotz der Ecken und Kanten in der Lage sein werden, den Wert des Konzepts zu erkennen, und dass das Feedback, das Sie uns geben, uns helfen wird, herauszufinden, wohin wir als Nächstes gehen werden.
- Wie wir zu Iodide gekommen sind
- Datenwissenschaft bei Mozilla
- Warum gibt es so wenig Web in der Wissenschaft?
- In Richtung Iodid
- Die Anatomie von Iodide
- Die Ansichten „Explore“ und „Report“
- Lebendige, interaktive Dokumente mit der Leistungsfähigkeit der Web-Plattform
- Freigabe, Zusammenarbeit und Reproduzierbarkeit
- Pyodide: Der Python Science Stack im Browser
- JSMD (JavaScript MarkDown)
- Was kommt als Nächstes?
- Erweiterte Funktionen für die Zusammenarbeit
- Mehr Sprachen!
- Exportieren Sie das Notebook-Archiv
- Iodide to text editor browser extension
- Feedback und Zusammenarbeit willkommen!
- Über Brendan Colloran
Wie wir zu Iodide gekommen sind
Datenwissenschaft bei Mozilla
Bei Mozilla konzentriert sich der Großteil unserer datenwissenschaftlichen Arbeit auf die Kommunikation. Obwohl wir manchmal Modelle einsetzen, die das Nutzererlebnis direkt verbessern sollen, wie z. B. die Empfehlungsmaschine, die Nutzern hilft, Browsererweiterungen zu entdecken, analysieren unsere Datenwissenschaftler die meiste Zeit unsere Daten, um Erkenntnisse zu finden und weiterzugeben, die die Entscheidungen von Produktmanagern, Ingenieuren und Führungskräften unterstützen.
Datenwissenschaftliche Arbeit beinhaltet das Schreiben von viel Code, aber im Gegensatz zur traditionellen Softwareentwicklung ist unser Ziel, Fragen zu beantworten, nicht Software zu produzieren. Das Ergebnis ist in der Regel eine Art Bericht – ein Dokument, einige Diagramme oder vielleicht eine interaktive Datenvisualisierung. Wie viele Data-Science-Organisationen erforschen wir bei Mozilla unsere Daten mit fantastischen Tools wie Jupyter und R-Studio. Wenn es jedoch an der Zeit ist, unsere Ergebnisse mitzuteilen, können wir in der Regel kein Jupyter-Notizbuch oder ein R-Skript an einen Entscheidungsträger weitergeben, so dass wir am Ende oft Dinge wie das Kopieren von Schlüsselzahlen und zusammenfassenden Statistiken in ein Google Doc tun.
Wir haben festgestellt, dass es nicht immer einfach ist, den Weg von der Erkundung der Daten im Code zur Erstellung einer verständlichen Erklärung und wieder zurück zu gehen. Untersuchungen zeigen, dass viele Menschen diese Erfahrung teilen. Wenn ein Datenwissenschaftler den Abschlussbericht eines anderen liest und sich den Code dahinter ansehen möchte, kann es zu großen Reibungsverlusten kommen; manchmal ist es einfach, den Code aufzuspüren, manchmal nicht. Wenn sie versuchen wollen, mit dem Code zu experimentieren und ihn zu erweitern, werden die Dinge natürlich noch schwieriger. Ein anderer Datenwissenschaftler hat vielleicht Ihren Code, aber vielleicht keine identische Konfiguration auf seinem Rechner, und das einzurichten, kostet Zeit.
Der Kreislauf der datenwissenschaftlichen Arbeit.
Warum gibt es so wenig Web in der Wissenschaft?
Vor dem Hintergrund dieser datenwissenschaftlichen Arbeitsabläufe bei Mozilla habe ich Ende 2017 ein Projekt begonnen, das interaktive Datenvisualisierung erforderte. Heute kann man interaktive Visualisierungen mit großartigen Bibliotheken für Python, R und Julia erstellen, aber für das, was ich erreichen wollte, musste ich auf Javascript zurückgreifen. Das bedeutete, dass ich mich von meinen bevorzugten Data-Science-Umgebungen entfernen musste. Moderne Webentwicklungswerkzeuge sind unglaublich leistungsfähig, aber auch extrem kompliziert. Ich wollte wirklich nicht herausfinden, wie man eine vollwertige Javascript-Build-Toolchain mit Hot-Module-Reloading zum Laufen bringt, aber abgesehen davon konnte ich nicht viel finden, das darauf abzielte, saubere, lesbare Webdokumente innerhalb des mir vertrauten iterativen Live-Workflows zu erstellen.
Ich begann mich zu fragen, warum es dieses Tool nicht gab – warum es kein Jupyter für die Erstellung interaktiver Webdokumente gibt – und dachte bald darüber nach, warum fast niemand Javascript für wissenschaftliche Berechnungen verwendet. Drei Gründe sprangen ins Auge:
- Javascript selbst hat unter Wissenschaftlern einen gemischten Ruf, weil es langsam und umständlich ist;
- es gibt nicht viele Bibliotheken für wissenschaftliche Berechnungen, die im Browser laufen oder mit Javascript funktionieren; und,
- wie ich herausgefunden hatte, gibt es nur sehr wenige wissenschaftliche Codierungswerkzeuge, die schnelle Iterationsschleifen ermöglichen und außerdem ungefilterten Zugang zu den Präsentationsmöglichkeiten im Browser gewähren.
Das sind sehr große Herausforderungen. Aber als ich mehr darüber nachdachte, begann ich zu glauben, dass das Arbeiten in einem Browser einige echte Vorteile für die Art von kommunikativer Datenwissenschaft haben könnte, die wir bei Mozilla betreiben. Der größte Vorteil ist natürlich, dass der Browser über die wohl fortschrittlichsten und am besten unterstützten Präsentationstechnologien der Welt verfügt, vom DOM über WebGL und Canvas bis hin zu WebVR.
Als ich über die oben erwähnte Reibung im Arbeitsablauf nachdachte, kam mir ein weiterer potenzieller Vorteil in den Sinn: Im Browser muss das endgültige Dokument nicht von dem Tool getrennt sein, mit dem es erstellt wurde. Ich wollte ein Tool, das Wissenschaftlern bei der Wiederholung von Webdokumenten hilft (im Grunde genommen Einzweck-Webanwendungen zur Erläuterung einer Idee)… und viele der von uns verwendeten Tools waren im Grunde genommen selbst Webanwendungen. Für den Anwendungsfall des Schreibens dieser kleinen Web-App-Dokumente, warum nicht das Dokument mit dem Tool bündeln, mit dem es geschrieben wurde?
Auf diese Weise konnten nicht-technische Leser mein schön aussehendes Dokument sehen, aber andere Datenwissenschaftler konnten sofort auf den ursprünglichen Code zurückgreifen. Da der Rechenkern die JS-Engine des Browsers wäre, könnten sie außerdem sofort mit der Erweiterung und dem Experimentieren mit dem Analysecode beginnen. Und das alles, ohne eine Verbindung zu entfernten Rechenressourcen herstellen oder Software installieren zu müssen.
In Richtung Iodid
Ich begann, mit meinen Kollegen über die potenziellen Vor- und Nachteile des wissenschaftlichen Rechnens im Browser zu diskutieren, und im Laufe unserer Gespräche bemerkten wir einige weitere interessante Trends.
Innerhalb von Mozilla sahen wir eine Menge interessanter Demos, die WebAssembly vorstellten, eine neue Möglichkeit für Browser, Code auszuführen, der in anderen Sprachen als Javascript geschrieben wurde. Mit WebAssembly können Programme mit unglaublicher Geschwindigkeit ausgeführt werden, in einigen Fällen sogar fast so schnell wie native Binärdateien. Wir sahen Beispiele für rechenintensive Prozesse wie ganze 3D-Spiel-Engines, die problemlos im Browser laufen. In Zukunft wäre es möglich, erstklassige C- und C++-Bibliotheken für numerische Berechnungen in WebAssembly zu kompilieren und sie in ergonomische JS-APIs zu verpacken, so wie es das SciPy-Projekt für Python tut. Tatsächlich haben Projekte bereits damit begonnen, dies zu tun.
WebAssembly macht es möglich, Code mit nahezu nativer Geschwindigkeit im Browser auszuführen.
Uns ist auch die Bereitschaft der Javascript-Gemeinschaft aufgefallen, eine neue Syntax einzuführen, wenn dies den Leuten hilft, ihr Problem effektiver zu lösen. Vielleicht wäre es möglich, einige der wichtigsten syntaktischen Elemente nachzuahmen, die die numerische Programmierung in MATLAB, Julia und Python verständlicher und flüssiger machen – Matrixmultiplikation, mehrdimensionales Slicing, Broadcast-Array-Operationen und so weiter. Auch hier trafen wir auf andere, die in eine ähnliche Richtung dachten.
Als diese Fäden zusammenliefen, begannen wir uns zu fragen, ob die Web-Plattform an der Schwelle zu einem produktiven Zuhause für wissenschaftliches Rechnen stehen könnte. Zumindest sah es so aus, als ob sie sich weiterentwickeln könnte, um einige der kommunikativen Arbeitsabläufe zu unterstützen, die wir bei Mozilla (und so viele andere in der Industrie und der Wissenschaft) antreffen. Da sich der Kern von Javascript ständig verbessert und die Möglichkeit besteht, Syntaxerweiterungen für die numerische Programmierung hinzuzufügen, könnte JS vielleicht auch für Wissenschaftler attraktiver gemacht werden. WebAssembly schien einen Weg zu großartigen wissenschaftlichen Bibliotheken zu bieten. Das dritte Bein des Hockers wäre eine Umgebung für die Erstellung datenwissenschaftlicher Dokumente für das Web. Auf dieses letzte Element haben wir uns bei unseren anfänglichen Experimenten konzentriert, was uns zu Iodide führte.
Die Anatomie von Iodide
Iodide ist ein Tool, das Wissenschaftlern einen vertrauten Arbeitsablauf für die Erstellung großartig aussehender interaktiver Dokumente unter Nutzung der vollen Leistungsfähigkeit der Web-Plattform bietet. Dazu stellen wir Ihnen einen „Bericht“ zur Verfügung – im Grunde eine Webseite, die Sie mit Ihren Inhalten füllen können – und einige Werkzeuge, mit denen Sie Daten iterativ untersuchen und Ihren Bericht ändern können, um etwas zu erstellen, das Sie dann weitergeben können. Sobald Sie fertig sind, können Sie einen Link direkt zu Ihrem fertigen Bericht senden. Wenn Ihre Kollegen und Mitarbeiter Ihren Code überprüfen und daraus lernen möchten, können sie mit einem Klick zum Erkundungsmodus zurückkehren. Wenn sie mit dem Code experimentieren und ihn als Grundlage für ihre eigene Arbeit verwenden möchten, können sie ihn mit einem weiteren Klick „forken“ und mit der Arbeit an ihrer eigenen Version beginnen.
Lesen Sie weiter, um mehr über einige der Ideen zu erfahren, mit denen wir versuchen, diesen Arbeitsablauf fließend zu gestalten.
Die Ansichten „Explore“ und „Report“
Iodide zielt darauf ab, den Kreislauf zwischen Exploration, Erklärung und Zusammenarbeit zu schließen. Im Mittelpunkt steht dabei die Möglichkeit, zwischen einem schön anzusehenden Bericht und einer nützlichen Umgebung für die iterative rechnerische Erkundung hin und her zu wechseln.
Wenn Sie zum ersten Mal ein neues Iodide-Notizbuch erstellen, beginnen Sie in der „Erkundungsansicht“. Diese bietet eine Reihe von Fenstern, darunter einen Editor zum Schreiben von Code, eine Konsole zum Anzeigen der Ausgabe des von Ihnen ausgewerteten Codes, einen Arbeitsbereichsbetrachter zum Untersuchen der Variablen, die Sie während Ihrer Sitzung erstellt haben, und ein „Berichtsvorschau“-Fenster, in dem Sie eine Vorschau auf Ihren Bericht sehen können.
Bearbeiten eines Markdown-Codeabschnitts in der Erkundungsansicht von Iodide
Durch Klicken auf die Schaltfläche „BERICHT“ in der oberen rechten Ecke wird der Inhalt Ihrer Berichtsvorschau so erweitert, dass er das gesamte Fenster ausfüllt, so dass Sie die Geschichte, die Sie erzählen möchten, in den Vordergrund stellen können. Leser, die nicht wissen, wie man programmiert, oder die nicht an den technischen Details interessiert sind, können sich auf das konzentrieren, was Sie vermitteln wollen, ohne sich durch den Code wühlen zu müssen. Wenn ein Leser den Link zur Berichtsansicht aufruft, wird Ihr Code automatisch ausgeführt. Wenn er Ihren Code überprüfen möchte, genügt ein Klick auf die Schaltfläche „EXPLORE“ oben rechts, um wieder in die Erkundungsansicht zu gelangen. Von dort aus können sie eine Kopie des Notizbuchs für ihre eigenen Untersuchungen erstellen.
Von der Erkundungs- zur Berichtsansicht wechseln.
Wenn Sie einen Link zu einem Iodid-Notizbuch freigeben, kann Ihr Mitarbeiter immer auf beide Ansichten zugreifen. Das saubere, lesbare Dokument ist nie vom zugrundeliegenden, lauffähigen Code und der Live-Bearbeitungsumgebung getrennt.
Lebendige, interaktive Dokumente mit der Leistungsfähigkeit der Web-Plattform
Iodide-Dokumente werden im Browser angezeigt, was bedeutet, dass die Berechnungsmaschine immer verfügbar ist. Wann immer Sie Ihre Arbeit teilen, teilen Sie einen interaktiven Live-Bericht mit laufendem Code. Da die Berechnungen im Browser parallel zur Präsentation stattfinden, ist es nicht erforderlich, ein Sprach-Backend in einem anderen Prozess aufzurufen. Das bedeutet, dass interaktive Dokumente in Echtzeit aktualisiert werden, was die Möglichkeit nahtloser 3D-Visualisierungen eröffnet, sogar mit der für VR erforderlichen niedrigen Latenz und hohen Bildrate.
Beitragsverfasser Devin Bayly erforscht MRT-Daten seines Gehirns
Freigabe, Zusammenarbeit und Reproduzierbarkeit
Der Aufbau von Iodide im Web vereinfacht eine Reihe von Reibungspunkten im Arbeitsablauf, die wir bei anderen Tools festgestellt haben. Die gemeinsame Nutzung wird vereinfacht, da der Text und der Code unter der gleichen URL verfügbar sind, anstatt beispielsweise einen Link zu einem Skript in die Fußnoten eines Google Docs einzufügen. Die Zusammenarbeit wird vereinfacht, weil der Rechenkern der Browser ist und die Bibliotheken über eine HTTP-Anfrage geladen werden können, wie jede Webseite ein Skript lädt – es müssen keine zusätzlichen Sprachen, Bibliotheken oder Tools installiert werden. Und da Browser eine Kompatibilitätsschicht bieten, müssen Sie sich nicht darum kümmern, dass das Verhalten von Notizbüchern auf verschiedenen Computern und Betriebssystemen reproduzierbar ist.
Um kollaborative Arbeitsabläufe zu unterstützen, haben wir einen recht einfachen Server zum Speichern und Freigeben von Notizbüchern entwickelt. Es gibt eine öffentliche Instanz unter iodide.io, wo Sie mit Iodide experimentieren und Ihre Arbeit öffentlich teilen können. Es ist auch möglich, eine eigene Instanz hinter einer Firewall einzurichten (und in der Tat ist es das, was wir bei Mozilla für einige interne Arbeiten bereits tun). Wichtig ist jedoch, dass die Notebooks selbst nicht stark an eine einzelne Instanz des Iodide-Servers gebunden sind. Sollte der Bedarf entstehen, sollte es einfach sein, Ihre Arbeit auf einen anderen Server zu migrieren oder Ihr Notizbuch als Bündel zu exportieren, um es auf anderen Diensten wie Netlify oder Github Pages zu teilen (mehr zum Exportieren von Bündeln weiter unten unter „Was kommt als nächstes?“). Dadurch, dass wir die Berechnungen im Client belassen, können wir uns darauf konzentrieren, eine wirklich großartige Umgebung für den Austausch und die Zusammenarbeit zu schaffen, ohne Rechenressourcen in der Cloud aufbauen zu müssen.
Pyodide: Der Python Science Stack im Browser
Als wir anfingen, darüber nachzudenken, wie wir das Web für Wissenschaftler besser machen könnten, konzentrierten wir uns auf Möglichkeiten, die Arbeit mit Javascript zu verbessern, wie die Kompilierung bestehender wissenschaftlicher Bibliotheken in WebAssembly und deren Einbettung in einfach zu verwendende JS-APIs. Als wir dies den WebAssembly-Assistenten von Mozilla vorschlugen, boten sie uns eine noch ehrgeizigere Idee an: Wenn viele Wissenschaftler Python bevorzugen, sollten wir sie dort abholen, wo sie sind, indem wir den wissenschaftlichen Python-Stack so kompilieren, dass er in WebAssembly läuft.
Wir dachten, dass dies entmutigend klingen würde – dass es ein enormes Projekt sein würde und dass es niemals eine zufriedenstellende Leistung liefern würde… aber zwei Wochen später hatte Mike Droettboom eine funktionierende Implementierung von Python, die in einem Iodide-Notizbuch lief. In den nächsten Monaten fügten wir Numpy, Pandas und Matplotlib hinzu, die bei weitem die meistgenutzten Module im wissenschaftlichen Ökosystem von Python sind. Mit Hilfe von Kirill Smelkov und Roman Yurchak von Nexedi haben wir die Unterstützung für Scipy und scikit-learn erreicht. Seitdem haben wir nach und nach weitere Bibliotheken hinzugefügt.
Die Ausführung des Python-Interpreters in einer virtuellen Javascript-Maschine bringt einen Leistungsnachteil mit sich, der sich jedoch als überraschend gering herausstellt – in unseren Benchmarks ist er etwa 1x-12x langsamer als die native Version in Firefox und 1x-16x langsamer in Chrome. Die Erfahrung zeigt, dass dies für die interaktive Erkundung sehr nützlich ist.
Die Ausführung von Matplotlib im Browser ermöglicht die interaktiven Funktionen, die in statischen Umgebungen nicht verfügbar sind
Die Integration von Python in den Browser schafft einige magische Arbeitsabläufe. Zum Beispiel können Sie Ihre Daten in Python importieren und bereinigen und dann von Javascript aus auf die resultierenden Python-Objekte zugreifen (in den meisten Fällen geschieht die Konvertierung automatisch), so dass Sie sie mit JS-Bibliotheken wie d3 anzeigen können. Auf noch magischere Weise können Sie von Python-Code aus auf Browser-APIs zugreifen, so dass Sie z. B. das DOM manipulieren können, ohne Javascript zu berühren.
Natürlich gibt es noch viel mehr über Pyodide zu sagen, und es verdient einen eigenen Artikel – wir werden in einem Folgebeitrag im nächsten Monat noch mehr ins Detail gehen.
JSMD (JavaScript MarkDown)
Genauso wie in Jupyter und dem R-Markdown-Modus von R können Sie in Iodide Code und Text nach Belieben verschachteln, indem Sie Ihren Code in „Code-Bausteine“ aufteilen, die Sie ändern und als separate Einheiten ausführen können. Unsere Implementierung dieser Idee weist Parallelen zum „Zellmodus“ von R Markdown und MATLAB auf: Anstatt eine explizit zellbasierte Schnittstelle zu verwenden, ist der Inhalt eines Iodide-Notizbuchs einfach ein Textdokument, das eine spezielle Syntax zur Abgrenzung bestimmter Zelltypen verwendet. Wir nennen dieses Textformat „JSMD“.
In Anlehnung an MATLAB werden Code Chunks durch Zeilen definiert, die mit %%
beginnen, gefolgt von einer Zeichenkette, die die Sprache des darunter liegenden Chunks angibt. Wir unterstützen derzeit Chunks, die Javascript, CSS, Markdown (und HTML), Python, einen speziellen „Fetch“-Chunk, der das Laden von Ressourcen vereinfacht, und einen Plugin-Chunk, mit dem Sie die Funktionalität von Iodide durch Hinzufügen neuer Zelltypen erweitern können.
Wir haben festgestellt, dass dieses Format sehr praktisch ist. Es macht es einfach, textorientierte Werkzeuge wie Diff-Viewer und Ihren eigenen Lieblings-Texteditor zu verwenden, und Sie können Standard-Textoperationen wie Ausschneiden/Kopieren/Einfügen durchführen, ohne Tastenkombinationen für die Zellenverwaltung lernen zu müssen. Weitere Details zu JSMD finden Sie in unserer Dokumentation.
Was kommt als Nächstes?
Es lohnt sich zu wiederholen, dass wir uns immer noch in der Alpha-Phase befinden, so dass wir weiterhin an der Optimierung arbeiten und Bugs beseitigen werden. Außerdem haben wir eine Reihe von Funktionen im Sinn, die wir in der nächsten Runde ausprobieren wollen. Wenn Ihnen eine dieser Ideen besonders nützlich erscheint, lassen Sie es uns wissen! Noch besser wäre es, wenn du uns bei der Entwicklung helfen würdest!
Erweiterte Funktionen für die Zusammenarbeit
Wie bereits erwähnt, haben wir bisher ein sehr einfaches Backend gebaut, das es dir ermöglicht, deine Arbeit online zu speichern, die Arbeit anderer Leute zu betrachten und bestehende Notizbücher anderer Benutzer schnell zu faken und zu erweitern.
Die nächsten drei großen Funktionen für die Zusammenarbeit, die wir hinzufügen möchten, sind:
- Kommentar-Threads im Stil von Google Docs
- Die Möglichkeit, Änderungen am Notizbuch eines anderen Nutzers über einen Fork/Merge-Workflow vorzuschlagen, ähnlich wie bei Github Pull Requests
- Gleichzeitige Bearbeitung von Notizbüchern wie bei Google Docs.
Zum jetzigen Zeitpunkt setzen wir die Prioritäten ungefähr in dieser Reihenfolge, aber wenn ihr sie in einer anderen Reihenfolge angehen wollt oder andere Vorschläge habt, lasst es uns wissen!
Mehr Sprachen!
Wir haben mit Leuten aus der R- und Julia-Gemeinschaft über die Kompilierung dieser Sprachen zu WebAssembly gesprochen, was ihre Verwendung in Iodide und anderen browserbasierten Projekten ermöglichen würde. Unsere ersten Untersuchungen zeigen, dass dies machbar sein sollte, aber dass die Implementierung dieser Sprachen etwas schwieriger sein könnte als Python. Wie bei Python eröffnen sich einige coole Arbeitsabläufe, wenn man z. B. statistische Modelle in R anpassen oder Differentialgleichungen in Julia lösen und die Ergebnisse dann über Browser-APIs anzeigen kann. Wenn Sie daran interessiert sind, diese Sprachen ins Web zu bringen, melden Sie sich bitte bei uns – insbesondere würden wir uns über Hilfe von FORTRAN- und LLVM-Experten freuen.
Exportieren Sie das Notebook-Archiv
Frühe Versionen von Iodide waren in sich geschlossene, lauffähige HTML-Dateien, die sowohl den JSMD-Code für die Analyse als auch den JS-Code für die Ausführung von Iodide selbst enthielten, aber wir sind von dieser Architektur abgerückt. Spätere Experimente haben uns davon überzeugt, dass die Vorteile der Zusammenarbeit mit einem Iodide-Server die Vorteile der Verwaltung von Dateien auf Ihrem lokalen System überwiegen. Nichtsdestotrotz haben uns diese Experimente gezeigt, dass es möglich ist, einen lauffähigen Schnappschuss eines Iodide-Notizbuchs zu erstellen, indem man den Iodide-Code zusammen mit allen Daten und Bibliotheken, die von einem Notizbuch verwendet werden, in eine große HTML-Datei packt. Dies könnte eine größere Datei sein, als man normalen Benutzern zur Verfügung stellen möchte, aber es könnte sich als ein perfekt reproduzierbarer und archivierbarer Schnappschuss einer Analyse als nützlich erweisen.
Iodide to text editor browser extension
Während viele Wissenschaftler daran gewöhnt sind, in browserbasierten Programmierumgebungen zu arbeiten, wissen wir, dass einige Leute niemals Code in etwas anderem als ihrem Lieblingstexteditor bearbeiten werden. Wir möchten, dass Iodide die Menschen dort abholt, wo sie sich bereits befinden, einschließlich derer, die ihren Code lieber in einem anderen Editor eingeben, aber Zugang zu den interaktiven und iterativen Funktionen von Iodide haben möchten. Um dieses Bedürfnis zu befriedigen, haben wir begonnen, über eine leichtgewichtige Browsererweiterung und einige einfache APIs nachzudenken, die es Iodide ermöglichen, mit clientseitigen Editoren zu kommunizieren.
Feedback und Zusammenarbeit willkommen!
Wir versuchen nicht, alle Probleme der Datenwissenschaft und des wissenschaftlichen Rechnens zu lösen, und wir wissen, dass Iodide nicht jedermanns Sache sein wird. Wenn Sie Terabytes von Daten auf GPU-Clustern verarbeiten müssen, hat Iodide Ihnen wahrscheinlich nicht viel zu bieten. Wenn Sie Zeitschriftenartikel veröffentlichen und nur ein LaTeX-Dokument schreiben müssen, dann gibt es bessere Werkzeuge für Ihre Bedürfnisse. Wenn der ganze Trend, Dinge in den Browser zu bringen, Sie ein wenig erschaudern lässt, kein Problem – es gibt eine Vielzahl von wirklich erstaunlichen Tools, die Sie für die Wissenschaft verwenden können, und dafür sind wir dankbar! Wir wollen die Arbeitsweise von niemandem ändern, und für viele Wissenschaftler ist die webbasierte Kommunikation nebensächlich. Toll! Lebe dein bestes Leben!
Aber für die Wissenschaftler, die Inhalte für das Web produzieren, und für diejenigen, die das gerne tun würden, wenn sie Werkzeuge hätten, die ihre Arbeitsweise unterstützen: Wir würden wirklich gerne von Ihnen hören!
Besuchen Sie iodide.io, probieren Sie es aus und geben Sie uns Feedback (aber noch einmal: Denken Sie daran, dass sich dieses Projekt in der Alpha-Phase befindet – bitte verwenden Sie es nicht für kritische Arbeiten, und seien Sie sich bewusst, dass sich während der Alpha-Phase alles ändern kann). Sie können an unserer kurzen Umfrage teilnehmen, und Github-Themen und Fehlerberichte sind sehr willkommen. Feature-Anfragen und Gedanken zur allgemeinen Richtung können über unsere Google-Gruppe oder Gitter ausgetauscht werden.
Wenn Sie uns bei der Entwicklung von Iodide helfen möchten, sind wir Open Source auf Github. Iodide berührt eine Vielzahl von Software-Disziplinen, von moderner Frontend-Entwicklung über wissenschaftliches Rechnen bis hin zu Kompilierung und Transpilierung, es gibt also eine Menge interessanter Dinge zu tun! Bitte melden Sie sich, wenn Sie etwas davon interessiert!
Riesengroßen Dank an Hamilton Ulmer, William Lachance und Mike Droettboom für ihre großartige Arbeit an Iodide und für die Durchsicht dieses Artikels.
Über Brendan Colloran
Weitere Artikel von Brendan Colloran…