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.

Seite 4 von 4

1 Min. Lesezeit
50 000 Kontakte
Regis Freyd

Wir haben gerade einen erstaunlichen Meilenstein erreicht.

Fußzeile

Das ist großartig und ein Meilenstein, den ich mit Ihnen allen teilen möchte. Nutzer haben bislang mehr als 50 000 Kontakte in Monica angelegt, und es werden täglich mehr. Die Instanzen, die heruntergeladen und auf eigenen Servern installiert wurden, sind darin nicht enthalten.

Persönlich bin ich von der Gemeinschaft rund um das Projekt begeistert. Auf GitHub haben wir über 200 Pull Requests aus der Gemeinschaft erhalten, und die Leute teilen das Projekt offenbar überall im Internet, um die gute Nachricht zu verbreiten.

Ich bin gespannt, wo wir in einem Jahr stehen. Vielen Dank Ihnen allen für Ihr Vertrauen.

2 Min. Lesezeit
Monica 0.5.0 mit Versionsprüfung und Suche
Regis Freyd

Wenn Sie Monica auf einem eigenen Server installieren, möchten Sie wahrscheinlich erfahren, wenn eine neue Version verfügbar ist. Mit Monica 0.5.0 bekommen Sie genau das.

Wie das funktioniert

Kurz gesagt sendet Ihre Monica-Instanz täglich einen Ping an https://version.monicahq.com. Der Ping enthält drei Angaben:

  • eine UUID: die eindeutige, anonyme Kennung Ihrer Instanz,
  • die aktuelle Version Ihrer Instanz,
  • die Anzahl der Kontakte in Ihrer Instanz.

Die letzte Angabe dient dazu, die Größe der Instanzen jener Menschen zu kennen, die Monica herunterladen. Ich brauche diese Angabe (und ausschließlich diese), um mit besserem Wissen darüber weiterzuarbeiten, wie Monica genutzt wird. Es gibt zudem keine Möglichkeit herauszufinden, wer Sie sind: Die UUID ist zufällig, eindeutig und anonym.

Der Code von https://version.monicahq.com ist Open Source und liegt auf GitHub, wie alles, was wir tun.

Als Antwort auf diesen Aufruf erhalten Sie ein JSON mit:

  • einem Wahrheitswert, ob eine neue Version verfügbar ist,
  • der neuesten verfügbaren Version,
  • allen Versionshinweisen jeder Veröffentlichung seit der Version des Pings,
  • der Anzahl der Versionen seit der Version des Pings.

Diese Informationen werden in der Oberfläche verwendet. In der Fußzeile erscheint ein neuer Link, wenn eine neue Version verfügbar ist. Ein Klick darauf öffnet ein Fenster mit den Versionshinweisen.

Fußzeile

Wie Sie diese Funktion abschalten

Jede Funktion, die Monicas grundlegende Arbeitsweise verändert, lässt sich abschalten, und diese ist keine Ausnahme. Wenn Sie keinerlei Informationen an https://version.monicahq.com senden möchten, ergänzen Sie einfach Folgendes in Ihrer .env-Datei:

  • CHECK_VERSION=false

Das war es. Es verlässt nie eine Information Ihren Server. Der Nachteil ist, dass Sie nicht mehr automatisch über neue Veröffentlichungen informiert werden.

Ihre Kontakte durchsuchen

Sie können Ihre Kontakte jetzt über ein neues Suchfeld in der Kopfzeile durchsuchen. Die Suche berücksichtigt folgende Angaben:

  • Vor- und Nachname
  • E-Mail
  • Straße
  • Stadt
  • Postleitzahl
  • Region
  • Essensvorlieben
  • Beruf
  • Unternehmen

Die Suchen sollten außerdem ziemlich schnell sein. Wir freuen uns sehr über diese Funktion.

(Fußzeile

Zum Schluss

Version 0.5.0 ist bereits in Produktion und wie immer können Sie sie auf einem eigenen Server installieren.

Viel Freude damit!

1 Min. Lesezeit
Monica 0.4.0 mit Telefonaten
Regis Freyd

Festzuhalten, was Sie den Menschen gesagt haben, die Ihnen wichtig sind, ist wertvoll. Notizen zu Ihren Kontakten waren bereits möglich. Jetzt können Sie auch ein Telefonat protokollieren, was sehr praktisch ist, um zu wissen, wann Sie jemanden zuletzt angerufen haben und worüber Sie gesprochen haben.

Leerer Standardbildschirm

Kontaktansicht

Filter der Kontaktliste

Version 0.4.0 ist bereits in Produktion und wie immer können Sie sie auf einem eigenen Server installieren.

Viel Freude damit!

6 Min. Lesezeit
Warum Laravel?
Regis Freyd

Hinweis: Dies ist ein technischer Beitrag.

Nachdem ich Monica auf Hacker News vorgestellt hatte, erreichten mich viele Fragen, warum ich das Werkzeug mit PHP und insbesondere mit Laravel geschrieben habe. Ich war überrascht, dass es so viele Fragen dazu gab, denn ich finde, die Sprache spielt keine Rolle. Es zählt nur, was man damit macht.

In diesem Beitrag erkläre ich, warum ich PHP und Laravel gewählt habe und welche Schwierigkeiten ich beim Bau der ersten Version überwinden musste. Der Text soll keinen Krieg zwischen Sprachen anzetteln.

PHP hat eine interessante Geschichte. Viele großartige Webentwickler, die PHP heute vermutlich nicht mehr nutzen, haben damit die Grundlagen des Programmierens gelernt. Es war so einfach zu benutzen und einzusteigen, und obwohl es keine elegante Sprache war, ebnete es den Weg für Karrieren in der Webentwicklung. Mit der Zeit wurde PHP dann weniger geliebt, bis es fast schon peinlich war, PHP zu verwenden oder auf einem Meetup zu sagen, dass die eigene Firma es einsetzt. Andere, wohl elegantere Sprachen gewannen dank großartiger Frameworks stark an Beliebtheit (Python, Ruby). Zugleich erschienen neue PHP-Frameworks, Symfony zum Beispiel. Doch Symfony war weiterhin schwer zu erlernen und zu benutzen. Und dann starb PHP. So hieß es jedenfalls, wobei offenbar ignoriert wurde, dass sehr viele Unternehmen es weiterhin einsetzten und schätzten. Dann kam PHP 5.5, gefolgt von PHP 7, und ein neues Framework mit einem seltsamen Namen tauchte auf: Laravel. Und die Einstellung der Leute änderte sich vollständig. PHP ist immer noch nicht so elegant wie andere beliebte Sprachen, aber vieles ist deutlich besser geworden. Und schnell ist es obendrein.

Trotzdem ist PHP nach wie vor die Sprache, die man liebend gern hasst, besonders auf Hacker News. Es heißt, PHP skaliere nicht. Vermutlich deshalb setzen Facebook und Mailchimp, neben anderen großen Namen, heute PHP ein, und zwar in großem Maßstab.

Warum habe ich mit diesem Hintergrund PHP und Laravel gewählt?

  • PHP ist leicht zu lernen und leicht zu benutzen.
  • Es gibt viele PHP-Entwickler, und wenn Menschen mit mir am Projekt arbeiten wollen, ist der mögliche Pool an PHP-Entwicklern zumindest dort, wo ich lebe, größer als der an Ruby- oder Python-Entwicklern. Außerdem nutzen viele Leute auf GitHub PHP, und wenn dieses Open-Source-Projekt Zuspruch finden sollte, musste ich es in einer Sprache schreiben, in der Menschen mit ganz unterschiedlichem Kenntnisstand leicht beitragen können.
  • Das Wichtigste bei der Wahl eines Technologie-Stacks für ein neues Projekt ist, wie leicht es sich auf lange Sicht warten lässt. PHP ist einfach. Es ist leicht zu debuggen (auch wenn das besser sein könnte) und leicht zu skalieren (auch wenn das derzeit überhaupt nicht mein Thema ist).
  • Laravel ist mit Abstand das beste PHP-Framework, das ich je benutzt habe. Es macht komplexe Dinge sehr einfach. Man merkt, dass es entworfen wurde, um neue Webanwendungen wirklich schnell zu starten, und es macht große Freude. Seine herausragende Stärke ist jedoch die Qualität der Dokumentation, verglichen mit anderen PHP-Frameworks und sogar mit vielen Frameworks anderer Sprachen. Alles ist ausgesprochen gut dokumentiert. Ich kann gar nicht genug betonen, wie wichtig gute Dokumentation ist (was mich daran erinnert, dass ich Monica noch besser dokumentieren sollte).
  • Rund um PHP und besonders Laravel gibt es eine riesige Gemeinschaft: Laracasts, Forge, Envoyer und eine starke Slack-Gemeinschaft, um nur einige zu nennen. Wenn Sie Hilfe brauchen, stehen viele Menschen bereit.

Welche Herausforderungen hatte ich bei der Entwicklung dieses Projekts?

Insgesamt hatte ich bei der Entwicklung der aktuellen Version von Monica nicht allzu viele Herausforderungen. Es ist keine komplexe Anwendung, und ich habe keine Skalierungsprobleme, da die Nutzerbasis noch recht klein ist (rund 7800 Nutzer insgesamt, 4300 aktive). Doch es gibt Umsetzungsdetails, die ich falsch gemacht habe. Nicht, weil es schlechte Praxis war, sondern weil meine technischen Fähigkeiten nicht ausreichten, um diese Probleme kurzfristig zu lösen. Hoffentlich hilft diese Liste anderen, die Fehler nicht zu wiederholen, oder nette Menschen schreiben mir, wie ich sie hätte beheben können.

  • In früheren Versionen habe ich viele Events und Listener benutzt. Das Konzept ist großartig, doch wegen ihnen hatte ich große Probleme beim Unit-Testen der Basisklassen. Zudem geschah, je mehr ich sie einsetzte, umso mehr Magie im Hintergrund. Ich dachte, wer in die Codebasis einsteigt, würde sich schwertun zu verstehen, warum beim Erzeugen eines Objekts bestimmte Dinge passieren. Aus meiner Sicht machten Events und Listener die Anwendung schwerer verständlich, also habe ich sie alle entfernt (nun ja, 99 Prozent davon, zwei Listener muss ich noch loswerden).
  • Anfangs war die Datenbank vollständig verschlüsselt. Aus Gründen, die ich bis heute nicht verstehe, gab es hin und wieder Fehler beim Entschlüsseln, was zu Daten führte, die ich nicht wiederherstellen konnte. Da ich mich zu diesem Zeitpunkt nicht damit befassen wollte, habe ich die Verschlüsselung entfernt. Außerdem machten verschlüsselte Daten jede Art von Sortierung oder Suche in meinen Abfragen unmöglich, was auf Dauer problematisch geworden wäre. Sicher gibt es Lösungen für beide Probleme, aber ich wollte mich auf neue Funktionen konzentrieren, statt dieses eine Problem zu lösen.
  • Ich habe vor dem Start der Anwendung keine Unit-Tests geschrieben. Das hat sich bitter gerächt. Ich glaube nicht, dass wir 100 Prozent Testabdeckung anstreben sollten, aber zumindest sollte es Tests für die Hauptfunktionen der Seite geben. Sonst landet man bei einem Berg von Fehlern, an die man nie gedacht hat, und während man sie behebt, sind andere Teile der Anwendung von der Korrektur betroffen. Das wird schnell zum Albtraum. Laravel macht Unit-Tests sehr einfach. Ich hätte das ernster nehmen sollen. Ab der nächsten Version wird kein Pull Request mehr übernommen, wenn keine Unit-Tests und vielleicht sogar funktionale Tests dabei sind.

Fazit

Das sind einige Gründe, warum ich Laravel gewählt habe. Wie eingangs gesagt: Bei Ihrem Projekt geht es nicht um die Sprache. Sofern es in Ihrem Projekt nicht gerade darum geht, eine neue Sprache zu lernen, sollten Sie keine Wochen mit der Wahl einer Sprache oder eines Frameworks verbringen. Bleiben Sie bei dem, was Sie kennen, und bauen Sie einfach etwas. Ihren Nutzern ist es egal, ob Ihr Code hässlich ist oder ob Sie Python statt Ruby gewählt haben.

1 Min. Lesezeit
Monica 0.3.0 mit Tags
Regis Freyd

Nur 5 Tage nach v0.2.0 und schon wieder eine große Veröffentlichung. So groß, dass sie eine neue Version verdient hat.

Wenn Sie viele Kontakte in Ihrem Konto haben, können Sie sie jetzt mit Tags ordnen. Tags funktionieren wie Ordner, nur dass ein Kontakt mehrere davon haben kann. So bleibt Ihnen größtmögliche Freiheit, Ihre Kontakte so zu verwalten, wie Sie möchten.

Leerer Standardbildschirm

Tags werden direkt unter dem Namen des Kontakts eingegeben.

Kontaktansicht

Sobald Kontakte Tags haben, sehen Sie diese in der Kontaktliste und können darauf klicken, um die Liste zu filtern.

Filter der Kontaktliste

Löschen können Sie Tags entweder in der Kontaktansicht oder in einem neuen Einstellungsbereich, der genau dafür angelegt wurde.

Einstellungen

Version 0.3.0 ist bereits in Produktion und wie immer können Sie sie auf einem eigenen Server installieren.

Viel Freude damit!

1 Min. Lesezeit
Monica 0.2.0 mit vCard
Regis Freyd

Einer der größten Funktionswünsche ist der Import von Kontakten aus Google. Google erlaubt den Export Ihrer Kontaktdaten im vCard-Format, dem universellen Standard für den Austausch von Kontaktinformationen. Monica 0.2.0 ergänzt den Import Ihrer Daten aus einer vCard-Datei (.vcard oder .vcf), sodass Sie Ihr Konto mit den meisten Ihrer Daten füllen können, statt Ihre Freunde einzeln anzulegen.

Standard-Importbericht

Direkt nach dem Import Ihrer Kontakte landen Sie auf einer Übersicht, die den Stand des Imports zeigt. Da Nutzer Tausende Kontakte haben können, importiert Monica sie asynchron. Sie müssen also einen Moment warten, bis alle Kontakte importiert sind.

Standard-Importübersicht

Sie können auf einen bestimmten Import klicken, um zu sehen, was passiert ist.

Standard-Importübersicht

Außerdem haben wir eine Funktion ergänzt, um Ihr Konto zurückzusetzen. Das ist praktisch, wenn Sie Tausende Kontakte importieren und etwas schiefgeht. Ein Zurücksetzen löscht alles, außer Ihnen.

Version 0.2.0 ist bereits in Produktion und wie immer können Sie sie auf einem eigenen Server installieren.

Viel Freude damit!

5 Min. Lesezeit
Warum Open Source? Sind Sie verrückt?
Regis Freyd

Viele Leute haben mir geschrieben und gefragt, warum Monica Open Source ist. Es gibt dafür viele Gründe, die ich hier ausführlich beschreiben möchte. Ein Endkundenprodukt als Open Source zu veröffentlichen und gleichzeitig damit Geld verdienen zu wollen, ist leider nicht besonders verbreitet, und vielleicht inspiriert das andere dazu, es genauso zu machen. Mich selbst hat inspiriert, wie Sentry, GitLab und viele andere Unternehmen rund um Open-Source-Produkte aufgebaut haben. Auch wenn Monica noch keine Einnahmen erzielt, wollte ich meine Gedanken dazu teilen.

Die Vorteile, sein Produkt als Open Source zu veröffentlichen

  • Ich wollte schon immer ein Open-Source-Produkt erschaffen. Vermutlich aus Idealismus. Ich benutze Open-Source-Produkte, solange ich denken kann, und wollte im Gegenzug bescheiden zum Ökosystem beitragen. Außerdem fand ich, dass es sich gut im Lebenslauf macht.
  • Monica enthält viele persönliche Daten. Ich würde sogar sagen, dass diese Daten weit heikler sind als das, was Menschen auf Facebook veröffentlichen. Für manche ist das ein großes Datenschutzthema. Indem Monica Open Source ist und sich auf einem Rechner installieren lässt, den Sie besitzen und kontrollieren, entscheiden Sie selbst, ob Sie das Risiko eingehen wollen, Ihre Daten bei jemand anderem liegen zu lassen, oder ob Sie sie unter Ihrer Kontrolle behalten.
  • Wegen der Sensibilität der Daten in Monica, und weil ich ein einzelner Entwickler bin, der nicht so gut ist wie die Gemeinschaft als Ganzes, musste ich den Quelltext öffnen, damit Hunderte Augen ihn prüfen und nach Fehlern, möglichen Lücken und Verbesserungen suchen. Und viel schneller finden, was behoben oder verbessert werden sollte, als ich es allein könnte.
  • Wenn Menschen Zugang zu Ihrem Quelltext haben und die Plattform selbst nutzen, werden Sie staunen, wie viel sie beitragen. Sie schicken Pull Requests mit tollen Ideen und Konzepten, die Sie sofort ins Produkt übernehmen können, sodass alle davon profitieren. Das ist großartig. Natürlich sind nicht alle Ideen gut und Sie werden hin und wieder aus verschiedenen Gründen einen Pull Request ablehnen. Aber insgesamt ist es äußerst positiv und Sie bekommen großartige neue Funktionen.
  • In einer Zeit, in der soziale Netzwerke extrem undurchsichtig damit umgehen, was sie sammeln und wie sie es verwenden, sorgen sich Menschen immer mehr um ihre Privatsphäre. Aus gutem Grund. Monica zeigt keine Werbung und verkauft keine Daten weiter. Aber warum sollten Sie mir das glauben? Aus einem Grund: Der frei verfügbare Quelltext ist exakt das, was in Produktion läuft. Ich pflege keinen zweiten Zweig mit privaten Änderungen. Alles, was ich tue, ist damit transparent, und die Nutzer können kontrollieren, dass ich nichts Unlauteres mache. Es geht um Transparenz und um eine Beziehung, die auf Vertrauen beruht.
  • Entwickler sind der wichtigste Teil eines Ökosystems. Wenn ihnen gefällt, was Sie tun, entsteht rundherum ein Ökosystem und es entstehen Dinge, an die Sie nie gedacht hätten. Das ist ein sehr magischer Moment. Entwickler sind zudem einflussreiche Multiplikatoren und Ihre besten Botschafter. Weniger technische Menschen fragen sie oft nach dem neuesten Rat in Technikfragen. Und wenn ihnen Monica gefällt, sprechen sie darüber mit fast derselben Reichweite wie ein Beitrag über die Kardashians in einer Klatschzeitschrift.

Die Nachteile, sein Produkt als Open Source zu veröffentlichen

  • Unabhängig von Ihrer Lizenz besteht das Risiko, dass jemand Ihren Code nimmt, ein Unternehmen darum herum gründet und den Markt besetzt, den Sie erreichen wollten. Dagegen können Sie nichts tun. Ein bekanntes Sprichwort sagt, eine Idee sei nichts wert, nur die Umsetzung zähle. Bei Monica ist es mehr als eine Idee: Der Code ist bereits da und ist bereits eine Umsetzung. Je reifer das Produkt wird, desto verlockender wird es für andere, den Code zu stehlen. Ich kann damit leben, solange die Gemeinschaft von den Ergebnissen profitiert.
  • Wenn Sie groß werden, sind Sie für Wagniskapitalgeber oder mögliche Käufer vielleicht weniger attraktiv. Aber wissen Sie was? In meinem Fall ist das eine gute Nachricht, denn ich baue nichts für sie, ich baue etwas für Nutzer. Was Investoren über das Produkt denken, ist mir gleich.
  • Der Umgang mit der Gemeinschaft kostet Zeit. Verstehen Sie mich nicht falsch. Ich tausche mich sehr gern mit ihr aus und bin überaus dankbar, dass es rund um Monica bereits eine leidenschaftliche Gemeinschaft gibt. Doch während ich versuche, das Nächste für das Produkt zu bauen, verbringe ich jeden Tag viel Zeit damit, Tickets zu sichten, Pull Requests zu prüfen und E-Mails zu beantworten. Tatsächlich einen erheblichen Teil meiner Zeit. Nochmals: Ich sage nicht, dass das schlecht ist. Ich genieße es sogar sehr. Aber dieser Zeitaufwand ist etwas, das Sie bedenken sollten, wenn Sie Ihr Produkt öffnen: Sie müssen bereit sein, mitzumachen und sich um Ihre Gemeinschaft zu kümmern.

Weitere Nachteile fallen mir nicht ein. Sie sollten in Erwägung ziehen, Ihre nächste Idee als Open Source zu veröffentlichen.

2 Min. Lesezeit
Müssen Sie Ihre Daten wirklich importieren?
Regis Freyd

Die beiden am häufigsten gewünschten Funktionen in Monica sind bisher:

  • Kontakte aus einer externen Quelle importieren zu können,
  • das Festhalten von Dingen rund um Ihre Beziehungen so weit wie möglich zu automatisieren.

Ich verstehe gut, warum das gewünscht wird. Bei Monica geht es genau darum, soziale Interaktionen mit den Menschen festzuhalten und zu dokumentieren, die Ihnen wichtig sind. Alle Namen einzeln einzutippen, empfinden viele als mühsame Aufgabe. Und nach einem Telefonat alles von Hand zu notieren, ist noch mühsamer.

Denken Sie aber einmal darüber nach. Monica soll Ihnen zu besseren Beziehungen verhelfen. Beziehungen aufzubauen ist nichts, was wir automatisieren oder uns leichter machen sollten. Beziehungen aufzubauen ist eine bewusste Anstrengung. Es ist nicht einfach. Es erfordert ein wenig Arbeit. Wenn Sie 500 Kontakte importieren könnten, was würde das mit Ihnen machen? Sie hätten dann 500 Menschen in Monica, bereit, dokumentiert zu werden. Werden Sie sich wirklich die Mühe machen, für diese 500 Personen alle Informationen einzugeben? Kann man überhaupt mit so vielen Menschen befreundet sein?

Mir gefällt der Gedanke, meine Kontakte einzeln eingeben zu müssen, weil es mich dazu zwingt, darüber nachzudenken, wer mir wichtiger ist. Bei jeder Person, die ich in Monica aufnehme, entscheide ich gewissenhaft, ob sie es irgendwie verdient (das Wort ist eindeutig zu stark, aber Sie verstehen, was ich meine), dass ich mir die Mühe mache, unsere Beziehung zu dokumentieren. Danach muss ich für jede Person all jene Informationen ausfüllen, nach denen ich aktiv suchen muss. Ich würde sogar so weit gehen zu sagen: Ein Massenimport ohne die Möglichkeit auszuwählen, würde den eigentlichen Zweck der Anwendung zunichtemachen.

Das ist allerdings meine persönliche Sicht auf das Produkt. Wie ich es sehe, ist vielleicht nicht, wie Sie es sehen. Daher der Bedarf an einem Import. Wir werden ihn bauen, ganz sicher. Doch bevor Sie Ihre Kontakte importieren, denken Sie darüber nach: Brauchen Sie wirklich Informationen über so viele Menschen?

1 Min. Lesezeit
Unterstützung für mehrere Benutzer
Regis Freyd

Monica ist dafür gedacht, alle privaten Informationen über Ihre Kontakte aufzubewahren. Diese Informationen sind naturgemäß persönlich und vertraulich. Es gibt jedoch Fälle, in denen Sie sie mit jemandem teilen möchten, mit Ihrem Partner zum Beispiel. Man sieht schnell, wie Monica einem Paar dabei helfen kann, die Beziehungen zu seinen Angehörigen als eine einzige Einheit zu organisieren.

Für diesen Anwendungsfall führen wir die Unterstützung mehrerer Benutzer in einem einzigen Konto ein.

Bild zur Unterstützung mehrerer Benutzer

Benutzer werden per E-Mail hinzugefügt. Als Sicherheitsmaßnahme muss die eingeladene Person bei der Registrierung die E-Mail-Adresse desjenigen eingeben, der sie eingeladen hat.

Die Benutzerverwaltung finden Sie im Reiter Einstellungen Ihres Kontos.

Abonnements

Dies ist die erste kostenpflichtige Funktion. Der kostenpflichtige Tarif heißt Chandler und kostet 10 USD pro Monat. Dieser Tarif ist ausschließlich auf https://monicahq.com verfügbar und betrifft selbst gehostete Installationen nicht. Wenn Sie Monica auf Ihrem eigenen Server betreiben, stehen Ihnen die kostenpflichtigen Funktionen gratis zur Verfügung.

Werfen Sie einen Blick auf den Pull Request, um mehr darüber zu erfahren.

Beiträge 31 bis 39 von 39