Stigs

Aus Bennis Wiki
Wechseln zu: Navigation, Suche
Lastenheft
Universelles Stigmergisches Allokationssystem (USA)

Dieses Dokument beschreibt die Funktionen, die das USA in seiner ersten benutzbaren Version haben soll. Als Grundlage dient dabei der Artikel von Benni: http://keimform.de/2013/ein-universelles-stigmergisches-allokationsystem/

Weitere Ressourcen:

  • Pad
  • Irc: #freie-gesellschaft auf freenode.

Was das System nicht ist

Es geht nicht einfach nur darum einfach Angebot und Nachfrage zusammen zu bringen. Wenn das funktioniert, ist es gut, aber schon ein Wunsch, der einfach nur geäußert wird, ist ein Gewinn. Es geht mindestens so sehr um das Bewusst- und Bekanntmachen von Bedürfnissen als um die Vermittlung von Bedürfnissen und Fähigkeiten.

Stigs

Das System soll sogenannte Stigs erfassen können. Darunter kann man sich die Atome des Systems vorstellen. Es sind quasi atomare Bedürfnisse, die als solche von den Benutzern angelegt werden. Ein Stig ist eine Aussage über einen Wunsch.

Das System soll in der Lage sein, diese Stigs

  • zu erfassen, auch auf mobilen Geräten.
  • Zu speichern auf einem zentralen Server.
  • Durchsuchbar zu machen, auch von mobilen Geräten aus.

Ein Stig enthält mindestens folgende Daten:

  • Eine Nicht-Leere Liste von frei wählbaren Stichworten (Tags)
  • Einen Ort, dabei kann ein Ort eines der folgenden sein:
    • Eine konstante Geo-Koordinate
    • Eine sich verändernde Geo-Koordinate (z.B. an ein mobiles Gerät gebunden)
    • Eine URL
  • Eine Person, als Erstellerin des Stigs.

zusätzlich kann es noch folgende Daten enthalten:

  • Eine Beschreibung
  • Eine eventuell vom Default-Wert abweichende Zeit zu der der Stig nicht mehr gültig ist.
  • Eine Einschränkung der Sichtbarkeit, in einer der folgenden Formen
    • nur für Freunde
    • nur für Mitglieder einer Gruppe von Personen

Soziales Netzwerk

Das System soll ein klassisches soziales Netzwerk abbilden können, in dem es entweder selber eines anbietet, oder sich auf bestehende Plattformen bezieht. Es sind nur die absoluten Kernfunktionen eines solchen Netzwerkes nötig:

  • Anlegen und Betrachten von Profilseiten durch Personen. Dabei ist die Angabe einer Kontaktmöglichkeit zwingend.
  • Bidirektionale bestätigte Verknüpfung von Profilen als „Freunde“.
  • Anlegen und Betrachten von bestätigten Gruppen von Personen. Offen oder Geschlossen.
  • Authentifizierung
  • eine Eindeutige, globale ID

Alles was man ansonsten üblicherweise in sozialen Netzwerken macht, also das Teilen von Beiträgen oder deren Diskussion ist keine Kernfunktionalität des USA. Es geht hier nur um die Verknüpfung von Stigs mit Personen und deren Umfeld.

Suchen

Das USA soll das Suchen im Datenbestand der Stigs ermöglichen. Eine Suchanfrage enthält dabei mindestens Folgendes:

  • Eine nicht-leere Liste von Stichworten.

Zusätzlich kann eine Suchanfrage noch enthalten:

  • Weitere nicht-leere Listen von Tags (die mit der ursprünglichen Liste Oder-Verknüpft werden)
  • Eine nicht-leere Liste von Tags (die die Suche ausschließend beeinflussen)
  • (klären: sind beliebige boolsche Verknüpfungen von Tags nötig oder ist das eine Überfrachtung?)
  • Einen Ort und einen maximalen Abstand der zu findenden Stigs von diesem Ort.
  • Eine Einschränkung der Personen, deren Stigs man finden will (Freunde, Gruppen, Alle).
  • Ein maximales Alter des Stigs abweichend vom Default-Wert.
  • Einen Schalter, der anzeigt, dass diese Suche in regelmäßigen Abständen wiederholt werden und die/der Suchende benachrichtigt werden soll, wenn es Treffer gibt.

Protokoll

Es soll ein http-basiertes Protokoll implementiert werden, dass diese Funktionen auf der zentralen Datenbank ermöglicht. Dieses soll in Form einer API anderen (evntl. auch mobilen) Anwendungen zur Verfügung gestellt werden. Beim Design dieses Protokolls ist besondere Sorgfalt angesagt, weil sich das natürlich möglichst selten ändern soll.

Server

Bei Design und Implementierung des Servers sind insbesondere folgende Punkte zu beachten:

  • Skalierbarkeit. Große Mengen an Suchanfragen und Stigs sollen nur langsam steigende Hardwareanforderungen mit sich bringen (So weit das algorithmentheoretisch möglich ist).
  • Dezentralisierbarkeit. Diese erste Version des Servers, die hier beschrieben wird, soll noch nicht selber verteilt arbeiten, aber bei Design und Implementierung ist darauf zu achten, dass einer zukünftigen Dezentralisierung keine großen Hürden in den Weg gelegt werden. Dezentralisierung soll also nicht imlementiert, aber im Hinterkopf schon mitgedacht werden.
  • Erweiterbarkeit. Ein Plugin-System soll es ermöglichen das USA um weitere Funktionalitäten zu erweitern. Dabei geht es aber nicht darum, das USA um beliebige Funktionalitäten erweitern zu können, sondern es gilt im Entwurfsprozeß möglichst wenige Stellen zu definieren, an denen möglichst viel Funktionalität andocken kann. In der Definition des Protokolls sollen diese Erweiterungsmöglichkeiten Berücksichtigung finden können.
  • Lizenz: AGPL.
  • Sprachen und Plattformen, die zur Implementierung verwendet werden, sollen nicht exotisch sein und so möglichst vielen Anderen Mitarbeit ermöglichen.

Clients

Prinzipiell sind beliebige Clients denkbar. Es soll aber auf jeden Fall eine mobil bedienbare Version geben und eine normale Webseite. In beiden Fällen ist Einfachkeit das oberste Prinzip. Lieber verzichtet man auf Funktionen, als das man zusätzliche Hürden bei der Erstellung eines Stigs aufbaut.

Die mobile Version sollte mit den verbreiteten Plattformen funktionieren, in erster Linie mit Android. Ob das in Gestalt einer App oder einer normalen für Mobilgeräte optimierten Webseite passiert, ist zu entscheiden. Für projekteigene Clients verwenden wir die GPL.

Ein USA-Client muss folgendes Unterstützen:

  • Erfassung von Stigs am aktuellen Ort zur aktuellen Zeit.
  • Absenden von Suchanfragen und Präsentation der Ergebnisse als Liste oder auf einer Karte.
  • Kontaktaufnahme mit anderen Benutzern anhand ihrer Stigs über die Kanäle Telefon, SMS, Mail.

Zusätzlich sind folgende Funktionen wünschenswert:

  • Erfassung von Stigs in der Zukunft oder an anderen Orten.