by Jacob Evelyn
Four open source lessons—from a whopping 17 users
I have an open-source project. It has 17 users.
It actually has somehow scraped together a few hundred stars on GitHub, managing to be the most-starred repository for a few wildly popular tags like
journaling (but, alas, not
journal). You’re probably very impressed. You may be thinking something like, “What useless piece of code could possibly be at the intersection of those things?” or “GitHub has tags?”
But don’t be intimidated by my extraordinary success. Three years ago, all this was just a few lines of code and an idea. I wanted to see if I could visualize the ebbs and flows of my relationships with the people I care about.
I also wanted to have a program tell me who I haven’t talked to in a while, so I could be better at staying in touch. Okay, and I also wanted to store all of this information in a way that was easy to see, edit, and play with. I guess it was more than one idea after all.
That should have been the first clue that I didn’t have the clearest idea what I was doing. But I’m strong-willed and felt confident that I’d figure out the details later.
So I hacked together a program that I called
friends (tagline: Spend time with the people you care about. Introvert-tested. Extrovert-approved.) and used it regularly for a year, at which point I assumed that its (minimal) featureset was complete. On a whim, I posted it to Hacker News, where it briefly made the front page for the first and only time in my life. (Side note: if you ever see a post on Hacker News in which a calm comment reads something like,
Maintainer here. I'm glad to see this on the front page, and happy to answer any questions. don’t believe for a second that that person isn’t shaking with uncontrollable nervousness and excitement.)
And then an interesting thing happened. I got suggestions.
Lesson 1: Users have really good ideas
My friends and coworkers, bless them, will tell you I have no problem “sharing my opinion.” Translation: I usually think I’m right and can have a hard time accepting input from others. (Not cookies though, I accept those fine.)
I thought I knew about my own project. However, my pompousness disappeared pretty much immediately when I started reading users’ suggestions. To date, I’ve had 16 (!!!) GitHub issues opened by someone other than me. (Out of a total of 110. I need to get out more.) And almost every one of those has been a suggestion that I would never have thought of and that makes
friends unequivocally better. In fact, counter-intuitively, these new features have been so spot-on that they’ve often led to much simpler code.
What has amazed me the most is how these users often seem to “get” the idea of
friends better than I do.
friends to only have 17 users despite all of its downloads and GitHub stars. This is because only 17 people have cared enough to share their feedback with me or offer to contribute a pull request. I don’t know if others are using it in perfect bliss or downloaded it once and then forgot about it. But 17 people have dedicated time and energy to show they care. I love every single one of them.
Lesson 2: Being nice pays off
From the beginning, I wanted to be a friendly, supportive, patient, mentoring maintainer. Not the gruff maintainer who says “this feature should not be added” with no further explanation.
So I added this friendly note to the top of the
NOTE: Participation is encouraged! Make issues, ask questions, submit pull requests (even if it’s your first time contributing to open-source — you’ll get lots of help), and give feedback!
And I put in the time and effort to be friendly when responding to users. I knew that was the right decision when users started leaving comments like:
“Excellent. Thanks for your patience and suggestions. I’m pretty green with this stuff.”
“This my first pull request to an open source. I learn Many things from your Comments. Thank you So much for that.”
Being nice doesn’t feel like work to me (though I get that it can for others) but either way, it pays off. It lets me have deeper conversations with my users. Discussing their suggestions often reveals other ideas they have but didn’t think to bring up. I even had a video call with a user halfway across the world!
Being nice also lets me ask users unsolicited questions, which at first I was afraid to do. Maybe they’d be annoyed that I’m bothering them? That fear was silly. People like sharing their opinions!
Lesson 3: Users can be anywhere
I’m not sure why I expected this (other than my apparent geocentrism) but I’d assumed my users would all live in my home country. Not even close! My 17 users don’t even all live in countries where my native language is particularly common. (And why should they?)
My 17 users live on four different continents.
That humbling fact boggles my mind.
Lesson 4: Making money is hard
I was spurred by success stories of open source projects being sustained by donors. So I recently put up a few donation badges onto the project
README. I’d love to be able to spend more time with
friends, and even a small amount of money is a clear signal that it’s worth my time.
So how many donations has GitHub’s most-starred
human-readable project received? Exactly zero. (And honestly, I’m not sure how to change that.) It is, I admit, a little discouraging.
Still, if I was in it for the money I wouldn’t have spent so much time building, well, this. And donations are just one way to contribute. If you give me as much feedback, love, and help as my 17 users, you don’t need to give me a cent.