We have received our first award: Open Source Rookie of the Year 2018, which recognizes some of the most innovative and influential open source projects launched each year. It’s great to see Monica being recognized, but the community should be recognized as well. It’s thanks to you, the community, that we are here today. You are the driving force behind this project, the reason we are building it, and you help decide what we should build next. I’m proud to be part of this adventure.
Let’s make this project a great story.
A while ago I posted this formula:
Good product design: value for users > ease of use > speed > design
I’d like to explain my reasonings behind it.
What is product design? It’s the combination of what a product does and how it does it.
Product designers have more responsibility than simply choosing how things should look or behave. They build the way users interact with the product. They need to take into account a large amount of criteria to do their job effectively. However, it’s worth asking the question of which criteria should be prioritized over others in the design process if you can’t afford to cover the whole spectrum of what constitutes a good product design practice.
The most important thing a product (or feature) should do is bring value to the user. Any other consideration comes second. Your product can be slow, ugly, not easy to use, buggy - if your work is going to help users solve a specific problem they suffer with, they will endure anything to use it. You can’t say the same thing for a beautiful product that does not bring any value: no one will use it.
Once you are sure that the product or the feature brings value, you can put your energy on creating a great user experience. This doesn’t mean making it beautiful - or even pretty. Just really simple to use or really easy to understand. Users will come to your product because you’ve promised them something - this can be summed up by either making their lives easier, or their jobs simpler. They will want to take advantage of your solution as quickly as possible and will consider your product less valuable if they can’t do what they need to in a simple way, or if it makes them feel stupid.
Once your product brings enough value and is simple to use, you will want to focus on speed. Great products are fast. They don't waste their users' precious time. The faster a product is, the more confident you feel about it. Most of the teams I’ve worked with think a feature is shipped once the code is done and the quality assurance passes. However, a feature should not be considered as complete if it’s not as fast as it could be. Your product is the sum of your features. If you start to introduce slow features here and there, the whole will suffer eventually. It will be worth less to users.
Finally, once a product brings enough value, is easy to use, and is fast, you can make it pretty if you have time left or enough money to afford this process. But it’s not necessary per se. I would go as far as saying that if something brings enough value to the user design is irrelevant. How things look is cherry on the cake. Design in itself shouldn’t be your main differentiator. It will help to differentiate your product from its competitors a little bit when you become successful, and many copycats will do exactly what you do, exactly the same way. The implication is that if your main differentiator is a matter of design, you have other problems to solve first. Design is a trend that changes often and quickly. What’s seen as beautiful today will be less valued tomorrow, just because, evaporating that advantage.
Every day, I use Monica. And every day, I wished it had a better design, had a better UX, and was faster. But I don't prioritize those aspects at all - and while it pains me a lot, I prefer creating as much value as possible first and foremost. When Monica reaches a state in which we can afford to take some time to make design better, that will mean we created a product that brings tremendous value, is extremely easy to use and fast enough for everyone. We are not there yet.
To sum up, what would you like your users to say about your work? Is it “Ok, it’s not pretty, but it’s so useful that I don't mind”, or “Ok, it’s beautiful, but I don't see why this product even exists”.
Reminders are a convenient and popular feature on Monica. Before today, they were sent the day events happen. If your goal was to buy a gift for your friend who has his birthday today, it would have been be too late to find and buy the gift. From now on, you will be reminded some time in advance that an event is coming. We call this a notification - or a reminder of reminder.
By default, notifications are sent 30 days before the event happens, then 7 days before, then the day the event happens. That way, you’ll have plenty of time to plan for whatever the event is.
Those notifications can be disabled in your Settings panel, under Personalization.
Notifications only affect monthly and yearly reminders, not weekly.
Cherry on the cake: you also now have the possibility to define the hour in the day you want to receive the reminder emails.
These new features are already in production, and will be available in v1.8.1, which will be released in a few days, if you are into running Monica on a server that you own.
Maintaining translations is really painful. I've yet to find a project where it's an easy and painless process. Until now, to translate Monica, you needed to clone the repository, update the language file and finally submit the result as a pull request. Well, no more.
Thanks to Crowdin and their generous open source program, you can now use a very simple tool to translate Monica in the language you want. The project is available at https://crowdin.com/project/monicahq and will ask you to create an account if you want to contribute. Don't hesitate to create an issue if you want to translate a language that we don't support yet.
When I launched Monica last year, I didn't realize that only offering two genders (man and woman) to identify contacts wasn't enough. We received a lot of feedback about this very specific point. The reality is that gender is not a binary option. Monica needs to represent reality, and it is more complex than what I originally thought.
This is why we are introducing the notion of custom genders. By default, each account still comes with three genders (male, female and other), but now you can customize this list, add or remove genders at will. You will be the one deciding which gender people should have. While we should be careful not to add too many options in Monica, this is a case where we need to put you, the user, in control of what your reality is.
Monica has the ability to manage gifts related to a contact. You can easily remember gift ideas for your best friend, or gifts that you've received from your grand mother that year. Now you have the ability to mark a gift idea as being offered. The section has been slightly redesigned to reflect this new feature.
A lot of other smaller additions have been recently added. We'll cover those in upcoming blog posts - but you can always read about all the changes we make on Monica on the release notes page.
When you are working every day on something, you don't take the time very often to think about the big picture. I don't want to lose sight of what I would like Monica to accomplish - so here is what I’d like to do in 2018. This post is not a roadmap per se. Think of it as my very own Wishlist.
- Launch the mobile application. The work has already started and we are close to a v1 that should ship in the coming weeks. The first version will be read only, and v2 will allow the edition of data. The code of the mobile application is already on GitHub, and is 100% open source (obviously).
- GraphQL support: we already have a REST API that the v1 of the mobile application will use. If we truly want a great mobile application, we need to make sure that all the requests made to the API are efficient and GraphQL is the best solution for this.
- Support for Carddav and Caldav. I believe this is what will make Monica shine on the long run. These two protocols will let you sync your contacts and calendar entries with your existing mail and calendar apps on mobile or desktops. Monica would become the central source of your social data.
- More love to reminders, with the possibility to be warned before an event actually happens.
- Provide statistics about your social life: how much time you went out a given month, who do you see the most, where do you hangout the most, etc… The more data you feed to Monica, the more insights you’ll have.
- A calendar view that shows reminders, future events,…
- The concept of “rich” activity sheets: for instance, if you indicate that you went to a restaurant, have the ability to set where it was (with automatic placement on a map), what you’ve eaten, how long it took, etc… Each type of activities would have specific information to fill.
- The journal should become the place where your life is auto documented. This will be great once we’ll have rich activity sheets.
- Stabilize the platform, add a lot of tests to make sure we don't break things as we move forward.
- If I have the time, but only if I do: make the app prettier. However I believe it’s more important to have a functional application than a good looking one.
- And last but not least: add more ways of importing data. This will be a real pain as, surprisingly, most social networks or systems are not open source and don't provide you with the data they have on you.
I hope to accomplish all the points above this year. I also know that things are constantly changing for a variety of reasons, so take it with a grain of salt.
Most sites these days make use of all the data they gather. Amazon recommends other articles I might like based on what I’ve already bought or consulted. Twitter, Instagram and Facebook try to suggest new friends or content I might like.
While it makes sense for a shopping website to use all the data it knows about me to help me buy better things for me, I find it extremely disturbing that social networks do that for me.
Everything social is way too personal for companies to mess up with it. They don’t have all the cards at hands to determine what those recommandations will do to me. Moreover, they think they know what we’ll want, but in my experience they are very often wrong.
The trend these days is to help users by doing all the work for them - including all the work they didn’t want the site to do in the first place.
On Twitter I don’t want to know what content other users have liked.
On Facebook I don’t want to be suggested to have more friends. I’m fine with the friends I already have - and if I’m not friends with other people it’s probably for a reason.
I don’t want this to happen on Monica. I think we need to provide a tool that does only what the users want the tool to do.
This doesn’t mean we shouldn’t provide features that help the users by analyzing their data. But these features should never be a surprise to people. And they should never give the feeling that the site knows too much about its users.
I’m Regis Freyd and I’ve been developing Monica for one year and a half now. Monica is an open-source personal relationship management software and is currently a side project, as it doesn't generate enough revenues to allow me to work on it full time. The journey of 2017 has been pretty great and this is what I’d like to write about today.
How Monica became popular
Monica was built originally in June 2016. I worked on and off on it for a couple of months, then submitted it to Reddit. Few people cared, even fewer people registered (a dozen of people) so I stopped working on it and focused on my career. In May 2017, after having changed jobs, I wanted to go back to work on something I love very much: side projects. So every day after work, I worked on Monica. I did this for a month, open sourced it on GitHub, and got discouraged again. I called a friend, told him that I’d been working on a project for a year now and told him that I wanted to delete the project because no one cared at all. I said that I would delete the entire repository on Monday (we were Sunday). I went to bed, and in the morning, before deleting the project, I wanted to try one last thing: posting the project to Hacker News. Since all my other projects in the past never caught any interest on HN, I didn't have any optimism for this story. I posted the link, and went away for two hours.
When I came back to make sure that no one cared, I saw that I was on page 2 on Hacker News. I was mind blown. I got like 30 upvotes and a few comments. I couldn’t believe it. People seemed to like the project and the idea behind it. They also loved the open source aspect of it. Then it escalated quickly.
In less than an hour, Monica reached the first page on Hacker News. Then, a few minutes later, I reached #3, #2. And then it reached #1. And stayed number 1 for two days in a row, with almost 1100 upvotes and hundreds of comments.
We went from 10 users to 5600 users in a couple of hours.
The next day we bumped at 7000 users. Monica became the most trending repository on GitHub, went from 0 star to 1700 stars in an hour.
And then, people started to send emails. I spent the next three days replying to hundred of emails of users saying that they’ve been waiting for a tool like that for years now. A few VCs reached out to me and wanted to talk. All in all, I talked to 4 venture capitalists from New York and San Francisco. I quickly realized that VCs didn’t have at all the same vision that I had for the product, and wanted to put ads and other “intelligent” ways of feeding data to Monica. This was so against my values that the discussion stopped there.
Today, Monica has around 10,300 users and 90,000+ contacts. The repository on GitHub has 3788 stars and 409 forks. We’ve received hundreds of pull requests, and the community has opened 300+ issues. It’s clear that the project has become popular and that there is a clear interest. The Docker images have been pulled more than 13,000 times - it’s almost impossible right now to know how many instances of Monica run in the wild, but I guess a few hundreds. I have around 45 paying customers - but to be fair, at the moment, there is almost no incentive in having a paying account, so people who take a paying account are doing so to support the development, basically.
I hesitated a lot before open sourcing Monica. My biggest fear was that people would criticize my code, see how bad it was. I had no unit tests. I took some shortcuts to reach my goals, and the code was far from being great. To my surprise, only one person mentioned the quality of the code. No one else even talked about it. People were just grateful that the tool was there and open. The secret is to not be scared of sharing your work in the fear of being judged.
- The initial growth has slowed down. Around 10-20 users subscribe each day. Keep in mind that I have done no marketing whatsoever except this one post on Hacker News. So while the number is low, I find it quite incredible to have that many signups.
- I receive a lot of feature requests. I’m really grateful for them, but I can’t do everything. In part because this is to much work, and in part because I want to focus on features that people will want to pay for. This is the only way to make this project sustainable in the long term. Keep in mind that I work on this at night and on the weekend, but at 20-30 hours per week, it will be harder and harder to keep this rhythm in the future.
- Letterbox is a huge source of inspiration for me in terms of business model, and their Pro offering is probably something I’ll copy.
- One of the things I’d like to do is to ship a mobile application in 2018. I believe this is what people want the most, and this is why I’ve shipped an API two months ago. I have a lot of work to do for this, and the first part would be to learn how to actually develop a native mobile application.
- I think Monica can become the only source of truth about your contacts and your agenda. This is where we are going in 2018, as well as a great place to store your feelings.
A birthdate is composed of a day, a month and a year. Well, in an ideal world, because in practice, most of the time you don't know the year of birth. If it's the birthday of a dear friend of yours who refuses to give you her age, you will only know the day and month to celebrate her birthday every year.
This is why we have added the ability to set a date without knowing the year.
This change applies to birthdates, first met dates and deceased dates. Reminders for those dates will work the same way as before.
This feature was one of the most requested features in our issue tracker. We hope it will help you add more information about your friends and family members.