July 16, 2020

Lessons learned doing open source

An introspection on my OSS work

I’m not popular in Github but I have a repo with 1.5K stars and 1M hits/month. I got some more with a few hundred stars. Here’s what I’ve learned along the way.

Build good looking demos

This may come off as superficial but it’s worked wonders. I write frontend libraries where demos are critical for adoption. I put a lot of hours designing and coding good looking demos.

It’s fine to be inconsistent

I used to beat myself for being inconsistent. Not anymore. Github is my lab, not my job. I make sure to have a stable, working version on master and move on. I come back once motivation strikes again. I play it long term.

Build framework-agnostic libraries

Building libraries for frameworks is fun and it has its niche. But, if you want to have more impact, architect your libraries to be framework-agnostic and easy to plug anywhere (see next point).

Write framework-specific recipes

Whether you do backend, frontend, ML, or whatever, chances are your users are using frameworks. Write easy-to-follow recipes for how to plug your library into any of these abstractions. It’ll boost adoption.

Have a clear scope

Devs complain about clients asking too much yet we do the same on Github. You’ll get a myriad of feature requests if your OSS project takes off. Communicate your scope. Learn to oblige. Learn to decline.

Relaunch

I’m not a marketer so launching is always a gamble. What I’ve learned, though, is you must relaunch. People might have not seen your stuff the first time. Release a new version and write a blog post. Tweet about it.

Sneak in to understand usage

Use the Github’s Dependency Graph to see who’s using your packages (lots of supported ecosystems). Then visit your users’ repos and analyze usage. Are they hacking it to fix a hidden bug? can you improve the API?

Use badges but don’t oversell

Scientific research has shown that badges are positive signals for contributors and users. Adding a badge doesn’t change popularity but popular projects are more likely to have badges. Use assessment badges.

Use a GIF

You have just a few seconds to convince users to try your library. Put a GIF at the top of your README to help them quickly jump in. You can use terminal screencasts, GIF recordings or screenshot sequences.

Yes, build it again

Unless you’re a seasoned OSS developer, you need to build yet another version of popular things. This will ignite your curiosity to try bolder things later. Don’t try to code the next big thing. Just build something. Today.

Redifine success

I have unpopular projects with little to no installs. I’m proud of them, though. I learned a lot from building them. I use them myself. I’m getting better and enjoying my projects. That’s my ultimate bar for success.

Be aware of moniker naming rules

Not sure about other ecosystems but NPM has moniker rules for package naming. I learned it the hard way. Pick a good name and make sure you can work with it. Only then start coding.

This is a personal journal for things that have worked in my open source work. I’ll keep updating this as I come up with new findings.

Do you have any advice to build good OSS projects? Let me know!

Logo

I'm Carlos Roso. I'm a Production Engineer at Meta. Former SDE at Amazon. Ex digital nomad at Toptal and Crossover. In love with open source and design.

More about me