Wikifunctions:Über

From Wikifunctions
This page is a translated version of the page Wikifunctions:About and the translation is 100% complete.
Wikifunctions erstes Ziel ist es, die Wikimedia-Projekte zu unterstützen, aber es wird darüber hinausgehende Ziele unterstützen, genau wie bei Wikidata. Dies ist eine Beschreibung von Wikifunctions über Wikipedia hinaus.
Leitgedanke
Ein Wikimedia-Projekt für jedermann zur gemeinschaftlichen Erstellung und Pflege einer Bibliothek von Code-Funktionen zur Unterstützung der Wikimedia-Projekte und darüber hinaus, für jedermann zum Aufruf und zur Wiederverwendung in den natürlichen und Programmiersprachen der Welt.

Wikifunctions ist ein offenes Code-Repositorium, das jeder nutzen und zu dem jeder beitragen kann.

Jede Seite in Wikifunctions stellt eine Funktion dar. Eine Funktion hat eine Beschreibung auf vielen Sprachen, eine Liste von Parametern, Testfälle, eine Liste von Implementierungen in verschiedenen Programmiersprachen und weitere Metadaten, alles in mehreren Sprachen (die von Wikipedia unterstützt werden). Die Implementierungen können in anderen Softwareprojekten (privaten Apps oder Skripten) wiederverwendet, online aufgerufen und ausgeführt werden (entweder nur im Browser oder in einer Cloud-Umgebung oder auf Jupyter[1]- oder PAWS[2]-Notebooks), zu komplexeren Funktionen zusammengestellt, signiert, analysiert oder validiert werden und vieles mehr.

Wikifunctions ist ein Projekt im Geiste von Wikipedia, Wikidata, Wiktionary und anderen ähnlichen Projekten: Es ermöglicht Mitwirkenden aus aller Welt, eine mehrsprachige Bibliothek von Funktionen zu erstellen und zu pflegen, die von jedem für jeden Zweck verwendet werden können. Jede Funktion kann durch mehrere Implementierungen in verschiedenen Programmiersprachen, Testfälle, Vor- und Nachherbedingungen, Dokumentation, Metadaten in Form von Laufzeitschätzungen und durch Komplexitätsgarantien für die verschiedenen Implementierungen usw. unterstützt werden. Benutzer können eine Funktion direkt auf der Website oder aus eigenem Code oder eigenen Anwendungen, über eine Kommandozeilenschnittstelle (CLI) oder eine lokale App aufrufen. Die Funktion kann lokal im Browser, in der Cloud oder lokal und eingebettet in der Anwendung des Benutzers ausgeführt werden.

Wikifunctions soll sowohl einen wohldefinierten gemeinsamen Katalog von Funktionen, die in großem Umfang wiederverwendet werden können, wie auch eine Umgebung schaffen, in der Funktionen schnell kombiniert und "on the fly" ausgeführt werden können. Wikifunctions zielt darauf ab, das Leben für Entwickler zu erleichtern, die sich auf dieses Repositorium wie auf jede externe Bibliothek verlassen können. Ebenso soll sie Endbenutzern das Leben erleichtern, die Funktionen nach Bedarf auf eine Art und Weise aufrufen können, die derzeit nur mit einer sehr ungleichmäßigen Abdeckung durch spezifische Websites verfügbar ist, die oft in Form von 1990er Websites mit Java-Applets geschrieben sind.

Alle Funktionen sind rein, um eine sichere Ausführung in der Sandbox zu ermöglichen. Außerdem kann jede Implementierung mit Metadaten kommentiert und kryptografisch signiert werden. Endbenutzer können je nach verfügbaren Hardwareressourcen und Web-of-Trust-Einstellungen auswählen und prüfen, welche Implementierung der einzelnen Funktionen verwendet werden soll.

Wikifunctions wird einen einfachen Zugriff auf große Wissensdatenbanken wie Wikidata ermöglichen, aber auch auf binäre Ein- und Ausgabedateien. Es ist durchaus möglich, ein Bild als Eingabedatei hochzuladen und Analyseergebnisse zurückzuliefern, z. B. was auf dem Bild abgebildet ist oder wie viele verschiedene Farben das Bild hat - oder eine andere Binärdatei, z. B. in einem anderen Format. Dies wird den Workflows auf Wikimedia Commons zur Verfügung gestellt.

Wikifunctions setzt die Tradition fort, mehr Berechnungen, die normalerweise auf der Kommandozeile oder mit Apps von mehr erfahreneren Computernutzern stattgefunden haben, ins Web zu verlagern und den Zugang zu Funktionen zu demokratisieren, die vorher nicht verfügbar waren. Gleichzeitig wird es die Produktivität von Entwicklern überall erhöhen, da sie einfach eine große Code-Bibliothek nutzen können, anstatt sich auf das Kopieren und Einfügen aus StackOverflow zu verlassen.

Anders als in der Wikipedia werden die Mitwirkenden meist neue Implementierungen für eine Funktion erstellen, anstatt bestehende Funktionen zu aktualisieren. Die Implementierungen können automatisch gegen die vorgegebenen Tests und gegeneinander getestet und weiter analysiert werden.

Implementierungen können in einer Reihe verschiedener Programmiersprachen geschrieben werden und dennoch in der Lage sein, Funktionen aufzurufen, die in anderen Programmiersprachen implementiert sind. Die Ausführungsengine kann reibungslos (wenn auch nicht unbedingt mit der höchstmöglichen Leistung) in verschiedenen Sprachen arbeiten. Obwohl in den meisten Fällen eine große Leistungssteigerung durch das Zusammenstellen von Funktionen innerhalb einer einzigen Programmiersprache erzielt wird, ist dies nicht zwingend erforderlich. In vielen Fällen werden die Entwicklungsgeschwindigkeit und die Zeit des Entwicklers wertvoller sein als die zusätzlichen Computerzyklen, die in der Ausführungsengine verbracht werden.

Einzelnachweise

  1. m:WikiCite 2017/Jupyter notebooks on Wikimedia sites
  2. PAWS