How Do Developers Promote Open Source Projects?
arxiv.org
arxiv.org
This is definitely a hard problem for solo developers who are like me and have significant difficulty with social aspects. I've never submitted any of my projects or writing here, because I have this underlying feeling that I'd be bothering people. It also doesn't help to be on a site filled daily with dozens of really incredible projects that feel so much more deserving of attention. Yet I've often found myself bewildered by concepts such as SEO and promotion, and I much prefer to spend my time coding. I hate to generalize, but I can't imagine I'm particularly unique in this regard.
But indeed, it's a serious growth limiter when we are stuck working alone. I feel like any serious open source project really needs someone on the team who groks all the social stuff and can get the word out to the right parties who would be interested. A networking service to connect these two types of people would truly be invaluable, I feel.
I was also told that technical writing helps a lot, and indeed, despite being a little guy in a small niche, two of my articles were submitted by others recently, and seeing such a positive response has been a huge boost to my self-esteem and confidence. (It did ruin my bounce rate stats though, went from 44% to 87% in two days :p)
But yeah, I'll agree with the arXiv conclusion that HN is an incredibly valuable resource for open source developers, with a very friendly community behind it.
If I can't find anybody interested in my work, I will take a good look at whether my project is actually as useful as I thought it was, and if I need to reorient my goals. Usually it's because existing tools already solve the problem well enough, and I didn't do my background research. Or because I didn't even have a problem statement in mind to begin with. Or I'll find that I didn't write enough documentation. Feedback is invaluable.
Sometimes I will work on something just because it's fun, or because I'm learning new things. That's okay, but in that case I have made an explicit decision to not care about popularity or usage.
But it's technical feedback, it's idea feedback, product feedback, it's not likely to seed your users or paying customers. And a lot of submissions go unnoticed.
I have not managed to work out (yet) how to craft such a submission for my OS project. Putting in the time and effort to get to the stage where a submission does generate interest/responses is the entry price that I need to pay, to earn those responses.
In the meantime browsing HN has become one of my main pleasures, and an education on subjects way beyond my comfort zone.
https://github.com/breck7/hn/blob/master/visualization%20(1)...
The good thing is often even posts that get just 1 or 2 upvotes or 1 or 2 comments, sometimes lead to the most meaningful offline impact.
To give an example with numbers, last year we launched Solo [1], an open security key. Solo is the successor of U2F Zero, a project that sold about 5k units = ~$45k in mid 2017-2018. In just 3 months (Sep-Nov 2018), focusing on a crowdfunding campaign [2], we made $125k from about 3k backers. Note, in the campaign, that we always referenced to benefits vs features (not trying to say this is perfect, just trying to show concrete examples -- also, most of the structure is copied frm Pebble [3], one of the most successful Kickstarter campaign):
- FIDO2: easy to use and always secure login.
- Open source: verified and trustworthy.
- Colors: choose from many to match your style.
- Hardware: quality that won't let you down.
- Getting Started guides: multilingual and accessible around the globe.
I just want to clarify that in no way I'm saying marketing comes before making the product. Of course, without U2F Zero, we couldn't have Solo made and shipped in just 3-4 months. Experience and technical abilities to execute are everything. But marketing makes the difference between good/sustainable revenue (or in general success, however you define it) vs not.
Very strictly related, is talking about your own project, to everybody. Marketing should help crafting a clear message, and focusing on why the listener should care. This brings to new ideas and -I think- it's at the core of open source.
Back to our example, while talking about Solo we got to know another project, Tomu [4], a tiny device that fits in the USB port, and by connecting with their team we ended up making Somu [5], a tiny security key that fits in the USB port, bringing together the best of both projects, namely tiny form factor and security.
In summary, I think that marketing not only is key to make your product successful, but also to help you talk about it and share it in a way that will bring more ideas, and even bigger success.
[2] https://www.kickstarter.com/projects/conorpatrick/solo-the-f...
[3] https://www.kickstarter.com/projects/getpebble/pebble-2-time...
[4] https://tomu.im
That's a great idea, and something that YC/HN itself could be able to help out with, beyond the simple "Show HN" type articles.
For example, our major open source project (https://github.com/sheetjs/js-xlsx, currently at 17K stars) started as a solo project, and most of the "growth" was driven by the complexity of the underlying problems as well as the general acceptance of JS.
There generally seems to be only a level of tolerance for projects released by big companies. If you have a FANG coolant behind your name, it doesn't matter what you're releasing, how long you've been working on it, or even how big your team actually is, you'll grab a ton of popularity.
But as a solo dev releasing under my own name, the only things I can get attention for are basically hacks in niche topics. The long-standing, well designed work I do, that is used in real projects, with tons of documentation and proven results, at best gets ignored. At worst, I get accused of "re-inventing the wheel", even for things I invented.
I've never gotten anyone to join me on a project. There are a lot of self-fulfilling prophecies that "solo-dev work won't be around in a year, so don't bother even starting". Either I release too early and people don't want to join because nothing is finished, or I put a ton of effort into documentation and contribution guidelines and then things just get ignored. Just when is it a good time to go from code I've written on my own to sharing with others?
It just really makes it seem like FOSS is only for people who have a big, recognised company backing them. I've even had a project or two copied by recognized companies, with no larger team than one or two people, and watched their half-baked early releases quickly eclipse my own efforts just because they could get people to join the effort and work for free.
We are all alone together.
Hell, I wonder if anyone other than Google, Apple, or Microsoft could successfully release a brand new operating system today. Everything seems to be about consolidation to a single norm of "like Linux". Where did the diversity of tech go?
In your example, why would you start yet another editor? There are hundreds, possibly thousands, already out there. Instead of writing your own, you could have taken the one that's popular and closest to what you want, and started to change it to fit your needs (or written a plugin, if the editor allowed for it).
One of my own favourite experiences with open source development was when I basically revived an existing project by starting to make contributions to it, which then pulled the original creator back in and ultimately others as well.
I'm just so dead tired of this argument. Why doesn't Mozilla give up on Firefox and just start contributing to Chromium? Why is Preact a thing when you could just contribute to React? Why do Grunt and Gulp exist, or WebPack vs Rollup?
In my case, on many occasions, the thing I needed just didn't exist, in any form. Other cases, the thing I needed existed, but was poorly-written, or wouldn't integrate into my existing system.
I'm just tired of the fundamental assumption from people arguing in these threads being "you didn't do your due diligence". You don't know the history of our projects, yet you come in here and tell us "you're doing it wrong".
And this argument is so often used to ignore the work of solo-devs, yet completely get on board with big-name companies.
I've literally had people tell me that I shouldn't have built Primrose, I should have contributed to A-Frame. A-Frame wouldn't exist for a whole year when I made Primrose. Was I supposed to just sit on my ass for a year and wait for "my betters" to make something that suited my needs?
I've written my own text editor, too. Because there were no syntax-highlighting text editors that drew to HTML5 Canvases, which is what I needed to get code editing in WebVR to work.
I've written my own ORM. Because at the time, there were no light-weight ORMs that were driven by the database schema for .NET. Microsoft didn't release Entity Framework for more than TWO years after I wrote my ORM.
I'm currently writing my own VR/AR abstraction layer, because I don't like VRTK (it was legitimately junk when I first started, though I've been told it is better now, though it's not clear how) and Unity's cross-platform XR system (which also didn't exist when I started, and is also junk).
I don't begrudge Mozilla making A-Frame. I completely understand that businesses are not going to want to play in someone else's backyard. But when I have a business doing something and I make the same decisions, I get replies from "the community" like yours. I begrudge people like you who have made FOSS into a cult of the giganto-corp.
Why is the oneous on solo-devs to contribute? Where were the people telling Facebook to fix Angular instead of making React?
I actually agree with you about most points, but the example was about text editors (and my possibly incorrect assumption was that this was about native text editors, not web abominations). There are plenty of those that are being developed already by solo devs, or at least noncommercially by communities. Contributing to those should be the default path unless there are very good reasons pointing in the other direction.
Pretty depressing how open source projects by individuals can at best hope to "inspire" devs at FAANG companies to just do the same thing and then use their company's immense resources and developer relation teams to promote their project over the ones that existed before them. I wonder how many talented devs have had this happen to them only to give up and stop trying.
Primrose existed for a year before A-Frame came out. And overnight, I somehow became the copycat. In the second year, I even saw claims I was copying ReactVR.
Incidentally, way early on, I had been planning to extend Primrose to run in JanusVR. But after the third year, I just couldn't get past the burnout and was getting professional dev work only for Unity. So here I am now, I'm the head of VR at a foreign language instruction company, where I'm working exclusively in Unity. I have a new framework I call Juniper, but I haven't really told anyone about it because I just don't care anymore. It's good enough that it's just for me. It's open on Github, and if someone stumbles on it, that's ok, but otherwise I'd rather focus on working for money than working for criticism on HN.
I joined Janus in 2016, after Facebook bought my previous employer and fired my team. I'd added support for loading Janus worlds within my engine, which opened it up to normal web browsers, and the team at Janus was excited for the possibilities. It was a great story of how I was able to turn an open source project into a paying job, and people were EXCITED about what we were building! We had investors and users, everything was great!
Fast forward to today. The team is broken and burnt out. Many left when we couldn't secure another round of funding and the paychecks dried up. The code is in a poor state because we kept chasing what platform gatekeepers and potential investors told us THEY wanted to see. The founder and myself both had kids within a month of each other and can no longer work like we used to. One guy's wife left him because he was spending so much time travelling and promoting the project. We have less users than ever, despite our tech being years ahead of what people think is possible. We still pretend like we're a normal healthy happy company, because we still believe in the idea and nobody's going to invest in a company of depressed burnt out people. But now even that fantasy is unsustainable, it's probably time to just give up and get a regular old job.
Of course success was never guaranteed, but what we didn't expect was how we'd just end up shunned and ignored. When A-Frame first launched, they listed Janus as an inspiration, but once they reached some level of success and saw us as competitors, they wrote us out of that history book - literally just removed us from the list of inspirations, but kept other projects like SceneVR (whose author also credits Janus as his inspiration). We've got literally thousands of interconnected worlds people have built which nobody visits or links to, but if someone makes a similar world with A-Frame or Babylon, we're sure to hear all about how great and new and innovative it is.
Modern open source is not the same scene it used to be. I don't know what's next. It's pretty depressing.
I try (and often fail) to remember the 90/9/1 rule of online communities. 90% of people are only lurkers. The next 90% (9% of total) of people only comment. It's only 1% of people that create things. It's why I have retreated from taking about my projects online. Literally 99% of the people looking at your project have no idea what it's like to build something.
Stay in touch. You can find my contact info on my website. I might need help in the future.
It happens, but it's not exactly common.
Its one of the reasons behind my fork KeyDB which coincidentally got its initial traction from a HN post [1]
I guess the long times to merge are because it is a very opinionated project. (But I'm not using it or following the details.) If you agree with his opinion you will be happy. If you disagree you will be unhappy. The nice part of open source is that if you disagree, you can fork the project.
I went through the source to start correct spelling mistakes, and submitted my first pull request back in April. Where it has languished ever since.
Some open pull requests date back 5+ years, with zero comments. I'd love to help close/comment on them, but it seems that there is little interest in such cleanup.
https://github.com/antirez/redis/pull/6058
Looking, briefly, I see there are the same kinds of typos present, presumably from when you created your fork. e.g. "opeation" in src/blocked.c
At the same time, there is some justification when developers get put off by certain OSS projects.
I think 90% of OSS projects shouldn't exist at all, just like 90% of music releases (think dozens of millions of songs!) shouldn't exist at all.
"I made a thing" != "this thing should be shared/promoted". Projects so often lack rationale, research and rigour.
Of course, solving your own problem for yourself is always fine, but sharing it with the world should imply some caution.
I swear, most of the ML projects I see right now are basically, "I totally figured out how to setup TensorFlow and stumbled on a large set of pre-existing training data." The resulting project looks unusable as a product or component of a product. And given the difficulty in setting up the environment and finding training sets, I have some doubts as to replicability or even likelihood anyone will try to replicate it. It almost feels like you could create completely fake results and nobody would question it.
Not meant to be a shot at the ML field, but more at the technology "community" that consumes this stuff. It's like magazine articles vs books. Everyone reading articles about books, literary critique, discussing authors and genres. Few people actually reading books. Fewer still writing them.
I was wondering if many users are using Porter, I might have a chance to bring traffic to those projects developed by solo developers and becoming good channel for promoting and discovering. But just like those open source projects, I have problem promoting my service too. I don't feel like to spam people by submitting the url everywhere. There are organic growth but it's not fast enough for me to put a lot of resource in it. I guess marketing for open source related projects and services is always a hard problem especially for solo developers.
EDIT: Those projects that got exceptional growth might have successfully attract traffic from HN. But just submitting your projects to HN does not guarantee any growth.
I run Web Tools Weekly (https://webtoolsweekly.com/ - ~11,500 subs) and Tech Productivity (https://techproductivity.co/ - new, ~1000 subs) and I can tell you that any good open source project that fits will get great click through rates.
I also recommend any of the newsletters by Cooper Press, which have way more subscribers than mine do (https://cooperpress.com/publications/ - see the top comment in this thread, by the founder of Cooper Press).
GitHub has deployed a project discovery widget on their logged-in homepage, but I've never used it to discover a project.
I'd be curious to hear if front-page or #1 status on HN correlates to deeper metrics of engagement with OSS and/or engagement with new for-profit services. Does going to front-page or #1 have a meaningful effect on, say a, SaaS business?
Vanity metric seems about right - I noted that when a project I helped start (https://github.com/lemire/simdjson) first got a wave of stars on HN, it tended to lag other OSS projects with similar numbers of stars on other metrics of engagement. Despite being pleased to see all those stars, one has to remind oneself that it's equivalent to "yay, someone bookmarked us".
I think having a curated list of packages with clear categories and alternative comparisons would be of great value to both package consumers for finding an high quality package and package publishers for being promoted if their package is of high quality.
I think you just put your finger in bon's main problem - but how to turn that into pypi/cpan??
I write the software for my own benefit. I then share it for the benefit of others, but sharing it requires a near-zero amount of effort (`git remote add` and `git push`, basically). I sometimes then derive a benefit to myself when others improve or otherwise contribute to my work.
This only holds as long as my userbase consists mostly of competent technical people who are able and hopefully willing to contribute, and not likely to waste my time.
Dealing with support requests and so-called bug reports from non-technical users that found out about my software from a blog post somewhere is simply not a way in which I'm willing to spend my limited free time.
If I knew that my free software was being used by millions of people, I won't deny that it'd give me a bit of an ego boost, but I am not sure it's really worth anything at all, really. It certainly isn't worth the many hours of free customer support (a thankless minimum-wage job even if it were paid) I'd have to provide.
By contrast, having it be used by a handful of like-minded individuals, who might contribute actual code, or simply talk about other interesting technical topics, related or not, provides a ton of value for little to no effort from me.
So I think I will continue mentioning my free software only in mailing lists, and hope that no one ever sees fit to blog or tweet about it :)
I would be curious if some of you that _do_ care about promoting your work would say why you care about it, though. Do you expect the popularity of your free work to have an impact in your professional career? Or is the satisfaction from providing value to so many people worth the huge extra effort to get there? Or is it something else?
Fun that they named HN in it!
How do you define success in this context?
[1] https://github.com/kstenerud/concise-binary-encoding/blob/ma...
[2] https://github.com/kstenerud/concise-text-encoding/blob/mast...
This is my solo project. It hasn't really taken off to date but who knows. If you find it useful for your work, at the conclusion of the share it will ask for a small donation.
I'm building https://gitmail.io, an email marketing tool for open source projects. Reach out if you'd like to voice your thoughts!
Open source project managers should consider the use of Twitter (47 projects among thetop-100 most popular GitHub projects have active Twitter accounts), Users meetings (which are organized or supported by 41 projects), and blogs (which are used by 38projects).
Open source project managers should also consider promotion on social news aggregatorsites. Successful posts on Hacker News may have an important impact on the popularityof GitHub projects. However, only 10% of the Hacker News posts about the studied projects have had some success.
Then Hacker News and Network Effects takes care of the rest.
If it's "good good" then you won't have to promote it too much because it will spread by word of mouth, but in order to get the point where word of mouth is useful a ton of people need to see it.
Even if you have something great that people want, if only 1,000 people see it you might not ever get a lot of growth because the numbers aren't there.
A prime example of this would be something like the Rails tutorial by Michael Hartl. You don't see him advertising it relentlessly. People just constantly link others to it because it's useful.
Marketing is important.
PyWarm, the functional API to build neural networks for PyTorch https://github.com/blue-season/pywarm
Most of the traffic has come from HN!
And a ton of organic search (tho my project has a generic name that is hard to find in search) so word of mouth.