by Jacob Evelyn

Four open source lessons—from a whopping 17 users

ELdOOKCLd8cUTnTHHLfK58DWCOCQauVUwg02
Having more than 17 users would be overwhelming! (At least, that’s what I tell myself to feel better about it.)

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 relationships, human-readable, and 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.

I consider 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 README:

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!

I adopted the Contributor Covenant. I added friendly contribution instructions. I made sure friends followed all of GitHub’s best practices.

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.”
— codyjroberts
“This my first pull request to an open source. I learn Many things from your Comments. Thank you So much for that.”
— sivakb
“Thanks for the explanation! … Also, I gotta say, your cheeriness is great! ?”
— greyhillman

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.