Monica v3 arrive avant la fin de 2026. Reconstruite de zéro. Toujours open source. Découvrir ce qui arrive
Monica

Blog

Notes sur la construction de Monica, sur la confidentialité des données personnelles et sur la petite mécanique du fait de rester en contact.

Page 4 sur 4

1 min de lecture
50 000 contacts
Regis Freyd

Nous venons d'atteindre un cap incroyable.

pied de page

C'est formidable et c'est un cap que je voulais partager avec vous tous. Les utilisateurs ont enregistré plus de 50 000 contacts sur Monica jusqu'ici, et le chiffre grandit chaque jour. Cela ne comprend pas les instances téléchargées et installées sur des serveurs personnels.

Sur un plan plus personnel, la communauté autour du projet m'épate. Sur GitHub, nous avons reçu plus de 200 pull requests de la communauté et les gens semblent partager le projet un peu partout sur Internet pour faire passer le mot.

J'ai hâte de voir où nous en serons dans un an. Merci à tous pour votre confiance.

2 min de lecture
Monica 0.5.0 avec le suivi des versions et la recherche
Regis Freyd

Si vous installez Monica sur un serveur qui vous appartient, vous voudrez sans doute être prévenu quand une nouvelle version sort. Avec Monica 0.5.0, c'est exactement ce que vous obtenez.

Comment cela fonctionne

En résumé, votre instance Monica envoie un ping quotidien à https://version.monicahq.com. Ce ping contient trois informations :

  • un UUID : l'identifiant unique et anonyme de votre instance,
  • la version actuelle de votre instance,
  • le nombre de contacts de votre instance.

La dernière information sert à connaître la taille des instances des personnes qui téléchargent Monica. J'ai besoin de cette information (et uniquement de celle-là) pour avancer en sachant mieux comment les gens utilisent Monica. Par ailleurs, il n'y a aucun moyen de savoir qui vous êtes : l'UUID est aléatoire, unique et anonyme.

Le code de https://version.monicahq.com est open source, hébergé sur GitHub comme tout ce que nous faisons.

En retour de cet appel, vous recevez un JSON avec :

  • un booléen indiquant si une nouvelle version est disponible,
  • la dernière version disponible,
  • toutes les notes de version de chaque publication faite depuis la version du ping,
  • le nombre de versions parues depuis la version du ping.

Ces informations sont utilisées dans l'interface. Dans le pied de page, un nouveau lien apparaît si une version est disponible. En cliquant dessus, une fenêtre s'ouvre avec les notes de la nouvelle version.

pied de page

Comment désactiver cette fonctionnalité

Toute fonctionnalité qui change le fonctionnement fondamental de Monica peut être désactivée, et celle-ci ne fait pas exception. Si vous ne voulez envoyer aucune information à https://version.monicahq.com, ajoutez simplement ceci à votre fichier .env :

  • CHECK_VERSION=false

Et c'est tout. Aucune information ne quittera jamais votre serveur. L'inconvénient est que vous ne serez plus averti automatiquement quand une nouvelle version paraît.

Chercher dans vos contacts

Vous pouvez désormais chercher vos contacts grâce à un nouveau champ de recherche dans l'en-tête. La recherche porte sur les informations suivantes :

  • Prénom et nom
  • Email
  • Rue
  • Ville
  • Code postal
  • Province
  • Préférences alimentaires
  • Métier
  • Entreprise

Les recherches devraient aussi être plutôt rapides. Nous sommes très heureux de cette fonctionnalité.

(pied de page

Pour finir

La version 0.5.0 est déjà en production et, comme toujours, vous pouvez l'installer sur un serveur qui vous appartient.

Bonne découverte !

1 min de lecture
Monica 0.4.0 avec les appels téléphoniques
Regis Freyd

Garder une trace de ce que vous avez dit aux personnes qui comptent pour vous est important. Il était déjà possible d'enregistrer des notes sur vos contacts. Vous pouvez maintenant consigner aussi un appel téléphonique, ce qui est très pratique pour savoir quand vous avez appelé quelqu'un pour la dernière fois et de quoi vous avez parlé.

Écran vide par défaut

Vue d'un contact

Filtre de la liste des contacts

La version 0.4.0 est déjà en production et, comme toujours, vous pouvez l'installer sur un serveur qui vous appartient.

Bonne découverte !

6 min de lecture
Pourquoi Laravel ?
Regis Freyd

Note : cet article est technique.

Après avoir lancé Monica sur Hacker News, j'ai reçu beaucoup de questions sur les raisons qui m'ont poussé à écrire l'outil en PHP, et avec Laravel en particulier. J'ai été surpris d'en recevoir autant sur ce sujet, car je considère qu'un langage n'a pas d'importance : seul compte ce que l'on en fait.

Dans cet article je vais expliquer pourquoi j'ai choisi PHP et Laravel, et quelles difficultés j'ai dû surmonter pour construire la première version du produit. Ce texte n'a pas vocation à déclencher une guerre entre langages.

PHP a une histoire intéressante. Beaucoup d'excellents développeurs web, qui n'utilisent probablement plus PHP aujourd'hui, y ont appris les bases de la programmation. Il était si simple à prendre en main et, même sans être un langage élégant, il a ouvert la voie à des carrières dans le web. Puis, avec le temps, PHP a été de moins en moins aimé, au point qu'il devenait presque honteux de l'utiliser ou même de dire en meetup que son entreprise s'en servait. D'autres langages, sans doute plus élégants, ont gagné en popularité (Python, Ruby) grâce à d'excellents frameworks. En parallèle, de nouveaux frameworks PHP sont apparus. Symfony par exemple. Mais Symfony restait difficile à apprendre et à utiliser. Et puis PHP est mort. Du moins c'est ce que l'on disait, en ignorant apparemment qu'énormément d'entreprises l'utilisaient encore et l'appréciaient. Ensuite PHP 5.5 est arrivé, puis PHP 7, et un nouveau framework au nom étrange est apparu : Laravel. Et les mentalités ont complètement changé. PHP n'est toujours pas aussi élégant que d'autres langages populaires, mais les choses se sont beaucoup améliorées. Il est aussi devenu rapide.

Malgré tout, PHP reste le langage que les gens adorent détester, surtout sur Hacker News. On dit qu'il ne passe pas à l'échelle. C'est probablement pour cela que Facebook et Mailchimp, entre autres grands noms, utilisent PHP aujourd'hui, à très grande échelle.

Avec ce contexte en tête, pourquoi ai-je choisi PHP et Laravel ?

  • PHP est simple à apprendre et simple à utiliser.
  • Il y a beaucoup de développeurs PHP, et si des gens veulent travailler avec moi sur le projet, le vivier de développeurs PHP est potentiellement plus large, au moins là où je vis, que celui des développeurs Ruby ou Python. Il y a aussi beaucoup de monde sur GitHub qui utilise PHP, et si je voulais que ce projet open source prenne, je devais l'écrire dans un langage où des personnes de niveaux très variés pourraient contribuer facilement.
  • La chose la plus importante quand on choisit une pile technique pour un nouveau projet, c'est la facilité à le maintenir sur la durée. PHP est simple. Il est facile à déboguer (même si cela pourrait être mieux) et facile à faire grossir (même si ce n'est pas du tout ma préoccupation aujourd'hui).
  • Laravel est de loin le meilleur framework PHP que j'aie utilisé. Il rend les choses complexes très simples. On sent que le framework a été créé pour démarrer de nouvelles applications web très vite, et c'est un vrai plaisir à utiliser. Mais sa fonctionnalité imbattable, c'est la qualité de la documentation, comparée aux autres frameworks PHP et même à beaucoup de frameworks dans d'autres langages. Tout est extrêmement bien documenté. Je ne dirai jamais assez à quel point une bonne documentation compte (ce qui me rappelle que je devrais documenter Monica davantage).
  • Il y a une immense communauté autour de PHP et de Laravel en particulier : Laracasts, Forge, Envoyer, une communauté Slack très active, pour ne citer qu'eux. Si vous avez besoin d'aide, beaucoup de monde est prêt à vous en donner.

Quels défis ai-je rencontrés pendant le développement de ce projet ?

Globalement je n'ai pas eu tant de difficultés en développant la version actuelle de Monica. Ce n'est pas une application complexe, et je n'ai pas de problèmes de montée en charge car la base d'utilisateurs reste modeste (environ 7800 utilisateurs au total, 4300 actifs). Mais certains détails d'implémentation sont mauvais, non par mauvaise pratique, mais parce que mes compétences techniques n'étaient pas suffisantes pour résoudre ces problèmes à court terme. J'espère que lister ces erreurs aidera d'autres personnes à ne pas les commettre, ou que des gens bienveillants m'écriront pour me dire comment j'aurais pu les corriger.

  • Dans les premières versions, j'utilisais beaucoup d'événements et de listeners. Le concept est formidable, mais j'ai eu énormément de mal à tester unitairement les classes de base à cause d'eux. De plus, plus je les utilisais, plus la magie opérait en coulisses. Je me suis dit que les personnes plongeant dans le code auraient du mal à comprendre pourquoi certaines choses se produisaient à la création d'un objet, par exemple. Dans mon esprit, les événements et les listeners rendaient l'application plus difficile à comprendre, alors j'ai décidé de tous les supprimer (enfin, 99 % d'entre eux, il reste deux listeners dont je dois me débarrasser).
  • Au début, la base de données était entièrement chiffrée. Pour des raisons que je n'ai toujours pas comprises, il y avait de temps en temps des bugs dans le déchiffrement, ce qui menait à des données irrécupérables. Comme je ne voulais pas traiter ce problème à ce stade, j'ai décidé de retirer le chiffrement. Par ailleurs, des données chiffrées rendaient impossible tout tri ou toute recherche dans mes requêtes, ce qui aurait posé problème sur la durée. Il existe sûrement des solutions à ces deux problèmes, mais je voulais me concentrer sur de nouvelles fonctionnalités plutôt que sur celui-ci.
  • Je n'ai pas écrit de tests unitaires avant de lancer l'application. Cela m'a vraiment coûté cher. Je ne pense pas qu'il faille viser 100 % de couverture, mais il faut au moins des tests pour les fonctionnalités principales de son site. Sinon on se retrouve avec une tonne de bugs auxquels on n'avait pas pensé et, en essayant de les corriger, d'autres parties de l'application sont touchées par le correctif. Cela devient vite un cauchemar. Laravel rend les tests unitaires très faciles : j'aurais dû prendre cela plus au sérieux. À partir de la prochaine version, aucune pull request ne sera fusionnée sans tests unitaires, voire sans tests fonctionnels.

Conclusion

Voilà quelques raisons pour lesquelles j'ai choisi Laravel. Comme je le disais au début, votre projet ne se résume pas au langage. À moins que votre projet ne soit précisément d'apprendre un nouveau langage, vous ne devriez pas passer des semaines à choisir un langage ou un framework. Restez sur ce que vous connaissez et construisez quelque chose. Vos utilisateurs se moquent que votre code soit laid ou que vous ayez choisi Python plutôt que Ruby.

1 min de lecture
Monica 0.3.0 avec les tags
Regis Freyd

Seulement 5 jours après la v0.2.0 et déjà une autre grosse version. Assez grosse pour mériter un nouveau numéro.

Quand vous avez beaucoup de contacts dans votre compte, vous pouvez désormais les classer avec des tags. Les tags fonctionnent comme des dossiers, sauf qu'un contact peut en avoir plusieurs. Vous gardez ainsi une souplesse maximale pour organiser vos contacts comme vous le souhaitez.

Écran vide par défaut

Les tags se saisissent juste sous le nom du contact.

Vue d'un contact

Une fois les contacts taggés, vous voyez leurs tags dans la liste des contacts, et vous pouvez cliquer dessus pour filtrer la liste.

Filtre de la liste des contacts

Enfin, vous pouvez supprimer des tags depuis la vue d'un contact ou depuis un nouveau panneau de réglages créé pour cela.

Réglages

La version 0.3.0 est déjà en production et, comme toujours, vous pouvez l'installer sur un serveur qui vous appartient.

Bonne découverte !

1 min de lecture
Monica 0.2.0 avec vCard
Regis Freyd

L'une des fonctionnalités les plus demandées est la possibilité d'importer ses contacts depuis Google. Google permet d'exporter les données de vos contacts au format vCard, le standard universel d'échange d'informations de contact. Monica 0.2.0 ajoute la possibilité d'importer vos données depuis un fichier vCard (.vcard ou .vcf), pour remplir votre compte avec la plupart de vos données au lieu d'ajouter vos amis un par un.

Rapport d'import par défaut

Juste après l'import de vos contacts, vous êtes redirigé vers un tableau de bord où vous pouvez suivre l'état de l'import. Comme certains utilisateurs peuvent avoir des milliers de contacts, Monica les importe de façon asynchrone. Il faudra patienter un peu avant que tous les contacts soient importés.

Tableau de bord d'import par défaut

Vous pouvez cliquer sur un import précis pour voir ce qui s'est passé.

Tableau de bord d'import par défaut

Nous avons aussi ajouté la possibilité de réinitialiser votre compte, bien pratique si vous importez des milliers de contacts et que quelque chose se passe mal. Réinitialiser un compte supprime tout, sauf vous.

La version 0.2.0 est déjà en production et, comme toujours, vous pouvez l'installer sur un serveur qui vous appartient.

Bonne découverte !

5 min de lecture
Pourquoi l'open source ? Vous êtes fou ?
Regis Freyd

Beaucoup de gens m'ont écrit pour me demander pourquoi Monica est open source. Les raisons sont nombreuses et je veux les détailler ici. Publier un produit grand public en open source tout en essayant d'en vivre n'est pas si courant (malheureusement) et cela inspirera peut-être d'autres personnes à faire de même. J'ai moi-même été inspiré par la façon dont Sentry, GitLab et bien d'autres ont bâti des entreprises autour de produits open source et, même si Monica ne génère encore aucun revenu, je voulais partager mon point de vue sur le sujet.

Les avantages de publier son produit en open source

  • J'ai toujours voulu créer un produit open source. Par idéalisme sans doute. J'utilise des produits open source depuis aussi longtemps que je me souvienne et je voulais modestement contribuer à cet écosystème en retour. Je trouvais aussi que cela faisait bien sur un CV.
  • Monica contient beaucoup de données personnelles. Je dirais même que ces données sont potentiellement bien plus sensibles que ce que les gens publient sur Facebook. Pour certains, c'est un enjeu de vie privée majeur. En rendant Monica open source et en offrant des moyens de l'installer vous-même sur une machine que vous possédez et contrôlez, c'est à vous de décider si vous souhaitez prendre le risque de confier vos données à quelqu'un d'autre ou les garder sous votre contrôle.
  • À cause de la nature sensible des données hébergées par Monica, et parce que je suis un développeur seul, moins bon que la communauté dans son ensemble, j'avais besoin d'ouvrir le code pour que des centaines d'yeux l'examinent et y cherchent des bugs, des failles potentielles et des améliorations. Et trouvent bien plus vite que moi ce qui doit être corrigé ou amélioré.
  • Quand les gens ont accès à votre code source et deviennent utilisateurs de la plateforme, vous serez sidéré de voir à quel point ils contribuent. Ils proposent des pull requests avec d'excellentes idées et de très bons concepts, que vous pouvez immédiatement intégrer au produit au bénéfice de tous. C'est formidable. Bien sûr, toutes les idées ne sont pas bonnes et vous refuserez des pull requests de temps en temps, pour diverses raisons. Mais globalement c'est extrêmement positif et vous recevrez de très belles fonctionnalités.
  • À une époque où les réseaux sociaux sont extrêmement opaques sur ce qu'ils collectent et sur l'usage qu'ils en font, les gens se préoccupent de plus en plus de leur vie privée. Pour une très bonne raison. Monica n'affiche pas de publicité et ne revend aucune donnée. Mais pourquoi me croire sur parole ? Pour une raison : le code source librement accessible est exactement celui qui tourne en production. Je ne maintiens pas un second dépôt avec des modifications privées. Tout ce que je fais est donc transparent et les utilisateurs peuvent vérifier que je ne fais rien de mal. C'est une question de transparence et de relation fondée sur la confiance.
  • Les développeurs sont la partie la plus importante d'un écosystème. Quand ils aiment ce que vous faites, ils créent un écosystème autour et des choses épatantes auxquelles vous n'auriez jamais pensé. C'est un moment magique quand cela arrive. Les développeurs sont aussi de puissants prescripteurs et vos meilleurs ambassadeurs. Les non-geeks se tournent souvent vers eux pour un conseil technique. Et s'ils aiment Monica, ils en parleront avec presque autant de portée qu'un article sur les Kardashian dans un magazine people.

Les inconvénients de publier son produit en open source

  • Quelle que soit votre licence, quelqu'un peut reprendre votre code, monter une entreprise autour et prendre le marché que vous visiez. Vous n'y pouvez rien. Un adage répandu dit qu'une idée ne vaut rien, que seule l'exécution compte. Dans le cas de Monica, c'est plus qu'une idée : le code est déjà là, c'est déjà une exécution. Plus le produit sera mature, plus il sera tentant pour d'autres de voler le code. Je suis prêt à vivre avec, tant que la communauté en profite.
  • Si vous grossissez, vous deviendrez peut-être moins attirant pour des investisseurs ou des acheteurs potentiels. Mais vous savez quoi ? Dans mon cas c'est une bonne nouvelle, parce que je ne construis pas quelque chose pour eux, je construis quelque chose pour des utilisateurs. Ce que les fonds d'investissement penseront du produit m'importe peu.
  • Animer une communauté prend du temps. Ne vous méprenez pas. J'adore échanger avec elle et je me sens extrêmement chanceux qu'une communauté passionnée existe déjà autour de Monica. Mais pendant que j'essaie de construire la suite du produit, je passe chaque jour beaucoup de temps à examiner des tickets, à vérifier des pull requests et à répondre à des emails. Une part importante de mon temps, en réalité. Encore une fois, je ne dis pas que c'est une mauvaise chose. J'y prends même beaucoup de plaisir. Mais ce temps est à prendre en compte si vous décidez d'ouvrir votre produit : il faut être prêt à participer et à prendre soin de votre communauté.

Je ne vois pas d'autre inconvénient. Vous devriez envisager de publier votre prochaine idée en open source.

2 min de lecture
Avez-vous vraiment besoin d'importer vos données ?
Regis Freyd

Les deux fonctionnalités les plus demandées sur Monica jusqu'ici sont :

  • la possibilité d'importer des contacts depuis une source externe,
  • l'automatisation, autant que possible, de l'enregistrement des choses liées à vos relations.

Je comprends parfaitement pourquoi les gens le demandent. Monica sert justement à enregistrer et à documenter les interactions sociales avec les personnes qui comptent pour vous. Saisir tous les noms un par un est une corvée pour beaucoup. Et devoir tout noter à la main après une conversation téléphonique, par exemple, l'est encore plus.

Mais réfléchissez-y. Monica est conçue pour vous aider à entretenir de meilleures relations. Construire une relation n'est pas quelque chose que l'on devrait automatiser ou rendre plus facile. Construire une relation est un effort conscient. Ce n'est pas simple. Cela demande un peu de travail. Si vous pouviez importer 500 contacts, qu'est-ce que cela produirait ? Vous auriez désormais 500 personnes dans Monica, prêtes à être documentées. Ferez-vous vraiment l'effort de renseigner toutes les informations de ces 500 personnes ? Peut-on seulement être ami avec autant de monde ?

J'aime l'idée de devoir saisir mes contacts un par un, parce que cela m'oblige à réfléchir à qui compte le plus pour moi. Pour chaque personne que j'ajoute à Monica, je choisis consciencieusement si elle mérite d'une certaine manière (le mot est bien trop fort, mais vous voyez l'idée) que je fasse l'effort de documenter notre relation. Ensuite, pour chaque personne ajoutée, je dois remplir toutes ces informations que je dois activement aller chercher. J'irais jusqu'à dire qu'un import de masse, sans possibilité de trier, ruinerait même l'objectif principal de l'application.

Mais c'est ma vision personnelle du produit. Ma façon de le voir n'est peut-être pas la vôtre. D'où le besoin d'un importateur. Nous le construirons, c'est certain. Mais avant d'importer vos contacts, posez-vous la question : avez-vous besoin de garder des informations sur autant de personnes ?

1 min de lecture
Le support multi-utilisateur arrive
Regis Freyd

Monica est conçue pour héberger toutes les informations privées concernant vos contacts. Par nature, ces informations sont personnelles et confidentielles. Il existe pourtant des cas où vous souhaitez les partager avec quelqu'un d'autre, votre conjoint par exemple. On imagine facilement comment Monica, dans le contexte d'un couple, peut aider ce couple à organiser, comme une seule entité, les relations qu'il entretient avec ses proches.

Pour répondre à ce besoin, nous introduisons le support de plusieurs utilisateurs dans un même compte.

Image représentant le support multi-utilisateur

L'ajout d'un utilisateur se fait par email. Par mesure de sécurité, la personne que vous invitez devra saisir, au moment de son inscription, l'email de l'utilisateur qui l'a invitée.

La gestion des utilisateurs se trouve dans l'onglet Réglages de votre compte.

Abonnements

Il s'agit de la première fonctionnalité payante. Le plan payant s'appelle Chandler et coûte 10 USD par mois. Ce plan est uniquement disponible sur https://monicahq.com et n'affecte pas les installations auto-hébergées. Si vous hébergez Monica sur votre propre serveur, vous avez accès gratuitement aux fonctionnalités payantes.

Consultez la pull request pour en savoir plus.

Articles 31 à 39 sur 39