Monica v3 kommt vor Ende 2026. Von Grund auf neu gebaut. Weiterhin quelloffen. Sehen, was kommt
Monica

Blog

Notizen zum Bau von Monica, zum Schutz persönlicher Daten und zur kleinen Mechanik des Kontakthaltens.

RSS-Feed
9 Min. Lesezeit
Building Monica: Beziehungen zwischen Menschen modellieren
Regis Freyd

Als wir mit dem Neubau von Monica begonnen haben, war mir klar, dass Beziehungen einer der Bereiche sind, die wir neu denken müssen. Womit ich nicht gerechnet hatte, war, wie schwierig es ist, überhaupt zu definieren, was eine Beziehung ist.

Ein persönliches CRM muss wissen, wie Menschen miteinander verbunden sind. Jemand ist deine Mutter, dein Bruder, dein Freund, deine Kollegin oder dein Partner. Monica kann das seit Jahren, und aus Sicht der Nutzerin ist es eine recht einfache Funktion: Du wählst eine Person, wählst eine Beziehung, und fertig.

Zu entwerfen, was hinter diesem kleinen Auswahlmenü passiert, ist dagegen alles andere als einfach.

Selbst einfache Beziehungen sind nicht so einfach

Nehmen wir an, Monica ist die Schwester von Ross. Aus Monicas Sicht ist Ross ihr Bruder. Beide Aussagen beschreiben dieselbe Beziehung, aber die Worte, die wir verwenden, hängen davon ab, welche Person wir betrachten.

Dasselbe passiert überall in einer Familie. Rachel ist Emmas Mutter, während Emma Rachels Tochter ist. Jemandes Tante hat eine Nichte oder einen Neffen. Eine Großmutter hat eine Enkelin oder einen Enkel.

Andere Beziehungen funktionieren nicht so. Chandler und Joey sind Freunde. Das Wort ist dasselbe, egal von welcher Seite man schaut. Bei Cousins und Kollegen kann es genauso sein.

Damit haben wir schon unterschiedliche Verhaltensweisen. Manchmal ändert eine Beziehung ihren Namen, je nachdem von welcher Seite wir schauen, manchmal nicht, und manchmal hängt das Wort, das wir verwenden, vom Geschlecht einer der beiden Personen ab.

Und das ist der einfache Teil.

Familien sind unordentlich

Stell dir vor, zwei Menschen heiraten und haben zwei Kinder. Sie lassen sich scheiden. Einer von ihnen heiratet jemanden, der schon Kinder aus einer anderen Beziehung hat, und vielleicht bekommen sie zusammen noch ein Kind.

Das ist keine besonders ungewöhnliche Familie, aber jetzt haben wir Eltern, Kinder, Geschwister, Halbgeschwister, Stiefkinder, Stiefeltern, Ehepartner und Ex-Ehepartner.

Es wirft außerdem Fragen auf, für die es meiner Meinung nach nicht immer eine allgemeingültige Antwort gibt. Wenn du dich scheiden lässt, hört deine Schwiegermutter dann auf, deine Schwiegermutter zu sein? Formal vielleicht. Aber was, wenn du sie seit zwanzig Jahren kennst und sie weiterhin als Teil deiner Familie betrachtest? Die Großmutter deiner Kinder hört sie jedenfalls nicht auf zu sein, nur weil deine Ehe zu Ende gegangen ist.

Dann gibt es leibliche Eltern, Adoptiveltern, Pflegeeltern und Vormunde. Jemand kann mehrere Menschen haben, die er als Eltern betrachtet, und diese Beziehungen bedeuten nicht zwangsläufig dasselbe. Es gibt entfremdete Familienmitglieder, Menschen, die jemanden als Bruder oder Schwester sehen, ohne biologisch verwandt zu sein, frühere Partner, die sich sehr nahe bleiben, und Eltern, die gemeinsam Kinder großziehen, ohne noch ein Paar zu sein.

Der aufgeräumte Familienstammbaum, den wir uns bei diesem Problem gern vorstellen, übersteht den Kontakt mit vielen echten Familien nicht.

Und selbst wenn die Familienstruktur schlicht ist, verändern sich Beziehungen. Wer heute dein Partner ist, kann in fünf Jahren dein Ex-Partner sein. Das heißt nicht, dass die alte Beziehung einfach verschwinden sollte. Dass zwei Menschen fünfzehn Jahre verheiratet waren, bleibt Teil ihrer Geschichte, auch wenn sie es nicht mehr sind.

Beziehungen haben eine Vergangenheit, was es ebenso problematisch macht, nur ihren aktuellen Zustand darzustellen.

Zwei Menschen müssen sich über ihre Beziehung nicht einig sein

Familienbeziehungen geben uns wenigstens einige Fakten, mit denen wir arbeiten können. Freundschaft ist noch unpräziser.

Wenn Monica Rachel als enge Freundin betrachtet, betrachtet Rachel dann zwangsläufig Monica als enge Freundin? Wir haben keine Ahnung.

Dasselbe Problem gibt es bei Mentoren, Bekannten und vielen anderen Beziehungen. Jemand kann eine andere Person als Mentor sehen, auch wenn diese Person das Wort selbst nie benutzen würde. Jemand kann einen alten Freund praktisch als Familie sehen, während die andere Person in ihm jemanden sieht, den sie vor Jahren gekannt hat.

Das ist in Monica sehr wichtig, denn die Information soll keinen objektiven sozialen Graphen beschreiben. Es sind deine Informationen über die Menschen in deinem Leben.

Wenn du schreibst, dass jemand dein Freund ist, beschreibst du die Beziehung so, wie du sie verstehst. Monica hat die Version der anderen Person nicht, und in vielen Fällen gibt es wahrscheinlich ohnehin keine einzige richtige Antwort.

Besonders seltsam wird es, wenn Software versucht, Beziehungen in etwas Messbares zu verwandeln. Ist jemand ein besserer Freund, weil du ihn jede Woche siehst? Ist eine Freundin, die du seit fünf Jahren nicht gesehen hast, weniger wichtig als ein Kollege, mit dem du täglich sprichst? Natürlich sagt uns die Häufigkeit etwas über eine Beziehung, aber sie sagt uns nicht, was diese Beziehung für jemanden bedeutet.

Auch die Zeit passt nicht sauber hinein

Ein Kollege kann ein Freund werden. Ein Freund kann ein Partner werden. Ein Partner kann ein Ex-Partner werden, und Jahre später kann dieselbe Person wieder ein Freund werden.

Wenn Monica festhält, dass zwei Menschen verheiratet sind, und sie sich später scheiden lassen, was soll dann mit der Ehe passieren? Sie zu entfernen würde die aktuelle Information richtig machen, aber auch etwas ziemlich Wichtiges aus ihrer Geschichte entfernen.

Wir könnten Datumsangaben behalten, nur kennen die Leute sie oft nicht. Ich kann wissen, dass zwei Freunde einmal zusammen waren, ohne die leiseste Ahnung zu haben, wann sie angefangen haben oder wann genau sie sich getrennt haben. Genaue Daten zu verlangen würde das Modell sauberer machen und das Produkt deutlich nerviger.

Es gibt auch keine Garantie, dass Beziehungen ordentlich von einem Zustand in den nächsten wechseln. Menschen wachen nicht zwangsläufig eines Morgens auf und wechseln von „Freund“ zu „Partner“. Manche Beziehungen haben einen klaren Anfang, etwa eine Ehe. Viele andere nicht.

Die Datenbank würde sehr gerne wissen, wann alles begonnen und wann es geendet hat. Meistens wissen wir es nicht.

Englisch ist nicht das Modell für die ganze Welt

Ein weiteres Problem ist, dass die meisten der ersten Beispiele, die einem einfallen, auf dem Englischen beruhen.

Englisch verwendet „cousin“ für eine große Zahl von Familienbeziehungen, während andere Sprachen viel genauer sein können. Mandarin zum Beispiel hat unterschiedliche Wörter für Cousins, je nachdem, von welcher Seite der Familie sie kommen, welches Geschlecht sie haben und manchmal wie alt sie sind. Schwedisch unterscheidet alle vier Großeltern: mormor ist die Mutter deiner Mutter, morfar der Vater deiner Mutter, farmor die Mutter deines Vaters und farfar der Vater deines Vaters. Englisch gibt uns einfach „grandmother“ und „grandfather“.

Koreanisch liefert ein weiteres Beispiel. Selbst etwas so Einfaches wie „älterer Bruder“ ändert sich danach, wer spricht. Ein Mann nennt seinen älteren Bruder hyeong, eine Frau nennt ihn oppa. Das Beziehungsvokabular trägt eine Information, die im englischen Wort „brother“ nicht steckt.

Für Monica ist das wichtig, weil Monica in viele Sprachen übersetzt und auf der ganzen Welt benutzt wird. Wir können das gesamte Beziehungssystem nicht auf der Annahme aufbauen, dass Englisch die kanonische Liste der Beziehungen enthält und jede andere Sprache diese Wörter nur zu übersetzen braucht.

Das ist ein Problem, dem wir in Monica schon begegnet sind, und der Neubau lässt es nicht auf magische Weise verschwinden.

Familie ist nicht einmal der schwierigste Teil

Familienbeziehungen haben wenigstens meist einen Namen. Der Rest unserer Beziehungen ist viel weniger strukturiert.

„Freund“ kann jemanden beschreiben, den du seit dreißig Jahren kennst und mit dem du jede Woche sprichst, aber auch jemanden, den du zweimal im Jahr siehst und der dir sehr viel bedeutet. Ein Kollege kann die Person sein, die täglich neben dir sitzt, oder jemand, mit dem du vor fünfzehn Jahren gearbeitet hast.

Und Menschen passen nicht in jeweils eine Kategorie. Jemand kann dein Kollege, dein Freund und dein früherer Mitbewohner sein. Dein Geschäftspartner kann auch dein Bruder sein. Deine Nachbarin kann der Elternteil der besten Freundin deiner Tochter sein.

Manchmal ist der Kontext selbst das Entscheidende. Du kennst jemanden, weil ihr zusammen in der Schule wart, im selben Team gespielt, im selben Haus gewohnt oder am selben Projekt gearbeitet habt. „Freund“ mag formal richtig sein, verliert aber die Information, die erklärt, warum diese Person überhaupt Teil deines Lebens ist.

An dieser Stelle wird eine einfache Frage wie „woher kennst du diese Person?“ überraschend schwer mit einem einzigen Feld zu beantworten.

Eine Beziehung kann viele weitere nach sich ziehen

Angenommen, Ross ist Monicas Bruder und Ross hat einen Sohn namens Ben. Wir verstehen sofort, dass Monica Bens Tante ist.

Software kann zu demselben Schluss kommen. Und sobald sie damit anfängt, kann sie weitermachen.

Eltern implizieren Kinder. Kinder mit denselben Eltern sind vielleicht Geschwister. Geschwister mit Kindern erzeugen Tanten, Onkel, Nichten und Neffen. Nimm noch eine Generation dazu, und du hast Großeltern und Enkel. Recht schnell kann eine kleine Zahl von Beziehungen einen viel größeren Familiengraphen erzeugen.

Aber dass Software etwas ableiten kann, heißt nicht zwangsläufig, dass sie es sollte.

Der neue Ehepartner eines Elternteils ist nicht automatisch ein Elternteil des Kindes. Zwei Menschen mit einem gemeinsamen Elternteil sind formal vielleicht Halbgeschwister, kennen sich aber möglicherweise nicht. Die Informationen, die Monica hat, können auch einfach unvollständig sein. Und selbst wenn die Familienbeziehung formal richtig ist, muss es nicht die Beziehung sein, mit der die Beteiligten sich selbst beschreiben würden.

Jedes Mal, wenn die Software eine weitere Beziehung ableitet, bekommt sie auch eine weitere Gelegenheit, falsch zu liegen.

Es gibt mehr Fragen als Antworten

Je länger wir daran arbeiten, desto mehr Sonderfälle finden wir.

Soll Monica die Geschichte einer Beziehung behalten oder nur ihren aktuellen Zustand? Können zwei Menschen mehrere Beziehungen gleichzeitig haben? Ist „bester Freund“ eine andere Beziehung als „Freund“, oder ist das etwas anderes? Was passiert, wenn wir die Mutter von jemandem kennen, diese Mutter aber kein Kontakt in Monica ist? Wie beschreiben wir Beziehungen, die uns wichtig sind, für die es aber keinen bequemen Namen gibt?

Manches davon sind Datenbankprobleme. Das meiste nicht.

Der schwierige Teil ist die Entscheidung, was wir meinen, wenn wir sagen, dass zwei Menschen eine Beziehung haben, denn Menschen benutzen dieses Wort nicht annähernd mit der Genauigkeit, die eine Datenbank bevorzugen würde.

In der Oberfläche wird das alles am Ende vielleicht auf ein paar Worte in einem Profil hinauslaufen: Mutter, Bruder, Freund, Kollegin.

Diese paar Worte richtig hinzubekommen, ist eines der schwierigsten Probleme, mit denen wir beim Neubau von Monica zu tun haben.

7 Min. Lesezeit
Building Monica: Wir haben den Datenbank-Browser gebaut, den wir uns für Laravel gewünscht haben
Regis Freyd

Dies ist ein weiterer Artikel aus der Reihe Building Monica, in der ich über den Neubau von Monica von Grund auf schreibe. Die meisten Artikel dieser Reihe werden sich vermutlich um das Produkt selbst drehen: Beziehungen, Erinnerungen, Anpassbarkeit, Aktivitäten, Privatsphäre und all die Fragen, die auftauchen, wenn man versucht, das Leben von Menschen in Software abzubilden. Aber beim Neubau einer großen Anwendung entstehen unterwegs auch kleinere Dinge. LaraDB ist eines davon.

Während der Arbeit an Monica v3 habe ich gemerkt, dass ich sehr viel Zeit damit verbringe, direkt in die Datenbank zu schauen. Das ist beim Bauen einer Laravel-Anwendung nicht besonders ungewöhnlich. Man legt einen Kontakt an und prüft, was geschrieben wurde. Man legt eine Beziehung an und sieht sich die zugehörigen Zeilen an. Man ändert eine Erinnerung und kontrolliert die Daten. Man löst eine Aktion aus, lädt die Daten neu, folgt einem Fremdschlüssel, und wiederholt das viele Male am Tag.

Dafür gibt es bereits viele gute Wege. Tinker ist nützlich, aber nicht einfach und schnell zu benutzen. Anwendungen wie TablePlus, DBeaver, phpMyAdmin oder Adminer können sehr hilfreich sein, aber nicht für einen kurzen Blick. Ich benutze TablePlus regelmäßig, vor allem wenn ich Abfragen schreiben, Daten bearbeiten oder das Schema im Detail ansehen muss. Aber die meiste Zeit brauchte ich beim Entwickeln von Monica kein Werkzeug zur Datenbankverwaltung. Ich wollte nur schnell sehen, was in der Datenbank steht, ohne die Anwendung zu verlassen, an der ich ohnehin gerade arbeitete.

Das war die ursprüngliche Idee hinter LaraDB. Eine Entwicklungsabhängigkeit installieren, /db aufrufen und die Datenbank sehen.

composer require --dev monicahq/laradb

Was man bekommt, ist sehr einfach. Links werden die Tabellen angezeigt, rechts die Zeilen, und die Seite läuft innerhalb der Laravel-Anwendung selbst. LaraDB unterstützt SQLite, MySQL und MariaDB sowie PostgreSQL.

LaraDb zeigt die Tabelle value_list_items: links die Liste der 41 Tabellen, rechts ihre Zeilen, und die Fremdschlüsselspalten als Links dargestellt, denen man folgen kann.

Ein Browser und keine Datenbankverwaltung

Die wichtigste Entscheidung war, LaraDB nur lesend zu halten. Es gibt keinen Bearbeiten-Knopf, keinen Löschen-Knopf, kein Formular zum Einfügen und keine SQL-Konsole. Beide Routen, die das Paket bereitstellt, sind GET-Routen, und das Paket setzt ausschließlich SELECT-Anweisungen ab.

Das ist zum Teil eine Sicherheitsentscheidung, vor allem aber eine Frage des Umfangs. Es gibt bereits ausgereifte Werkzeuge zur Verwaltung von Datenbanken, und einen Teil ihrer Funktionen innerhalb von Laravel nachzubauen würde LaraDB für das Problem, das wir lösen wollten, nicht nützlicher machen.

Das Paket vermeidet außerdem, beliebige Bezeichner oder Abfragen aus dem Browser entgegenzunehmen. Eine angeforderte Tabelle muss zuerst in dem Schema existieren, das der Treiber ermittelt hat. Bezeichner werden je nach Datenbank-Engine maskiert. Werte, die beim Folgen von Fremdschlüsseln verwendet werden, werden als Parameter gebunden. Es gibt keine Oberfläche, um beliebiges SQL abzuschicken, weil beliebiges SQL nicht zum Zweck des Pakets gehört.

Ein kleines Werkzeug bleibt verständlich, wenn es eine sehr genau umrissene Aufgabe hat. LaraDB soll beantworten, was gerade in der Datenbank steht und wie diese Zeilen zueinander in Beziehung stehen. Es soll kein Ersatz für einen richtigen Datenbank-Client werden.

Was wir am Ende gebraucht haben

Die Oberfläche spiegelt diesen engen Rahmen wider. LaraDB listet die Tabellen des aktuellen Schemas auf und zeigt ihre Zeilen in einer dichten Tabelle. Spaltentypen werden angezeigt, Primär- und Fremdschlüssel sind gekennzeichnet, NULL-Werte unterscheiden sich sichtbar von leeren Zeichenketten, und lange Werte werden gekürzt, damit große Text- oder JSON-Spalten die Seite nicht unbrauchbar machen.

Die Fremdschlüssel haben sich für Monica als eine der nützlicheren Funktionen herausgestellt. Verweist eine Spalte auf eine andere Tabelle, kann man ihrem Wert direkt folgen. Ein Klick öffnet die referenzierte Tabelle, gefiltert auf die entsprechende Zeile. Das ist in Monica v3 besonders praktisch, weil immer mehr Bereiche über ausdrückliche Beziehungen zwischen mehreren Tabellen abgebildet werden statt über große, in sich geschlossene Datensätze.

Die Seite zeigt außerdem etwas Kontext zur aktuellen Datenbank und Abfrage. Je nachdem, was die Datenbank-Engine zur Verfügung stellt, kann LaraDB die Engine und ihre Version, den Namen der Datenbank, ihre Größe, die Anzahl der Indizes und weitere engine-spezifische Metadaten anzeigen. Für die aktuelle Seite zeigt es auch die SQL-Anweisung, die das Ergebnis erzeugt hat, und wie lange die Abfrage gedauert hat.

Es gibt auch eine JSON-Darstellung einer Tabelle. Sie war günstig zu ergänzen, nachdem die Datenbankschicht vom HTML-Rendering getrennt war, und hat sich als nützlich erwiesen, um Daten außerhalb der Seite selbst anzusehen.

Das Frontend ist bewusst eigenständig. Das Paket bringt eigenes CSS und eigenes JavaScript mit und hängt nicht an der Asset-Pipeline der Host-Anwendung. LaraDB zu installieren sollte nicht bedeuten, einem bestehenden Projekt eine Tailwind-Konfiguration, eine Alpine-Abhängigkeit oder einen weiteren Build-Schritt hinzuzufügen.

Die Datenbankabstraktion wurde zur eigentlichen Arbeit

Zeilen in einem Browser anzuzeigen ist unkompliziert. SQLite, MySQL und PostgreSQL einheitlich zu unterstützen, dort ist der Großteil der interessanten Arbeit gelandet.

Die Engines unterscheiden sich deutlich darin, wie sie Schema- und Datenbank-Metadaten offenlegen. Tabellen auflisten, Spalten beschreiben, Primärschlüssel finden, Fremdschlüssel auflösen, Zeilen zählen und Informationen auf Datenbankebene abrufen erfordern je nach Engine unterschiedliche Abfragen. Selbst Details wie das Maskieren von Bezeichnern müssen korrekt behandelt und nicht als allgemeine SQL-Operation betrachtet werden.

LaraDB verbirgt diese Unterschiede hinter einer kleinen Treiber-Schnittstelle. Die Laravel-Schicht fragt nach Tabellen, Spalten, Zeilen und Metadaten, ohne wissen zu müssen, ob die darunterliegende Verbindung SQLite, MySQL oder PostgreSQL ist.

Ein vereinfachter Teil des Vertrags sieht so aus:

public function listTables(): array;

public function getColumns(string $table): array;

public function getRowCount(
    string $table,
    ?RowFilter $filter = null,
): int;

public function getRows(
    string $table,
    int $page,
    int $perPage,
    ?RowFilter $filter = null,
): TablePage;

public function getForeignKeys(string $table): array;

Jeder Datenbanktreiber setzt diese Operationen anders um, während der Rest von LaraDB mit den gemeinsamen Ergebnisobjekten arbeitet, die die Schnittstelle zurückgibt.

Eine interessante Folge dieses Entwurfs ist, dass der Kern des lesenden Datenbankcodes überhaupt nicht von Laravel abhängt. Er arbeitet direkt mit PDO. Laravel ist für Package Discovery, Konfiguration, Routing und Rendering zuständig, aber die eigentliche Datenbankinspektion lässt sich separat verwenden.

use LaraDb\DriverFactory;

$pdo = new PDO('sqlite:database.sqlite');
$driver = DriverFactory::fromPdo($pdo);

foreach ($driver->listTables() as $table) {
    echo $table->name;
}

Nur lesend ist nicht dasselbe wie harmlos

Dass das Paket nur liest, verhindert, dass es die Datenbank beschädigt. Es macht es aber nicht harmlos, die Datenbank offenzulegen. Ein Datenbank-Browser kann jede Zeile jeder Tabelle für jeden sichtbar machen, der ihn erreichen kann, was für eine Anwendung wie Monica offensichtlich ein ernstes Problem wäre.

Aus diesem Grund ist LaraDB dafür gedacht, als Entwicklungsabhängigkeit installiert zu werden.

composer require --dev monicahq/laradb

Ein normales Produktions-Deployment mit composer install --no-dev enthält das Paket nicht. LaraDB ist außerdem außerhalb der Umgebung local standardmäßig deaktiviert, und seine Routen verwenden im aktivierten Zustand standardmäßig die Middleware web und auth.

Kleine Dinge, die aus einem großen Neubau entstehen

Als ich die Reihe Building Monica begonnen habe, ging ich davon aus, dass sich der größte Teil der Texte um die großen Architektur- und Produktentscheidungen hinter Monica v3 drehen würde. Das bleibt auch so. Aber ich möchte auch einige der kleineren Werkzeuge und Ideen festhalten, die bei diesem Neubau entstehen, denn auch sie gehören zur Arbeit dazu.

LaraDB ist kein großer Teil von Monica v3, und es versucht nicht, für sich genommen ein großes Produkt zu werden. Es ist schlicht ein kleines Entwicklungswerkzeug, das uns eine wiederkehrende Störung erspart hat. Das Paket ist gerade deshalb nützlich, weil sein Umfang begrenzt ist, und das soll auch so bleiben.

Wenn Sie an Laravel-Anwendungen arbeiten und oft einen Datenbank-Client öffnen, nur um zu sehen, was Ihr Code gerade geschrieben hat, könnte LaraDB auch für Sie nützlich sein.

composer require --dev monicahq/laradb

Dann rufen Sie /db auf.

Der Quellcode ist unter github.com/monicahq/laradb verfügbar.

7 Min. Lesezeit
Wir bauen Monica neu
Regis Freyd

Dies ist der erste Artikel einer Reihe namens Building Monica. Ich möchte diese Reihe nutzen, um zu dokumentieren, wie wir Monica, das Open-Source-CRM für Privatpersonen, von Grund auf neu bauen. Ich werde über die Probleme schreiben, die wir lösen wollen, über die Entscheidungen, die wir dabei treffen, und wahrscheinlich auch über einige Dinge, die nicht so laufen wie erwartet.

Vor fast zehn Jahren habe ich angefangen, Monica zu bauen, weil ich schrecklich darin war, mir Dinge über andere Menschen zu merken. Ich vergaß den Namen des Kindes von jemandem, worüber wir beim letzten Treffen gesprochen hatten, oder etwas Wichtiges, das mir einige Monate vorher erzählt worden war. Ich wollte einen Ort, an dem ich das alles aufschreiben konnte, vor allem um mein schlechtes Gedächtnis auszugleichen, also begann ich, ein professionelles CRM zu benutzen.

Das war keine gute Lösung. Die Software war für Vertriebsleute gemacht, was ich nicht war, und ich hatte wenig Lust, für ein Werkzeug zu bezahlen, das mir beim Geldverdienen helfen sollte, während ich mir eigentlich nur Dinge über meine Freunde und meine Familie merken wollte. Ich habe nach etwas Passenderem gesucht, nichts gefunden und mich deshalb entschieden, es selbst zu bauen.

Aus diesem kleinen Projekt wurde schließlich Monica. Ich habe den Code auf GitHub gestellt, ihn auf Hacker News veröffentlicht, und von da an ging es etwas verrückt zu. Es stellte sich heraus, dass ich nicht der Einzige war, der so etwas suchte. Alexis kam später als Mitgründer dazu, und über die Jahre haben Tausende von Menschen Monica benutzt, Code beigetragen, das Projekt übersetzt, Fehler gemeldet und die Anwendung auf ihren eigenen Servern installiert. Das Projekt hat inzwischen mehr als 25.000 Sterne auf GitHub und ist zu einem der bekanntesten quelloffenen persönlichen CRMs geworden.

Ich bin sehr stolz darauf, was aus Monica geworden ist. Aber nachdem ich so lange daran gearbeitet habe, bin ich an einem Punkt angekommen, an dem die aktuelle Version nicht mehr das persönliche CRM ist, das ich heute bauen würde.

Fast zehn Jahre voller Entscheidungen

Als ich mit Monica anfing, hatte ich natürlich keine zehn Jahre Erfahrung darin, darüber nachzudenken, wie man persönliche Beziehungen in Software abbildet. Die meisten Entscheidungen fielen, wenn ein Problem auftauchte. Wir brauchten Kontakte, also habe ich Kontakte gebaut. Wir brauchten Beziehungen, also habe ich Beziehungen hinzugefügt. Dann kamen Erinnerungen, Aktivitäten, Geschenke, Notizen, Haustiere, Adressen und viele weitere Funktionen.

An dieser Art, Software zu bauen, ist nichts grundsätzlich falsch. So ist Monica gewachsen, und viele dieser Entscheidungen waren damals sinnvoll. Aber nach fast zehn Jahren summieren sie sich. Neue Ideen müssen sich um Entscheidungen herumarbeiten, die Jahre früher getroffen wurden, und was einmal wie ein Implementierungsdetail aussah, wird langsam zu einer Grenze dafür, was man mit dem Produkt machen kann.

Mit der Zeit hat das einige Teile von Monica schwerer veränderbar gemacht, als sie sein sollten. Wichtiger noch: Ich habe meine Meinung zu einigen der ursprünglichen Entscheidungen geändert.

Was würde ich heute bauen?

Irgendwann habe ich mir eine einfache Frage gestellt: Wenn Monica nicht existierte und ich heute ein persönliches CRM bauen müsste, mit allem, was ich im letzten Jahrzehnt gelernt habe, wie würde es aussehen?

Das führte schnell zu Fragen, die viel grundlegender waren als die, welche Funktionen Monica haben sollte. Was genau ist eine Person in Monica? Wie sollten Beziehungen zwischen Menschen funktionieren? Wie sollte Monica die Nutzerin oder den Nutzer selbst abbilden? Was passiert, wenn das Wichtige im Leben eines Menschen keine andere Person ist, sondern ein Tier, eine Organisation oder etwas völlig anderes? Wie sollten Erinnerungen funktionieren, wenn menschliche Beziehungen von Natur aus keinem Zeitplan folgen? Was sollte eine Aktivität darstellen? Und wie viel davon sollte Monica überhaupt für Sie festlegen?

Beziehungen sind ein gutes Beispiel. Zu speichern, dass Monica die Schwester von Ross ist, wirkt nicht besonders kompliziert. Aber wenn Monica die Schwester von Ross ist, dann ist Ross auch der Bruder von Monica. Eine Elternbeziehung setzt eine Kindbeziehung voraus. Manche Beziehungen haben eine Richtung, andere nicht. Echte Familien enthalten Scheidungen, neue Ehen, Stiefkinder, Halbgeschwister, Adoptionen und alle möglichen Konstellationen, die nicht sauber in eine vorgegebene Liste passen. Auch verschiedene Kulturen beschreiben Familienbeziehungen unterschiedlich.

Ich habe für die neue Version viel Zeit damit verbracht, darüber nachzudenken, und ich sehe Beziehungen inzwischen als eigenen Bereich und nicht als Eigenschaft, die an einem Kontakt hängt. Für mich ist das heute offensichtlich. Als wir die ersten Versionen von Monica entworfen haben, war es das nicht.

Anpassbarkeit ist ein weiterer Bereich, in dem ich meine Meinung geändert habe. Bisher hat vor allem Monica festgelegt, was ein Kontakt ist und welche Informationen man über ihn speichern kann, und wir haben rund um diese Struktur Anpassungsmöglichkeiten ergänzt. Für v3 wollen wir das umdrehen. Monica wird weiterhin gute Voreinstellungen mitbringen, weil niemand fünfzig Dinge konfigurieren will, bevor er den ersten Kontakt anlegt, aber Ihr Leben sollte nicht in das Datenbankschema passen müssen, das wir für alle richtig gefunden haben.

Sobald man Dinge auf dieser Ebene ändert, reicht es nicht, ein paar Bildschirme neu zu gestalten. Auch das Fundament muss sich ändern.

Was v3 werden soll

Monica v3 soll nicht das heutige Produkt mit einer schöneren Oberfläche sein. Die Oberfläche wird sich erheblich verändern, und ich möchte, dass sie sich viel spielerischer und persönlicher anfühlt als die meiste Software, die wir heute benutzen, aber das ist nur ein Teil der Arbeit.

Ich möchte ein sehr leistungsfähiges System bauen, um die Menschen und Beziehungen im Leben eines Menschen zu dokumentieren. Alles auf Einfachheit zu optimieren interessiert mich wenig, wenn dabei ein Produkt herauskommt, das nur einfache Leben abbilden kann. Ich hätte lieber gute Voreinstellungen für alle, die nichts konfigurieren wollen, und gebe denen, die es wollen, enorm viel Kontrolle darüber, wie ihr Monica funktioniert.

Das heißt, Beziehungen als eigenständige Konzepte zu behandeln und die Menschen selbst entscheiden zu lassen, welche Informationen für sie wichtig sind. Monica muss deutlich mehr können als eine vorgegebene Liste von Feldern an einem Kontakt. Der schwierige Teil wird sein, all das zu tun, ohne am Ende Unternehmenssoftware für die Verwaltung von Freunden und Familie zu haben, denn das wäre ziemlich furchtbar.

Es gibt auch Dinge, die ich nicht ändern will. Privatsphäre und Datenhoheit sind für Monica weiterhin enorm wichtig. Das Projekt bleibt Open Source und selbst hostbar. Wenn Sie jahrelang einige der persönlichsten Informationen Ihres Lebens einer Software anvertrauen, sollten Sie meiner Meinung nach so viel Kontrolle über diese Informationen haben wie möglich.

Ich will auch nicht, dass Monica entscheidet, wie wichtig jemand für Sie ist. Sie kann Ihnen helfen, sich zu erinnern, Informationen zu ordnen und Ihnen sagen, dass Sie mit jemandem länger nicht gesprochen haben. Die Beziehung selbst bleibt Ihre Aufgabe.

Von vorn anfangen, mit zehn Jahren Erfahrung

„Von vorn anfangen“ trifft es natürlich nicht ganz. Als ich Monica 2017 gestartet habe, hatte ich eine Idee und ein Problem, das ich lösen wollte. Diesmal haben wir fast zehn Jahre Erfahrung mit diesem Problem, Tausende Gespräche mit Nutzern, Beiträge von Menschen aus der ganzen Welt, zwei Generationen des Produkts und eine recht lange Liste von Dingen, die wir nicht wieder so machen würden.

Während wir an v3 arbeiten, möchte ich mehr davon öffentlich dokumentieren. Hinter etwas, das von außen recht einfach aussieht, stecken überraschend viele schwierige Probleme, besonders wenn man ernsthaft über Beziehungen, Erinnerungen, Anpassbarkeit und darüber nachdenkt, wie man etwas so Unordentliches wie ein Menschenleben in einer Datenbank abbildet. Ich werde über diese Probleme schreiben, aber auch über die technischen und gestalterischen Entscheidungen, die wir treffen, und über die Dinge, die wir ausprobieren und die am Ende nicht funktionieren.

Darum geht es in Building Monica. Ich weiß nicht, wie oft ich einen Artikel veröffentlichen werde, und ich möchte keinen Veröffentlichungsrhythmus erfinden, nur um einen zu haben. Ich schreibe, wenn wir etwas Interessantes zu erzählen haben.

2017 habe ich Monica auf der Grundlage dessen gebaut, was ich damals von dem Problem verstanden habe. Fast zehn Jahre später verstehe ich dieses Problem sehr anders. Deshalb bauen wir es neu.

2 Min. Lesezeit
Eine neue Version von Monica kommt 2026
Regis Freyd

Es ist eine Weile her, dass wir uns richtig zu Monica gemeldet haben.

Alexis und ich denken schon sehr lange über eine neue Version nach. Länger, als wir ursprünglich erwartet hatten, natürlich. Eine Anwendung von Grund auf neu zu bauen, während man einen Vollzeitjob, eine Familie und ein Leben außerhalb von Monica hat, dauert eben doch etwas. Wer hätte das gedacht.

Heute können wir aber endlich sagen: Wir bringen die neue Version von Monica noch vor Ende 2026 heraus.

Diese neue Version ist das Monica, das wir seit Jahren bauen wollten. Sie wird schneller sein, flexibler, einfacher zu bedienen und auf einem viel stabileren Fundament stehen.

Monica hilft Ihnen weiterhin dabei, sich an die Menschen zu erinnern, die Ihnen wichtig sind. Sie bleibt privat. Sie bleibt quelloffen. Und Sie können sie weiterhin kostenlos auf Ihrem eigenen Server installieren.

Wir freuen uns unglaublich darauf. Monica gehört seit fast zehn Jahren zu unserem Leben, und das hier fühlt sich wie der Anfang eines völlig neuen Kapitels für das Projekt an.

Es gibt noch viel zu tun.

Aber es kommt. Diesmal wirklich.

Danke für Ihre Geduld, Ihre Nachrichten und Ihre Unterstützung in all den Jahren. Wir können es kaum erwarten, Ihnen zu zeigen, was wir gebaut haben.

3 Min. Lesezeit
Chandler ist in der Beta
Regis Freyd

Wir freuen uns sehr, ankündigen zu können, dass unsere neue Version mit dem Codenamen Chandler nach 18 Monaten harter Arbeit jetzt als Beta verfügbar ist: https://beta.monicahq.com

Monica entstand vor 7 Jahren mit dem Ziel, ein persönliches CRM zu sein. Bei dieser neuen Version geht es darum, Ihr Leben zu dokumentieren, einschließlich dessen, was Ihre Kontakte tun, aber nicht nur.

Was bedeutet Beta? Es ist, als hätten sich lauter schelmische kleine Fehler in unserer Software versteckt und spielten mit uns Verstecken. Wir sind ziemlich sicher, dass sie da sind, aber wir haben keine Ahnung, welche es sind und wo sie stecken. Deshalb brauchen wir alle mutigen Seelen da draußen für unsere Fehlerjagd, damit wir sie aufspüren, bevor wir die Version für alle veröffentlichen.

Chandler ist eine vollständige Neuerfindung von Monica, von Grund auf neu gebaut. Wir haben die umfangreichen technischen Altlasten beseitigt, die sich über die Jahre angesammelt hatten, und viele Funktionen ergänzt oder verbessert. Obwohl wir Chandler nicht beworben haben, haben ihn schon viele Nutzer ausprobiert und Fehler gefunden, die wir behoben haben. Im großen Maßstab haben wir diese Software jedoch nicht getestet. Legen Sie also bitte ein Konto an und haben Sie Freude daran.

Die Fassung auf dem Beta-Server kann als stabil gelten. Wir werden die Datenbank nicht zurücksetzen. Wir sichern Ihre Daten täglich und behalten sie, wenn wir die endgültige Version offiziell starten.

Chandler hat einige Einschränkungen:

  • Sie können Ihre aktuellen Monica-Zugangsdaten nicht verwenden,
  • Sie können Ihre Daten nicht importieren,
  • Ein Massenimport von Kontakten ist nicht verfügbar,
  • Wir haben noch keine API.

Wir haben viele neue Funktionen, einen neuen Aufbau und den vielfach gewünschten Dunkelmodus.

Persönlich bin ich auf die Funktion am stolzesten, dass sich in Chandler fast alles anpassen lässt: vom Aufbau über die Module, die Sie einschalten können, bis zu den Daten, die Sie über Ihr Leben festhalten.

Chandler ist weiterhin quelloffen und lässt sich kostenlos auf Ihrem Server installieren, sofern Sie mit Docker oder der Kommandozeile umgehen können. Sie können den Code weiterhin ändern, wenn Sie möchten. Monica ist und bleibt quelloffen. So soll es sein.

Vorerst ist Monica auf unserer gehosteten Instanz kostenlos (https://beta.monicahq.com), doch wir werden dieselben Preise wie bei der aktuellen Version verlangen, sobald wir das Produkt für stabil halten.

Ich bin unglaublich stolz auf das, was wir in den vergangenen acht Jahren erreicht haben. Damals hatte ich Angst, meinen Code zu veröffentlichen, weil ich wusste, dass er von schlechter Qualität war. Überraschenderweise schien das niemanden zu stören. Heute ist unsere Codebasis weiterhin öffentlich und wir fürchten kein Urteil mehr. Die Anwendung ist nach wie vor eine Laravel-Anwendung, mit VueJS im Frontend und InertiaJS zwischen Front- und Backend. Ein sehr einfacher Stack. Wir bemühen uns, unsere Codebasis so einfach wie möglich zu halten, um Wartung und Weiterentwicklung zu erleichtern und Entwickler zu finden, die uns unterstützen.

Wir werden unser offizielles Docker-Image bald auf Chandler umstellen. Das Image wurde über 25 Millionen Mal heruntergeladen, was uns demütig stimmt.

Im Namen des gesamten Monica-Teams danke ich Ihnen, dass Sie uns die ganze Zeit die Treue gehalten haben. Das „gesamte Monica-Team“ sind im Grunde zwei Freunde, Alexis und ich, die wirklich mit Leidenschaft schöne Werkzeuge bauen, damit Menschen ihr Leben verbessern können. Monica ist für uns weiterhin ein Nebenprojekt, wir haben Vollzeitstellen „nebenbei“. Während manche Computerspiele spielen oder Netflix schauen, „spielen“ wir in Monicas Codebasis. Und wir lieben es.

7 Min. Lesezeit
Ein neues Monica kommt
Regis Freyd

Alexis und ich (Regis) arbeiten seit einigen Monaten (genau genommen seit Januar 2022) an einer brandneuen Version von Monica. Der ersten echten neuen Hauptversion seit unserem Start vor einigen Jahren.

Ich bin sehr versucht, sie eine „schnellere, neuere, bessere Version“ zu nennen, weil sie das ist, aber ich bin schlecht im Marketing. Also sage ich einfach: Es ist eine neue Version, und ich beantworte unten die Fragen, die Sie vielleicht haben.

Was meinen Sie mit neuer Version?

Eine vollständige Neuentwicklung von Monica, von Grund auf.

Sind Sie verrückt?

Ja, aber auch: Monicas Codebasis ist inzwischen alt. Alt in dem Sinne, dass sie 7 Jahre auf dem Buckel hat und Hunderte Mitwirkende sie angefasst haben. Es gibt Konzepte im Code, die wir durchgehen ließen, weil wir es damals nicht besser wussten oder Mitwirkende nicht verärgern wollten, und die wir nicht mehr wollen. Das Projekt hat viel zu viele Abhängigkeiten, und die Pflege des Codes ist schwerer geworden als früher. Etwas zu ändern ist riskanter und dauert länger. Außerdem haben wir gesehen, wie Menschen Monica nutzen und was sie damit tun wollen, und der jetzige Code schränkt uns viel zu stark ein, wenn wir das unterstützen wollen. Schließlich ist Monica für uns weiterhin ein Nebenprojekt. Wir sind mit Leidenschaft dabei und wollen auch Freude am Bauen haben. Und die aktuelle Version machte nicht mehr so viel Freude.

Was heißt Neuentwicklung?

Wir haben mit einer leeren Codebasis angefangen und von dort aus gebaut. Vorher war es eine Laravel-Anwendung (also PHP), mit Blade-Views und hier und da etwas Vue. Jetzt ist es weiterhin eine Laravel-Anwendung (also weiterhin PHP), vollständig mit Vue 3. Wir haben vieles vereinfacht, manches flexibler und damit etwas komplexer gemacht, doch wir glauben, dass wir damit Monicas Zukunft tragen können.

Das heißt auch: Wir haben eine brandneue Datenstruktur, getragen von einem neuen Datenbankschema.

Wird die neue Version Monica heißen?

Derzeit lautet der Codename des neuen Monica Chandler. Diesen Namen behalten wir jedoch nicht, der offizielle Name des neuen Monica wird Monica sein. Der Klarheit halber nennen wir die neue Version im weiteren Text Chandler.

Sie wählen PHP trotz \?

PHP ist eine großartige Sprache. Die Zeiten von PHP 4 oder 5 sind vorbei. Zudem ist es eine sehr einfache Sprache, was bedeutet, dass viele Menschen auf der Welt PHP lesen und verstehen. PHP zu wählen heißt: leichter zum Projekt beitragen, leichter debuggen, leichter warten und für uns leichter Menschen finden, die helfen, falls das künftig nötig wird. Und schließlich ist das PHP-Ökosystem einfach großartig, mit Laravel, das eine der besten Entwicklererfahrungen bietet, die ich kenne.

Welche Funktionen wird Chandler haben?

Zum Start wollen wir den Funktionsumfang von Monica v1 zu 100 Prozent (oder fast) abdecken. Auch bei gleichem Umfang wollten wir Funktionen entweder vereinfachen (etwa Aufgaben) oder robuster machen (etwa Erinnerungen).

Ist das erledigt, haben wir so viele Ideen für das, was Monica werden soll, dass es überwältigend ist. Im Kern wurde Monica als eines der ersten persönlichen CRMs (oder PRMs, persönliche Beziehungsverwaltung) geboren. So haben wir es auch positioniert. Doch nach Jahren der Arbeit daran, nach Gesprächen und nach dem Lesen der Tausenden E-Mails, die Sie uns geschickt haben, wurde uns klar: Monica ist vor allem eine Möglichkeit, Ihr Leben zu dokumentieren, was immer das für Sie bedeutet. Monica wird also darum gehen, Ihr Leben zu dokumentieren, und Ihnen Werkzeuge geben, es so zu tun, wie Sie es möchten.

Überall liest man, Produkte sollten eine Haltung und eine starke Persönlichkeit haben, damit Menschen sie so nutzen, wie man es sich vorstellt. Das war die Richtung von v1. Diese Aussage wollen wir nun ändern. Wir wollen, dass Menschen Monica so nutzen und einrichten, wie sie es möchten. Wer sind wir, Ihnen zu sagen, dass Sie für Ihre Kontakte nur 3 Pronomen verwenden sollten, oder welche Beziehungsarten es bei Ihnen zu geben hat? Chandler wird vollständig anpassbar sein, von dem, was Sie in der Oberfläche sehen, bis zu der Art von Daten, die Sie eingeben können. Marketingleute würden sagen: „Bei Chandler dreht sich alles um Sie“, und in gewisser Weise stimmt das. Der Nachteil: Technisch ist das schwerer zu handhaben, aber das ist unser Problem.

Wann ist sie fertig? Kann ich sie ausprobieren?

Sie ist fertig, wenn sie fertig ist. Denken Sie daran: Wir arbeiten daran keineswegs in Vollzeit. Alexis und ich haben beide fordernde Hauptberufe, Familien, Freunde und Monica (und außerdem OfficeLife).

ALLERDINGS.

Wir haben schon viel geschafft. Einige große Funktionen, die Sie kennen und schätzen, fehlen in der neuen Version noch: Lebensereignisse, Aktivitäten, Geschenke und CalDAV/CardDAV, um nur einige zu nennen. Besonders Lebensereignisse sind ein großer Brocken, weil wir das Konzept komplett neu denken und wirklich nützlich machen wollen. Und, ein gewaltiges „und“: Derzeit haben wir noch keine API. Da es eine neue Codebasis ist, können wir Ihre bestehenden Kontakte aus v1 nicht einfach kopieren und erwarten, dass sie in v2 auftauchen. Würden wir jetzt etwas veröffentlichen, könnten Sie Ihre Daten nicht importieren. Und das halten wir für ein Problem.

DAVON ABGESEHEN.

Wir brauchen trotzdem Testerinnen und Tester, die uns helfen, Fehler zu finden, auch wenn wir hier keine Fehler machen (lol). Wir brauchen Menschen, die Rechtschreibfehler in der Dokumentation beheben. Was wir also tun könnten: Chandler in einem sehr frühen Alpha-Zustand starten, für alle kostenlos, solange die Alpha-Phase dauert.

Ist es weiterhin quelloffen? Kann ich es kostenlos nutzen?

Ja, es ist weiterhin quelloffen, mit derselben Lizenz wie zuvor. Das heißt, Monica ist selbstverständlich kostenlos, es sei denn, Sie nutzen die Fassung, die wir betreiben und die irgendwann etwas kosten wird, wie die aktuelle Version. Ja, Sie können es installieren, wo Sie wollen, auf Ihrem eigenen Server. Da Chandler nicht dieselbe Codebasis ist, haben wir noch nicht das reiche Ökosystem von früher mit all den verschiedenen Installationswegen, aber das kommt noch. Ja, Sie können weiterhin zum Code beitragen, Fehler beheben, Funktionen ergänzen, auch wenn wir uns das Recht vorbehalten, Ihre Pull Requests abzulehnen, wenn wir das Angebotene nicht unterstützen möchten.

Wie geht es mit Monica v1 weiter?

Wir unterstützen v1, bis Chandler die Alpha- und Beta-Phase verlassen hat. Danach wird sie abgekündigt, doch wer sie selbst betreibt, kann sie weiter nutzen, wenn er möchte. Die von uns betriebene v1 wird danach nicht mehr unterstützt.

Kann man jetzt schon zur Codebasis beitragen?

Das Repository ist bereits auf GitHub verfügbar, doch wir sind weit davon entfernt, so ausgereift zu sein wie das jetzige Haupt-Repository. Das heißt, wir sind noch nicht bereit, Beiträge von allen aufzunehmen, weil sich fast täglich etwas ändert. Wenn Sie damit leben können, nur zu.

Wie geht es weiter?

Zunächst einmal: Vielen Dank, dass Sie diesen Beitrag ganz gelesen haben. Wir sind unserer Gemeinschaft überaus dankbar dafür, wie sehr Sie sich weiterhin für dieses kleine Werkzeug begeistern, das wir mit Freude bauen. Alexis und ich sind nach wie vor hoch motiviert, und wir danken Ihnen, dass Sie mit uns dabei sind. Wir bleiben in Kontakt.

2 Min. Lesezeit
Weg von Stripe, hin zu unserem eigenen Kundenportal
Regis Freyd

Derzeit nutzen wir Stripe, um unsere Abonnements zu verwalten. So sehr wir Stripe aus Entwicklersicht schätzen, so sehr ist der Umgang mit Steuern weltweit ein einziges Durcheinander, besonders zum Ende des Geschäftsjahres. Unser Buchhalter hasst uns. Wir müssen zu einem anderen Zahlungsdienstleister wechseln, der alle Steuern richtig abwickelt. Dieser Dienstleister heißt Paddle.

Es gibt noch einen weiteren Grund, warum wir unser Vorgehen ändern wollen. Monica ist in erster Linie ein quelloffenes Produkt. Wir haben eine riesige Gemeinschaft. Viele von Ihnen betreiben Monica auf eigenen Servern. Weil wir das Produkt auch selbst betreiben, um damit Geld zu verdienen, steckt bislang der gesamte Code zur Verwaltung von Abonnements in der Hauptcodebasis. Das ist eine Menge Code. Wir kümmern uns um das Abschließen, Ändern und Kündigen eines Abonnements, um sämtliche Berechtigungen drumherum und so weiter. Ideal ist das nicht.

Wir haben beschlossen, den gesamten Abrechnungscode aus der Hauptcodebasis zu entfernen und ein neues Portal zu schaffen, das Abonnementportal, über das Sie Ihre Monica-Abonnements verwalten. Sie müssen dort ein Konto anlegen und einen Lizenzschlüssel kaufen, den Sie in Ihr Monica-Konto einfügen. Mehr ist nicht nötig.

Wenn Sie derzeit ein Abonnement haben, ermöglichen wir Ihnen einen einfachen Wechsel auf das neue. Weitere Anweisungen folgen für jeden von Ihnen per E-Mail.

Wir planen den Umstieg auf dieses neue Kundenportal in den kommenden Wochen.

4 Min. Lesezeit
Monica 2.16 und wie es mit Monica weitergeht
Regis Freyd

Es ist lange her. Genau genommen ist es ein Jahr her seit dem letzten Blogbeitrag. In diesem Beitrag sprechen wir über die soeben veröffentlichte Version 2.16, über das, was 2019 geschehen ist, und darüber, wie es mit Monica weitergeht.

Version 2.16 enthält 226 Änderungen, die meisten davon Fehlerbehebungen oder Verbesserungen an der Codebasis. Doch es gibt auch eine Reihe neuer Funktionen, die unten erklärt werden.

Eine neue Art, Aktivitäten anzulegen

Sie können Aktivitäten jetzt direkt in der Ansicht anlegen, statt dafür auf eine neue Seite zu wechseln. Wie bei den Telefonaten können Sie angeben, welche Emotionen Sie während einer Aktivität empfunden haben.

Das Formular, um einem Kontakt eine Aktivität hinzuzufügen, mit der Frage, was Sie getan haben und wann.

Verbesserte Seite für API-Einstellungen

Das meiste, was Sie mit Monica tun können, lässt sich über die API erledigen. Für uns ist es außerordentlich wichtig, dass Menschen ihre Daten nach Belieben bearbeiten können. Deshalb war es Zeit, die Seite mit den API-Einstellungen ein wenig aufzuwerten und ihr mehr Zuwendung zu schenken.

Der API-Einstellungsbildschirm mit den persönlichen Zugriffstoken und den OAuth-Clients.

Außerdem haben wir viele neue API-Methoden ergänzt, um unsere Offenheit gegenüber anderen Systemen fortzusetzen.

Viele Änderungen unter der Haube

Wir haben zudem vollständig verändert, wie Daten gespeichert werden, indem wir jeder Tabelle in der Datenbank Fremdschlüssel gegeben haben. Für Endnutzer ändert sich dadurch nichts, doch für uns Entwickler ist es ziemlich bedeutend, weil es insgesamt mehr Kontrolle und Freiheit bringt. Das war eine gewaltige Änderung, und die Pull Requests brauchten fast 11 Monate, bis sie übernommen waren.

Wir haben außerdem den Ablauf für den Datenexport komplett überarbeitet, und er sollte von nun an reibungslos funktionieren (oder, wie man sagt: In 60 Prozent der Fälle klappt es jedes Mal).

Was ist 2019 passiert?

2019 haben wir bei den Veröffentlichungen etwas an Tempo verloren. Auch die Aktivität in diesem Blog war nicht vorhanden. Das hat allerdings weder die Zahl der Anmeldungen noch die Zahl der Downloads noch die Zuneigung der Menschen im Netz zu diesem Projekt geschmälert.

Im Grunde war Monica nie stärker. Unser offizielles Docker-Image kommt auf fast 5 Millionen Downloads. Wir haben Zehntausende Nutzer auf unserer gehosteten Fassung. Monica taucht immer wieder auf Hacker News auf, und unser Ticketsystem auf GitHub ist so aktiv wie eh und je. Außerdem haben wir 2019 875 Pull Requests übernommen.

Warum also dieses Schweigen? Vor allem wegen mir (Regis). Ich habe Monica vor inzwischen fast vier Jahren begonnen. Ein beliebtes Projekt zu haben, macht viel Freude, kostet aber auch viel Energie und Motivation. Zumal Monica sowohl für mich als auch für Alexis weiterhin ein Nebenprojekt ist. Doch dieses Jahr war Monica zu viel für mich, und normalerweise bin ich derjenige, der in diesem Blog oder in sozialen Netzwerken schreibt. Ein Nebenprojekt-Burnout, wenn man so will. Alexis hat viel Arbeit auf seine Schultern genommen, um das Produkt zu pflegen und weiterzuentwickeln, doch ich konnte nicht mehr so viel daran arbeiten wie zuvor und keine Neuigkeiten veröffentlichen. Ich musste etwas anderes tun, den Kopf frei bekommen und erst zurückkehren, wenn ich bereit wäre. Das bin ich jetzt, und ich bin mehr als motiviert, wieder loszulegen und erneut Freude daran zu haben.

Monica im Jahr 2020

Vor vier Jahren war Monica eines der ersten beliebten persönlichen CRMs. Heute ist der Wettbewerb größer denn je (ein Dutzend, als ich zuletzt nachgesehen habe). Doch ich glaube, wir haben einen Vorteil, den uns niemand nehmen kann: Wir sind quelloffen, wir haben kaum Aufwände und Kosten, und wir sind nicht gierig. Alles, was wir tun, tun wir zuerst für die Gemeinschaft. Je mehr Monica-Instanzen es da draußen gibt, desto glücklicher sind wir, denn das heißt, dass wir keinerlei Kontrolle über die Daten unserer Nutzer haben.

2020:

  • Wir wollen unsere Arbeit an Offenheit und Transparenz fortsetzen. Das heißt mehr Wege, Daten in einem gängigen Format zu exportieren oder zu importieren.
  • Wir wollen Webhooks anbieten, damit externe Systeme mitbekommen, wenn sich Daten in Ihrem Konto ändern (sofern Sie das wünschen, versteht sich).
  • Ich halte Monica derzeit für das beste Werkzeug, um persönliche Kontakte zu dokumentieren. Sie können wirklich alles festhalten. Nun, da wir ein sehr starkes Fundament haben, ist es Zeit, darauf aufzubauen. Zeit, dass Sie mehr mit Ihren Kontakten tun können, etwa Gruppen (oder Familien), Ereignisse, Gelegenheiten und so weiter anlegen. Wir konzentrieren uns auf einfache Konzepte, die nach und nach auf die Plattform kommen und Ihnen größtmögliche Freiheit geben.

Monica ist ein Werkzeug für Sie. Bitte teilen Sie weiterhin Ihre Ideen und schreiben Sie mir, was wir als Nächstes tun sollten. Wir sind für Sie da.

Und noch ein gutes neues Jahr 😀

4 Min. Lesezeit
Monica 2.11.0
Regis Freyd

Nach mehr als einem Monat Arbeit freue ich mich, die neue Version von Monica anzukündigen, mit Foto-Uploads, verbesserter Sicherheit, besserer Verwaltung von Telefonaten, Wetterdaten, der Einführung von Emotionen und vielen weiteren Verbesserungen.

Foto-Uploads

Sie können jetzt Fotos auf der Profilseite eines Kontakts hochladen. Wie viele Fotos Sie speichern können, hängt vom Speicherlimit Ihres Kontos ab, das auf https://monicahq.com bei 512 MB liegt (und pro Instanz einstellbar ist). Fotos hochladen zu können, eröffnet künftig viele Möglichkeiten.

Der Fotoreiter eines Kontakts, leer, mit dem Angebot, das erste Bild hochzuladen.

Wiederherstellungscodes

Sicherheit ist so wichtig, gerade in einem Werkzeug wie Monica, das viele intime Einzelheiten speichert. Monica unterstützt bereits Zwei-Faktor-Authentifizierung (auch 2FA genannt) und U2F, um Ihr Konto zu schützen. Ab Monica 2.11 können Sie Wiederherstellungscodes erzeugen, um Ihr Konto zu entsperren, falls Sie sich per 2FA nicht mehr anmelden können. Vorsicht jedoch: Da diese Codes Zugang zu Ihrem Konto verschaffen, bewahren Sie sie an einem sehr sicheren Ort auf.

Das Fenster mit den Wiederherstellungscodes: acht Einmalcodes, einer davon bereits durchgestrichen.

Telefonate

Telefonate haben in dieser Veröffentlichung viel Zuwendung erhalten. Zuerst haben wir den Ablauf zum Festhalten neu gestaltet. Dann haben wir (endlich) die Möglichkeit ergänzt, ein zurückliegendes Telefonat zu bearbeiten. Und als Zugabe können Sie jetzt angeben, wer den Anruf begonnen hat.

Emotionen

Wäre es nicht großartig, sehr genau festhalten zu können, wie Sie sich gefühlt haben, als etwas passiert ist? Monica 2.11 führt den Begriff der Emotionen ein, basierend auf der Arbeit von Dr. Phillip Shaver. In seiner Arbeit werden Emotionen in 3 Hauptkategorien eingeteilt:

  • primäre Emotionen (Liebe, Freude, Überraschung, Wut, Trauer und Angst),
  • sekundäre Emotionen (Liebe -> Zuneigung, Verlangen, Sehnsucht),
  • tertiäre Emotionen (Liebe -> Zuneigung -> Verehrung, Liebe, Zärtlichkeit, Anziehung).

Wir haben diese Konzepte in Monica ergänzt, beginnend bei Telefonaten. Ein neues Auswahlmenü lässt Sie beliebig viele Emotionen wählen, um sehr genau abzubilden, was Sie während eines Anrufs empfunden haben. Wir planen, Emotionen auch bei anderen wichtigen Elementen zu ergänzen, etwa bei Aktivitäten.

Das Anrufformular mit der Frage, wie Sie sich während des Anrufs gefühlt haben, zwei Emotionen sind schon gewählt.

Wetter

Wenn Sie mit einem Freund sprechen, der in einer anderen Gegend lebt, kommen Sie vermutlich irgendwann aufs Wetter. Monica hilft Ihnen dabei und zeigt das aktuelle Wetter am Wohnort Ihres Freundes. Diese Angabe stammt aus der ersten Adresse auf der Profilseite des Kontakts. Das heißt auch: Ist keine Adresse hinterlegt, erscheinen keine Wetterdaten.

Die Wetterdaten kommen von Darksky und werden alle 6 Stunden aktualisiert. Die einzige Angabe, die mit Darksky geteilt wird, sind Breiten- und Längengrad, sonst nichts. Für Betreiber eigener Instanzen bietet Darksky einen kostenlosen Tarif mit 1.000 Aufrufen pro Tag, was reichlich genügen dürfte.

Ein Kontakteintrag mit dem aktuellen Wetter am Wohnort der Person.

GPS-Koordinaten

Apropos Breiten- und Längengrad: Wir brauchten einen Weg, diese beiden Angaben für jede in Monica eingetragene Adresse zu ermitteln, um Wetterdaten anzeigen zu können. Monica 2.11 kann jede Adresse nun automatisch geokodieren, um ihre Koordinaten zu finden.

Wenn Sie eine Adresse eingeben und der Dienst auf Ihrer Instanz eingerichtet ist, versuchen wir automatisch, sie zu geokodieren, sofern Sie nicht selbst Breiten- und Längengrad für einen Ort angeben.

Das Geokodieren übernimmt LocationIQ, ein großartiges und unabhängiges Unternehmen, das einen sehr großzügigen kostenlosen Tarif mit 10.000 Aufrufen pro Tag anbietet. Wir teilen mit LocationIQ nichts außer der Adresse, um die Koordinaten abzurufen.

Aufgaben

Auf Ihrer Übersicht können Sie jetzt Aufgaben anlegen, die mit keinem Kontakt verknüpft sind.

Der Aufgabenreiter im Dashboard, mit drei Aufgaben, die zu keinem Kontakt gehören.

Verbesserungen

Wir haben intern vieles umgebaut, um unserem Ziel einer möglichst stabilen Plattform näherzukommen. Außerdem haben wir die Codeabdeckung weiter erhöht (also den Anteil unseres Codes, der tatsächlich automatisch getestet wird). Wir liegen jetzt bei 66 Prozent für die gesamte Codebasis.

Wir hoffen, Ihnen gefällt 2.11 so gut wie uns.

1 Min. Lesezeit
Stand der mobilen Apps
Regis Freyd

Ich habe die mobilen Anwendungen gerade sowohl aus dem Apple Store als auch aus dem Play Store entfernt. Der einzige Weg, sie zu bekommen, ist jetzt, sie aus dem GitHub-Repository selbst zu bauen.

Theo hat bei der ersten Fassung dieser Apps großartige Arbeit geleistet, doch die Entwicklung ist zu Beginn dieses Sommers stehen geblieben, während Monica als Plattform weiterging. Wir sind nun in der Lage, dass die mobile App nicht mehr auf dem Stand der Plattform ist und, schlimmer noch, dass wir in der API Dinge ändern werden, die die App nicht unterstützt.

Ich bin nach wie vor überzeugt, dass Wachstum und Verbreitung von Monica über eine mobile App laufen werden.

Ich würde gern Wunderbares versprechen und eine neue App in 2 Monaten ankündigen, doch tatsächlich weiß ich nicht, wie lange es dauern wird. Da Monica noch immer ein Nebenprojekt ist, können es 6 Monate oder 2 Jahre sein. Doch eines Tages werden wir eine großartige mobile Anwendung haben, so gut wie die Webfassung (wenn nicht besser).

Danke für Ihre Geduld.

Beiträge 1 bis 10 von 43