Cover image for Lessons learned doing open source

Lessons learned doing open source

caroso1222 profile image Carlos Roso Originally published at carlosroso.com ・4 min read

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.

I send posts like this to +1050 devs on my email list. Join here to send you my tips and thoughts on algorithms and career growth. If email is not your thing, follow me on Twitter to get sneak peeks of what I'm working on.


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.

Redefine 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. You might want to save it. 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 in the comments!

Shameful self-promotion

My mission is to help devs grow by posting tips to write CVs, teaching algorithms, or talking about my experience working on top remote workplaces. I also shared my experience transitioning to Machine Learning and put up some fancy illustrations to explain computer science problems. I wrote an eBook to help you land a job in Toptal. You can sign up here and get it right away.

Posted on by:

caroso1222 profile

Carlos Roso


Software Engineer. Former digital nomad at Toptal. Open sorcerer. Thoughts on career growth, remote work, and web dev.


markdown guide

Cool man! Notyf looks really nice to have library. Learning a lot from you.. 😀


Thanks mate! I'm glad I'm being helpful in some way :D


Thank you for this! I've added a badge to my library thanks to you. Now I want to hit 100% code coverage for the badge a bit 😅


Nice! What's the project? Share it here!


I call it rubico - async agnostic functional programming


Amazing work. I love FP. Does it support TypeScript?

Thank you! It's written in pure JavaScript, so totally importable in TypeScript. I gotta get around to speccing out some TypeScript examples


Really good read, thanks for the article. I've a repository with 1.2K stars and it is one of my better work or I like to think so 😛


Goodwork looks terrific, mate, great work! Can you share with us what has worked so far for you?


Just being patient and keep working on it. OSS projects take time to build up as they are mostly done on free time so it takes a while to build up a project.

This, so much. OSS is about consistency and long term. Viral repos (+2k stars in 1 week) are very overrated esoteric exceptions to the norm. Easy come, easy go.


Thank you I'm going to use this for (shameless plug 😏) didi especially the cli demo that's great! Wonderful article!


Loving didi, great work man!


Thank you Carlos il be follow your stuff.


Was just starting a new site at work and looks like I'll give this a shot. Hope it works flawlessly with Nuxt ;) The toasts themselves look really nice


Thank you! Let me know if you face any problems


Definitely feeling that "good looking demo".
I've learned that everything boils down to look & feel. When I try a new library or tool, the ones that look good are the ones that catch my eye


Right, that's been a great lesson from my journey.