Tips For Making a Popular Open Source Project in 2021
skerritt.blog
skerritt.blog
It’s worth noting that GitHub stars truly don’t translate into anything worthwhile in the vast majority of cases. You can have a massively popular project, but it doesn’t automatically translate into Twitter followers or newsletter subscribers. And those things don’t directly translate into wealth or happiness either.
Just get a job and make friends and have a life. That route has the highest expected value. I have been chasing GitHub stars for a long time, and it has never been fulfilling. I wouldn’t recommend it.
(python): https://github.com/byteface/domonic/
What is this? Why do I care? Why is this exciting? Do I like this?
At least for me I can't answer those questions when I see your project. Maybe I'm stupid or ignorant and you simply don't want to reach me, alright fine.
Also some projects simply cannot fit into this box.
Sometimes reader enlightenment is required to see value. Those are the hardest ones.
Essentially your task is to convince the reader that you have an answer to things they never thought to question or connect together and your proposed way of doing things fixes problems they thought were just the way of the world.
That's why my more sophisticated projects do much worse than my simpler fun ones and why silly things do so well and hard things do so poorly.
There is value to solving hard problems but as the new patterns form, people forget so the appreciation of great achievement is often fleeting.
So I dunno, people suck and life is hard. Whatever
That really is a narrow, normie view. Obviously it didn't work out for you but for others (and I'd put myself in the category) stars can be very meaningful, especially for work which you're proud of. In a small way you're being judged by people who understand, or at least use, what you've created and that can be more rewarding than other work, money or social interactions.
(Also, I'd rather kill myself than get a job and friends are generally not that stimulating)
And who are these people exactly? It really does sound like you're projecting there.
What does “normie” mean in this context? Is it the new “square”?
Please try to read comments in good faith.
Also, it's an indication that you may need help. In that case, try calling a suicide help line.
I wish more could be done.
I'm perfectly fine as long as I don't do things that make me extremely unhappy. I think that's true for most people. But thanks for your concern.
It's not to say that me, someone just born after the Gen-X era's declared end, isn't? also addicted to these numbers.
I always pay attention to them because they reflect how the general public respond to different things. So they might be thinking "wow this is so stupid but it's got so many views!"
This guy is in the middle of Nowhere, Siberia and even the kids there care about his number of subscribers...
... thinking now, why should Hollywood > YouTube given that the content they consume is more localised. Maybe it's me who's wrong!
I was just expressing an alternative to view that seem to dismiss nerdy people who derive pleasure and satisfaction from github and a fairly smug sounding "be normal."
I'm early Gex X FWIW.
All of my projects are tiny, minimal, and try to solve a small problem I encountered while doing something else. All of these tools were written for myself or my wife or just for fun! But I shared the code on the web anyway just for the joy of sharing! The joy of sharing code is something I discovered with my first encounter with computers while learning to write programs using IBM/LCSI PC Logo.[2]
The joy of sharing is the real reason for making my projects open source. In case it turns out to be useful for others, that's a bonus! If someone cares about it enough to star it, fork it, contribute to it, or send a donation, that's an additional bonus! However, my primary objective is to have fun and share the fun with others. In my opinion, computing should be fun[3] and open source is one way of the ways that computing remains fun for me.
[1] https://github.com/susam?tab=repositories&sort=stargazers
[2] https://susam.in/blog/fd-100.html#a-lasting-effect
[3] https://mitpress.mit.edu/sites/default/files/sicp/full-text/...
Do you think you'll get famous? Rich? Have higher status?
Well, perhaps you will get some status in a few niche circles, like when applying for conference talks perhaps?!
But other than that, all you'll get is a load of entitled users complaining about bugs, usually filling low quality bug reports, and very few actual meaningful contributions.
Most people are just like you and want THEIR PROJECT to be popular, not to contribute almost anonymously to some other random guy's popular project. Those who are more likely to contribute are usually junior devs trying to learn new skills, so expect their contributions to require lots of reviews and help from you.
I agree that entitled users can be a real problem. I have had my share of dealing with entitled and impolite users complaining about "issues" that eventually turn out to be something that is already easily addressed by the README. Interacting with such users can indeed be disappointing.
However, except for the occasional discourteous user, most users of my tiny projects have been quite supportive. Most of them are polite while submitting bug reports. Some even leave comments to express their appreciation for the project![1] So it's not all bad!
> Most people are just like you and want THEIR PROJECT to be popular, not to contribute almost anonymously to some other random guy's popular project.
Wanting one's own project to be popular and contributing to other projects need not be mutually exclusive. Many people write their own projects as well as contribute to other projects. For example, I got into open source first by contributing[2][3] to other projects before I began publishing my own projects.
[1] https://github.com/susam/uncap/issues/9
Yeah, I know, I do the same thing myself! The question still remains: why would you want to have a popular project? It makes no sense to desire that...
Desiring that a project exists that solves a problem well... that yes, we should all desire that, but who created it doesn't really matter... if I create a project these days, it's to solve a problem I really can't find anything else to solve, not because I want to write something popular... TBH if it becomes popular, I might see that as a problem rather than a good thing given what comes with it: feature requests, bug reports, PRs that you need to spend time on while sometimes just not wanting to accept the change, self-awareness that you can no longer just change stuff at will if you want it...
I have a few slightly popular projects, but the ones I like the most are the obscure ones I use by myself :)
My library for Correlation-IDs in Django[3] got implemented by AWX, which also was a nice experience![4]
Maybe it is the Django/FastAPI community, but "you'll get a load of entitled users" is straight up not true in my experience.
[1] https://github.com/Intility/fastapi-azure-auth/issues/24
[2] https://github.com/Intility/fastapi-azure-auth/issues/39
[3] https://github.com/snok/django-guid
[4] https://github.com/ansible/awx/pull/9332
(Bonus Correlation-ID package for Starlette/FastAPI: https://github.com/snok/asgi-correlation-id )
Personally, I just like the feeling of knowing that I've made something that others like and find valuable.
Why? Well I've been following my competitors' projects (other 2D canvas libraries) for a few years now. Most of these projects are being maintained by just one or two people. Their dedication to maintaining and improving these libraries - which they often took over from the original creators - is wonderful to see.
But the amount of crap the maintainers of the more popular libraries have to put up with is astonishing. People who demand immediate fixes for obscure bugs. People not willing to produce even a minimal code example to help the maintainers understand and fix the issue. People - developers! - who are too lazy to do their research and expect the maintainers to build their products for them.
So, yes. If that stress is the price to pay for having a popular project on GitHub ... I think I'll stay hidden in my little corner of the internets!
*A couple of issues raised, and no contributions, over past 3 years. On the bright side I can release updates without having to worry about backwards compatibility.
tl;dr: the project involves "crowdsourced research" which benefits from popularity.
The main social goal with the project is data preservation and integrity. Large-scale economic and political decisions are made from data and analyses in spreadsheets. For example, last year in the UK, COVID cases were underreported thanks to Excel minutiae https://www.bbc.com/news/technology-54423988
Due to various corporate stratagems, the older data representations were intentionally obfuscated. To support Excel, many developers poked around at Excel files and guessed at the structures.
In this environment, the biggest challenge is finding worksheets with random corner cases. These types of files are not easy to create and fuzzing has limited effectiveness. This is where open source and popularity come into play. The open source and JS nature of the project helps reduce testing friction (https://oss.sheetjs.com/ runs in the web browser, no need to install anything) and encourage bug reports with test cases.
There will always be "entitled users" and "low quality bug reports" but that comes with the territory. There are also meaningful issues and code contributions. Efforts at trying to prevent the low quality contributions also discourage higher quality contributions.
It's literally the second item in the ToC of the article.
> Why Bother? Popular Projects = More Contributors = Better Project
The author does go on to talk about how it becomes a challenge, dealing with people that are the opposite of helpful, as you also mention many people are, but the point still stands. The more popular the project, the more contributions, even if many are in the form of bugs/complaints, those are still useful. If the ratio of complaints to actual code contributions is even remotely consistent, the more complaints, the more actual code contributions. :shrug: To each their own, but at least read the article before criticizing.
Thank you for all of your hard work.
That's... quite a bold claim.
EDIT: And if you really want contributors, then maybe instead of building yet another logging or command parsing library with a cute mascot: contribute to and fix existing codebases, or discuss design and suggest changes to a standard library? There's plenty of existing communities of people that you can work with on a 'popular' library. If the target space is so crowded that what makes a difference is pure marketing, then maybe you don't need to make that space even more crowded in the first place...
> maybe instead of building yet another logging or command parsing library with a cute mascot
I'll admit this got a hearty chuckle out of me.
I don't think people always want contributors. I've found you're much more likely to get people who make a mess of things than coding soulmates.
These were my first libraries.
I took the approach of promoting them as any other product. You have to "sell" your code. Even if it's 100% free.
In my opinion, the most important thing is DEMO. Just make a GIF where you showcase what your software does:
* 80% of engineers won't even bother to read the description
No one will spend their precious time trying to get through your code.
[0] https://github.com/kotartemiy/newscatcher Programmatically collect normalized news from (almost) any website.
[1] https://github.com/kotartemiy/pygooglenews If Google News had a Python library
So many times I've come across demo GIFs/animated shell sessions that "type" at about 1000 characters a minute, and the animation loops over before I even had a chance to blink.
https://newscatcherapi.com/blog/how-to-present-showcase-open...
For the love of it, I can't understand what makes other GitHub repositories stand out over mine.
I'm blogging about my work, I've added more information in the readme and over the course of a view years, I've also gradually shifted course to a more appropriate process. I always wanted to be the owner of a busy open source repo. I find the idea of making this experience fascinating.
But many of my repos are still stale though I think my code is good enough.
Actually, seeing that the repository probably needs a much better designed readme makes me sad to realize that also for something so deeply rational: it's the looks that count.
On the other hand, it's true. Deeply living with a problem and solving it in code is a though challenge and I'm not sure I'm committing enough for my work to be popular.
But I'm anyways happy to now realize that I'll have to market my repos better too.
want a new code convention? best make a writeup and pros/cons for it to make it digestable to your fellow devs.
want a code fix on a third party lib? best make a case for why its a value-add for the maintainers.
want a new friend? best be interesting enough that the person has a reason to remember you.
everything is a sell, though the buyers arent always buying with their wallets
While this is true, one is better off from thinking about this from first principles, such as what are some undeniable truths that are constant over time given an intractable problem space. Evolving software over and over around those constants, under the constraint of that one problem space, makes for a viable sell (but one does have to sell) especially in a b2b setting. Note that, early adopters don't need much of a selling-to, by definition, if the software as much as interests them and fulfills a tiny modicum of their needs.
[0] supposedly. I'm not convinced.
More seriously, some of the best friends I have made is because I randomly took the initiative to start a study group with them despite the fact that we had never spent time together as a group. There is always an animator making things work. If you want to actually do interesting things, you very often need to be that person. While you might not get the ego boost of being a 'chosen' one, you will occasionally receive thanks from those who recognize what you did to make things happen for everyone.
The reality is just like with sellable (software) products (code) quality doesn't matter when it comes to "success".
Have you tested your writing? project titles, readme, docs, etc?
I learned to test everything. Basically SEO, but for good.
I've done UI design, technical writing, ad copy, and so forth. Draft project plans, press releases, headlines. I've spent a ridiculous amount of time naming things, crafting pose, framing, messaging, etc. I even obsess over my trolling, sharpening my zingers.
I just scanned your repos. Know that I am not your target audience. So I have no direct feedback. At least none that should be trusted.
Your project for running C++ in a browser, via WASM, is the one I'd be most curious about. My guess is that's the one with the broadest appeal.
I'd compare your written artifacts with similar projects. Push and poke it every way you can think of. Stuff like dropping each project's keywords and phrases into google to assess discoverability.
I'd also test your writing on everyone you can. Peers, non-peers, randos. Both native English and German speakers.
IIRC, didn't @danluu do something about naming repos? I'm probably misremembering.
FWIW, for my last FOSS project, I spent a bit more time on writing than programming. Roughly 55/45 split. (I logged my time on that project. I was curious.)
Lastly, testing writing is in addition to all the other good suggestions. "Yes and", not "Ya but".
Happy hunting.
Then about testing for engagements: I've done similar things with the headlines of my blog articles. I usually have a few different ideas and I can test the engagement by e.g. resubmitting after a while on HN.
Do you have ideas on how to get improve the pace of my feedback loop? E.g. for testing three headlines of a blog post: Where can I test their engagement quickly such that I get live results?
I plead guilty and say that I've repeatedly posted the same link on HN but with different query parameters to understand its performance.
But I've come to understand that users will notice this behavior and start to generally downvote.
As a creator with a small audience, the only success with tapping into a high throughput feedback loop has been by painstakingly write articles and submit them one by one to HN.
I've gotten much better at it already and frankly I've also noticed that engagement and "likes" isn't everything either.
I've realized too that if you truly do what you believe in consistently, I've found that I suddenly start having "impact", which I think is different from engagement.
How I see it:
- Engagement: clicks, views, comments
- Impact: The world changes, there's consequences and substantial changes as a reaction
But I think you can't have one without the other. High engagement means you're a popstar. High impact means you're a politician. Ideally, I want to be able to pick my position on the gradient.
Mea culpa: Rereading my initial reply, I see that I was more telling than asking, contrary to my stated intent.
Engagement and impact. Absolutely. Where do you choose to put your focus? I've always preferred "finding my tribe". Building tools for other people like me. Others who have needs like my mine which aren't fulfilled by today's popular hammerspoon.
Instead of persuading people to use my tools, I hope to be found by people who have framed their problem like I have and just haven't found a suitable solution.
For instance, one niche tool I made was a UI layout manager rooted in graphic design's notions for a "design grid". Kids today would call my bespoke solution "opinionated". At the time I described it as "visually and logically correct".
Alas. My strategy has not made me rich.
I'm actually semi-blocked on releasing more of my tools, because I haven't figured out how to pay the mortgage.
Happy hunting.
An "Ultimate Guide on how to make a Just-A-Little-Bit-But-Not-Overwhelmingly-Popular Open Source Project" would be much more helpful :)
sure, there are growing platforms that generate revenue for them, but from what I've seen, it's all dependent on volunteer donations.
I suppose it would be a dream job to get paid to develop my own code, but developing a closed commercial software product seems like an easier route to success. Linqpad is one that comes to mind.
For me, creating software is an expression of Creativity. I to be able to explore my creative interests. Not those of someone else. I want to create things that interest primarily myself. I suppose the key to that success is to find a topic which has enough people are of interest that would be willing to give me revenue to work on that topic.
All code needs maintenance of course, but some types of projects require a lot less than others.
They aren't particularly popular (and I don't especially care -I'm really my only customer).
Ok. Tried https://github.com/RiftValleySoftware/RVS_Spinner.
>> WHAT PROBLEM DOES THIS SOLVE?
Looks like too many caps in titles to me, I'm mildly scared.
No sweat off my back. I don't particularly care whether or not anyone ever stars these projects. They are really for me.
And some folks even like the stuff I post. Go figure.
Another thing that I try not to do, is immediately attack others, on this (or any other) forum.
It buys me absolutely nothing. I don't feel good about it, most folks around the place don't appreciate it, and it tends to make immediate enemies of potential friends.
Pretty much the Platonic Ideal of "Zero Sum Gain."
I've always found that life is easier for me, if I have more friends, and fewer enemies.
""" The Ultimate Guide to creating a popular open source project in only 3 steps from someone with 10s of thousands of GitHub stars. """
These are tips to gain a person exposure. Look at me I am famous. I have so many stars. and all I did was write a 67 line Python code. yay.
You can do it too!!!!!
Marketing, logos, shiny, shiny.
You are hyper focusing on the wrong metric
To me, and I am too old to matter, it highlights a fairly substantial perversion of the reason and motivation to create great software that you give away for free.
It sets you up to chase fame on GitHub just like people do in every other social medium, Twitter and Instagram followers. Look people love me!!!! So excited in the quest for brief moments of stardom.
You get there by feeding the lowest common denominator.
What does the mass of followers want? How can i get 1000 more.
Oh they like my bikini shots. Ill just make it a little skimpier. yay.
They like the drama with my momma, Ill stir up some real shit tonight yay.
Oh I see the dig it when I go off cussing about politics and today Ill cuss like never before. Yay.
With this type of mindset, you will not create anything original ot beautiful. It's a fast-food junkie stuck in a feedback loop with a race towards the bottom. It becomes an unhealthy addiction.
I have 0 stars, 0 twits, 0 Instagram, 0 all of social media because I am a quarrelsome luddite. I would not get an account in any of those systems even if they paid me.
It is a distraction. at best. more commonly an obsession and no good can come from it.
It used to be that modesty was a virtue.
A compliment from one my sensei when I was studying martial arts,
Honest praise from my Lt when I had the misfortune of ending up in the army.
The camaraderie from the band of brothers I discovered.
A professor seeking me and giving me some life changing advice based on a couple of my essays he graded.
Having one of my most respected "master" developers reach out to me to point out that I had made some errors in my code, but he liked these two other things. Meant he had actually spent some time looking.
Praise should be earned, and it should not be given out freely. Seek it from those who really matter. The rest is noise.
This article is exactly what's wrong with GitHub. Flashy logos and jargon-ey readmes fooling folks into thinking something is high quality, secure, thoughtful code that will benefit instead of hurt.
These things are important for garnering views, sure, but open source isn't a marketing channel. You're optimizing for the wrong thing here.
Further, in my experience this applies primarily to web (see: Javascript) and ML spaces. Most other areas of focus don't worry as much about this.
I have a lot of little things I'm going to work on no matter what, a few that I'd appreciate help with but I'm not so bothered that I'm going to start 'hacking the growth', and none where the goal is to have a 'successful' repo with lots of stars and users or whatever. (I do help maintain/triage a couple of popular ones now, but I didn't get them where they are.)
Be friendly to the people.
If they contribute, make sure you get their stuff released quickly.
Attribute them in the release not es, your readme. Respect and gratitude.
Be open for ideas.