# Project Jupyter

Project Jupyter ([ˈdʒuːpɪtər] ) ist der Herausgeber von Softwareprodukten für interaktive wissenschaftliche Datenauswertung und wissenschaftliche Berechnungen. Der Name Jupyter bezieht sich auf die drei wesentlichen Programmiersprachen Julia, Python und R und ist auch eine Hommage an Galileis Notizbucheinträge zur Entdeckung der Jupitermonde, bei denen Galilei Beobachtungen und Messdaten zusammen mit Metadaten darstellte. Project Jupyter hat die Produkte Jupyter Notebook, JupyterHub und JupyterLab entwickelt.

## Philosophie

Herausgeber ist eine Non-Profit-Organisation, die gegründet wurde, um Open-Source-Software, offene Standards und Services für interaktives Arbeiten mit Dutzenden Programmiersprachen zu entwickeln. Das Projekt Jupyter unterstützt interaktive wissenschaftliche Datenauswertungen und wissenschaftliche Berechnungen mit allen Programmiersprachen durch die Entwicklung von Open-Source-Software. „Jupyter wird immer 100 % Open-Source-Software sein, für alle frei zu benutzen unter einer modifizierten BSD-Lizenz.“

## Geschichte

Im Jahr 2014 gab Fernando Pérez eine Ausgliederung aus dem Projekt IPython bekannt mit dem neuen Namen Project Jupyter. IPython existiert weiter als Python Shell und Kernel für Jupyter, während das Notebook und andere sprachunabhängige Teile nun unter dem Namen Jupyter weiterentwickelt werden. Jupyter ist sprachunabhängig und unterstützt die Ausführung vieler verschiedener Sprachen wie Julia, R, Haskell, Ruby und Python (über den IPython-Kernel).
Im Jahr 2015 gaben GitHub und das Project Jupyter bekannt, dass das Dateiformat des Jupyter Notebooks auf der GitHub-Plattform unterstützt wird.

## Produkte
### Jupyter Notebook

Jupyter Notebook (früher IPython Notebooks) ist eine Webanwendung, die Jupyter-Notebook-Dokumente erstellen und bearbeiten kann.
Ein Jupyter-Notebook-Dokument ist ein JSON-Dokument, das aus einer Liste von Eingabe- und Ausgabezellen besteht. Es kann jeweils Code, Text und Graphen oder Diagramme (Plots) enthalten. Es ist versioniert. Seine Dateiendung ist „.ipynb“. Ein Jupyter-Notebook-Dokument kann in verschiedene Formate konvertiert und ausgegeben werden, z. B. HTML, PDF, LaTeX und Folien für Präsentationen.
Die Webanwendung Jupyter Notebook bietet im Browser ausgeführt eine Schleife aus Eingabe, Ausführung und Ausgabe. Sie baut dabei auf weit verbreitete Open-Source-Programmbibliotheken auf:
* IPython – Kommandozeileninterpreter zum interaktiven Arbeiten mit der Programmiersprache Python
* ZeroMQ – asynchrone Nachrichtenaustauschbibliothek für High-throughput computing
* Tornado – nicht blockierender Webserver sowie ein einfaches Mikro-Webframework in Python
* jQuery – JavaScript-Bibliothek, die Funktionen zur DOM-Navigation und -Manipulation zur Verfügung stellt
* Bootstrap – Frontend-CSS-Framework mit Gestaltungsvorlagen für Navigations- und andere Oberflächengestaltungselemente
* MathJax – JavaScript-Bibliothek, die mathematische Formeln und Gleichungen, die in LaTeX und MathML Markup geschrieben wurden, in Webbrowsern grafisch darstellt
Jupyter Notebook unterstützt verschiedene Programmiersprachen. Als Standard wird die Programmiersprache Python unterstützt. Hierzu wird es vom Team des Projekts Jupyter mit dem IPython-Programmiersprachen-Kernel, genannt: ipykernel, ausgeliefert. Die Entwickler-Community des Project Jupyter bietet verschiedene Kernel an, um die Programmierung bzw. interaktive Ausführung von Anweisungen in anderen Programmiersprachen zu unterstützen.

### Jupyter Kernel

Ein Jupyter Kernel ist ein Programm, das verschiedene Arten von Anfragen bearbeitet (Ausführung von Code, Code-Vervollständigung und Code-Inspektion) und Antworten zurückschickt. Da Kernels über ZeroMQ kommunizieren, können sie auf der gleichen Maschine oder auf anderen Maschinen im Netzwerk laufen. Kernels erkennen nicht, mit welchem Dokument sie verbunden sind, und können von vielen Clients aufgerufen werden. In der Regel ist ein Kernel für eine Programmiersprache ausgelegt.
Der Kernel für Python wird mit ausgeliefert. Im Dezember 2019 existierten 137 Kernels für verschiedene Programmiersprachen.

### JupyterHub

Ein JupyterHub ist ein Multi-User-Server für Jupyter Notebooks.

### JupyterLab

Das JupyterLab ist das Nachfolgeprodukt für die Benutzeroberfläche. Es bietet die Elemente des Jupyter Notebooks in einer flexiblen Benutzeroberfläche. Das erste Release wurde am 20. Februar 2018 angekündigt.

## Medienberichte

* Am 11. Februar 2016 gab LIGO die erste Beobachtung von Gravitationswellen bekannt. Mit den Rohdaten wurden auch Jupyter Notebooks veröffentlicht, mit denen die Daten verarbeitet wurden, damit die Analyse der Daten nachvollzogen werden kann.
* Am 5. April 2018 veröffentlichte The Atlantic einen Artikel über die Bedeutung von Jupyter Notebooks und Mathematica Notebooks für zukünftige wissenschaftliche Veröffentlichungen.

## Auszeichnungen und Zuwendungen

* 2012 erhielt Fernando Pérez den FSF Award für seine Arbeit an IPython, dem Vorgänger von Project Jupyter.
* 2013 erhielt das IPython-Team eine Zuwendung von 1,15 Millionen US-Dollar von der Alfred P. Sloan Foundation. Hiermit wurde die frühe Arbeit finanziert, die zum Project Jupyter führte.
* 2015 erhielt das Project Jupyter eine Zuwendung von 6 Millionen US-Dollar von The Leona M. and Harry B. Helmsley Charitable Trust, Gordon and Betty Moore Foundation und Alfred P. Sloan Foundation. Damit wurde die Weiterentwicklung der Jupyter Tools und die Neuentwicklung des JupyterLabs finanziert.
* Am 2. Mai 2018 wurde dem Lenkungsausschuss des Project Jupyter der ACM Software System Award verliehen „für die Entwicklung einer Software, die einen langfristigen Einfluss hat, der sich als Beitrag zu Konzepten, kommerzieller Akzeptanz oder beidem widerspiegelt.“