With so many great open source projects spreading like wildfire, it is a great time to be a developer! I spend a considerable amount of time looking for great ideas across the open source community. For me, I'm always searching for modules we might include in our distributions, projects that could be enhanced and commercialized, or even crossovers into other areas for innovations. If something really resonates with our business we will apply resources to furthering that project.
Generally, the first thing I do is hit the project description to see if it makes a connection with me. If it does, I’ll try it out or tag it for further research, perhaps even mention it on Twitter or discuss internally on a relevant Slack channel. Note, I did not look at your code, I looked at the idea. If you want your code to get out into the community, and actually ignite something bigger, you need to make sure your project is discoverable.
You might not be thinking about it as you blast away on your code, but you need to do some basics to get your project into the hands of others. It’s vital to make it discoverable to those that may use or improve it. Others may have ideas that help take your initial project to new heights. It is collaboration that often turns the original author’s idea into something truly great. Putting together motivated individuals with a passion for what they are working on is not an accident. Take the steps to get the word out, for without exposure, your good ideas may end up implemented by someone else, oblivious to your previous work.
Basic Steps to Gaining Exposure for Your Project
You can do anything you want with your project, but if you truly want it to catch on it needs contributors. To get exposure, foster discovery with:
- Descriptive Name
- Project Description w/ Keywords
- Language/Project Specific Hubs
- Announcing/Mentioning on your Blog/Social Media
1) Descriptive Name: One easy way to increase discoverability is to have a descriptive name. If you don’t want to go the practical route, ensure it has a cool name that people would want to be associated with. Consider your audience here and make sure the name speaks to them. Is it gamers? Ensure its something exciting or linked to gaming culture references. Is it security researchers? Speak their lingo. Check out how other projects are named in the same space, it may give you ideas.
2) Project Description w/ Keywords: Your project description is vital so that other people can find it. It is the first thing I look at when I go to a project. What is it about? Why do I care? Tom Preston-Werner smartly suggests doing your readme file first.
Ensure your project description caters to searching engine crawlers with good keywords. People will find your project through search engines and searches inside the sites hosting your project. Don’t underestimate this. When the crawlers visit they capture the keywords your project is about. It is important to use specific descriptive words that others would use to search and find your project. Make sure the industry, area, technology and other pertinent details are included.
3) Github: It is important your code ends up on Github. It’s the largest host for code repos on the planet--that’s 35 million proejcts as of April of 2016 and yours needs to be where the world is working. Why? Network effects are crucial since other developers will search within Github to find things they are looking for. In addition, many other sites mine github for interesting statistics and research (e.g. http://coderstats.net/). For languages that aren’t as popular on Github as yet, project owners are missing out on promoting their solutions and their language of choice by being where most of the developers are. If you have the best solution, many developers are polyglot and will be happy to use whatever the best tool for the job is. There are other good places, but generally they have less overall scale than Github. Google will continuously index Github and other project hosting sites but Github has big pull in their algorithms due to the popularity of the site and will most likely be on the top of the search results pages.
4) Language/Project Specific Hubs: For language specific modules or packages, check into specific places that are central to the language you are working in. For instance CPAN is an absolute must for Perl projects and PyPI for Python. Typically other languages have their own convenient hubs where shared code can be found.
5) Announcing/Mentioning on your Blog/Social Media: Consider mentioning your project in your own blog and social media. Everything helps. This is the minimum. Get some exposure to enable other people to see your great work, and with any luck build your own community. Join other discussions that allow you to point to work you’ve done to solve this problem or how it is related. Don’t be shy to engage in other media that allows you to mention your project.
There has never been a better time to get the word out on your project. Be proud of what you’re building, get it out there! Your project deserves to be discovered so that it can benefit the community as a whole. After some time your project may even hit the trending page on github and start to really benefit from network effects.