DEV Community

Cover image for Lessons learned doing open source
Carlos Roso
Carlos Roso

Posted on • Originally published at carlosroso.com

Lessons learned doing open source

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.


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.

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.

Top comments (20)

Collapse
 
richytong profile image
Richard Tong

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 😅

Collapse
 
caroso1222 profile image
Carlos Roso

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

Collapse
 
richytong profile image
Richard Tong

I call it rubico - async agnostic functional programming

github.com/a-synchronous/rubico

Thread Thread
 
caroso1222 profile image
Carlos Roso

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

Thread Thread
 
richytong profile image
Richard Tong • Edited

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

Collapse
 
akdeberg profile image
Anik Khan

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

Collapse
 
caroso1222 profile image
Carlos Roso

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

Collapse
 
akdeberg profile image
Anik Khan

My pleasure :)

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀 • Edited

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

Collapse
 
caroso1222 profile image
Carlos Roso

Loving didi, great work man!

Collapse
 
adam_cyclones profile image
Adam Crockett 🌀

Thank you Carlos il be follow your stuff.

Collapse
 
hasnayeen profile image
Nehal Hasnayeen • Edited

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 😛

Collapse
 
caroso1222 profile image
Carlos Roso

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

Collapse
 
hasnayeen profile image
Nehal Hasnayeen

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.

Thread Thread
 
caroso1222 profile image
Carlos Roso

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.

Collapse
 
alexanderjanke profile image
Alex Janke

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

Collapse
 
caroso1222 profile image
Carlos Roso

Thank you! Let me know if you face any problems

Collapse
 
mxldevs profile image
MxL Devs

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

Collapse
 
caroso1222 profile image
Carlos Roso

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

Collapse
 
fviccia profile image
FV

Great article Carlos!