Bewerbung bei Prototypefund
2017-10-02 22:35
Update 2017-10-06: There's also an English translation of this blog post now.
Ich habe mich für die dritte Runde des Prototypefund mit Noise beworben (vielen Dank an alle die Korrektur gelesen haben). Nachdem Jon seine Bewerbung mit Transforlabs veröffentlicht hat, will ich diesem Beispiel folgen und meine auch online stellen. Zudem bin ich Transparenz-Fan und natürlich auch neugierig was andere so geschrieben haben. Und obendrein gibt es noch eine Idee wohin die Reise mit Noise gehen könnte.
An welchen Open-Source-Projekten hast Du bisher gearbeitet?
- GeoCouch (selbst initiiert): Ein geo/multidimensionaler Index für Apache CouchDB und Couchbase https://github.com/couchbase/geocouch
- Libpnet: Cross-Platform, Low-Level-Networking in Rust https://github.com/libpnet/libpnet/commits?author=vmx
- Cwrap: Automatische Generierung von Cython Deklarationen von C/C++ Header-Dateien: https://github.com/geggo/cwrap/commits?author=vmx
Wie bezieht sich Dein Projekt auf den Themenschwerpunkt der 3. Runde?
Noise bietet Menschen die keine Computexpert_innen sind, die Möglichkeit selbst Datenanalysen durchzuführen. Meiner Erfahrung nach ist dies bisher meist einer kleinen Gruppe vorbehalten – Entwickler_innen – die wissen, wie sie mit Rohdaten umzugehen haben. Sollte man nicht die Auswertung der Datenschätze einer größeren Benutzergruppe eröffnen? Zum Beipiel Personen, die sich Grundkenntnisse im Programmieren angeeignet haben, denen aber tiefergehende Kenntnisse über die Funktionsweise oder Administration von Datenbanken fehlen. Für all jene sollte es möglich sein, die Daten ganz einfach innerhalb ihrer gewohnten Umgebung einzuspielen, um anschließend direkt mit der Analyse beginnen zu können.
Welches gesellschaftliche Problem willst Du mit Deinem Projekt lösen?
Durch die Open-Data Bewegung findet eine Demokratisierung der Datenwelt statt. Diese bietet großes Potential für freiere Meinungsbildung und mehr Selbstbestimmtheit. Aussagen und Fakten können direkt nachvollzogen und verifiziert werden. Allerdings muss dieses Potential noch besser ausgeschöpft werden. Das alleinige vorhanden sein der Daten reicht dafür nicht aus. Eine zentrale Herausforderung besteht darin Softwarelösungen zu schaffen, um die Analyse der Daten zugänglicher zu gestalten.
Wie willst Du Dein Projekt technisch umsetzen?
Noise ist eine in Rust geschriebene Bibliothek zum Durchsuchen und Analysieren von Daten im JSON-Format. Es gibt schon eine erste funktionsfähige Version. Die unterste Ebene des Systems bildet Facebooks Key-Value-Store RocksDB, das angepasst wurde, um räumliche Anfragen zu unterstützen. Grundlage für die Integration mit anderen Programmier-/Scriptsprachen bildet eine C-API. Damit wäre es auch denkbar, Noise als Backend/Treiber für Projekte wie GDAL oder R zu nutzen. Das Zusammenspiel mit Programmier-/Scriptsprachen hört aber nicht bei der API auf. Mittlerweile haben die meisten Sprachen ein ganzes Ökosystem mit einem Paketmanager. Daher ist es wichtig, dass Noise über die nativen Installationsmechanismen der jeweiligen Umgebung installiert werden kann. Dadurch wird auch der Einstieg erleichtert. Bei Node.js funktioniert dies bereits per "npm install noise-search".
Welche ähnlichen Lösungen gibt es schon, und was wird Dein Projekt anders bzw. besser machen?
Apache Lucene ist eine Bibliothek zur Volltext-Suche. Da sie sehr low-level ist, wird sie meist nicht direkt, sondern in Verbindung mit Elasticsearch/Apache Solr verwendet. Noise befindet sich im Gegensatz zu Apache Lucene auf einer höheren Ebene und arbeitet mit Daten im JSON Format, deren Verarbeitung/Analyse mit Hilfe einer einfachen Querysprache stattfindet.
Wer ist die Zielgruppe, und wie soll Dein Tool sie erreichen?
Die Zielgruppe sind Personen mit Grundkenntnissen im Programmieren. Dies können zum einen Wissenschaftler_innen sein, die Analysen für ihre empirischen Studien machen. Zum anderen aber auch Bürger_innen der Zivilgesellschaft, die einen Sachverhalt genauer unter die Lupe nehmen wollen. Durch die Integration in verschiedene Programmier-/Scriptsprachen ist Noise dort nur eine weitere Abhängigkeit/Bibliothek und somit sehr leicht über die jeweiligen Paketmanager aufzufinden und zu installieren.
Hast Du schon an der Idee gearbeitet? Wenn ja, beschreibe kurz den aktuellen Stand und erkläre die Neuerung.
Die erste Version unterstützt bereits grundlegende Volltext-Suche, zudem können Zahlbereichsanfragen und räumliche Anfragen auf Geodaten (GeoJSON) gemacht werden. Die nächsten Schritte bestehen darin, das System robuster zu machen und weitere Schnittstellen zu schaffen. Der bereits bestehenden Node.js API könnte beispielsweise eine für Python folgen. Auch sollen kleine Analyseprojekte durchgeführt werden, um die Fähigkeiten von Noise zu demonstrieren. Diese können dann in Form von Tutorials aufgearbeitet werden und dadurch den Einstieg wiederum erleichtern.
Skizziere kurz die wichtigsten Meilensteine, die Du im Förderzeitraum umsetzen willst.
- C-API: Umwandlung der bisherigen Node.js API, die auf Rust aufsetzt, in eine saubere C-API.
- Python API: Tiefgreifende Integration wie bei der Node.js API, um eine einfache Installation per Paketmanager zu ermöglichen.
- Mehr Beispiele/Dokumentation: Kleine Beispielprojekte, die in Form von Tutorials dokumentiert werden, um die Konzepte von Noise zugänglicher zu machen.
- Interne Verbesserungen: Der sehr eng mit dem Rest des Systems verbundene Query-Parser soll entflochten werden, u. a. für bessere Fehlermeldungen.
- Benchmarks: Benchmarks sollen Regressionen verhindern und eine Möglichkeit bieten, Noise mit anderen Systemen zu vergleichen.