How to Promote your Open Source Project
How to Promote your Open Source Project
Nowadays it is easy to start an open source project. People over the world start new projects daily, as can be seen on the popular site GitHub. Unfortunately, many of these projects simply don’t get traction and end up as inactive ideas on the web.
Traction is everything
Traction in software project is similar to speeding up a car. If you give too much gas, you might end at undesired places, too little and it takes too long to reach your destiny. The right amount of traction for your project helps you achieve your goals, provide value to your users and build a great community.
Several reasons why most projects don’t get the right amount of traction, includes inadequate promotion, lack of continuous development, or low quality. In all cases, the result is people won’t recommend it to others and the project slowly collects dust.
Sharing 10+ years of experience
In the last 12 years, I have been actively involved with the development of a few projects, and submitting improvements to other projects. Two of my own are Rootkit Hunter and Lynis. It was (and is) my responsibility as an author to promote them.
Who am I? My name is Michael Boelen, owner of security firm CISOfy, blogger, and believer in the value of open source. I’m sharing my experiences over the past years, to help you improve the promotion of your project(s). At the same time I’m answering my Quora question How can I promote an open source software project even more?. Let’s continue with the first things you can do, to make your software successful as well.
Lesson 1: Being noticed as a person
Software is not just about the project itself. One of the biggest lessons to learn is that people are often interested in the person or team behind a project. So the ideal situation is that you get to talk about your project and also about yourself. For this to happen, you have to be noticed as a person and get invited to conferences, or speaking gigs. It allows you to share knowledge and talk about your project at the same time. Don’t get invited? Take initiative and respond to CFP’s, or Call For Papers.
This blog post is actually written while being at on an open source event. This is a great example to show why it works: I’m there because of a previous talk about Docker security. I was noticed as a speaker and got asked to speak about it again, at another event. Being noticed helps.
So when you get the chance to share your knowledge, use the opportunity and go for it. Maybe you don’t feel comfortable enough for public speaking. In that case, there is always the option to do guest blogging, or sharing your project as part of social talk during other meetups.
- Be active and respond to speaking opportunities
- Have a blog, or do guest blogging sometimes
- Show people who is behind the project
Did you notice that I introduced myself, in the beginning of this post? While no article is perfect, I’m proud about my work. Don’t use aliases for your precious work, but show who you are!
Lesson 2: Provide value
Over the years, I spoke with many people about open source. One question I had is that what differentiates open source projects, from great open source projects. Repeatedly shared was the notion that software should serve a particular purpose. It needs to provide value or, in other words, it should help the user. It might be something that simplifies work or automates repeating work. Whatever it does, it should solve a pain.
By providing value and solving pain, it becomes valuable for your users and they keep using it. When it comes to promoting the open source project, make sure it is clear how it helps the user.
- Be clear on your website what the tool does and how it helps the user
- Features are great, describing the benefits is even better
- Provide clear lists, as people prefer that to big chunks of text
Lesson 3: Great documentation
One of the painful lessons I’ve learned is the requirement of great documentation. It totally makes sense to first create a project, see the amount of interest and then create documentation afterward. However, people expect open source projects to be at least decent, also for documentation.
Lacking good documentation is a warning signal for every new user. Unless the tool is really easy to use, you will need some level of documentation. Divide it into multiple levels of experience, from first use to advanced usage of the tool. This way the users of your software know what to read, and avoid wasting time. Typical time wasters are unclear websites with dead links or unclear parameters to use within the software.
- Make documentation easy to understand, especially for first-time users
- Split documentation in different levels of usage
- Have others check your documentation and comment on it
Lesson 4: Be up-to-date
People using open source projects don’t like outdated projects. A project from a few years ago, shows that is not maintained and most users will stop using it. This is also seen on GitHub, with many ghost projects roaming around.
Also be careful with adding a date to pages. Avoid adding them if they are not really needed. For example showing a date on documentation pages might give an adverse result. It may give the impression that a page is outdated. In reality, the instructions are actually still applicable and up-to-date.
- Determine a release schedule which you are comfortable with
- Show people that the software is maintained
- Be careful with the usage of dates
Lesson 5: Visibility on developer platforms
If you have an open source project, get yourself on services like GitHub and Open Hub. Be creative and get an entry on all well-known developer platforms. Put the website in your signature of forums, but only where it makes sense. One word of caution: don’t spam, it will backfire.
- Use a developer platforms to get your software listed
- Use a signature on forums
- Don’t spam
Lesson 6: Make a marketing plan
Promotional activities are part of marketing and to some extent of the sales process. You continuously have to do branding and selling of your ideas, even if you are sharing open source software for free. So while it might sound strange at first sight, a marketing plan might actually be of great help.
You may start with adding a description of a typical user who would use the software. If there are multiple audiences, describe them. Answer the question why they would use your software and what benefit they have from using it. Another good addition is the locations where you will promote your solution, like the developer platforms, forums, or other websites.
- Open source software is no different than other products and needs promotion
- Promotion is needed, especially in crowded areas
- Using a marketing plan helps with the promotion and better value proposition (lesson 2)
Lesson 7: Software quality
Most users of software expect a certain amount of quality from software. Quality is a delicate outcome of how well the software is written, the usability of documentation and how often you can repeating an expected outcome. In other words, it is everything which makes the software rock-solid, usable and understandable.
One area which helps with software quality is testing. Although this process might not be that entertaining, you might be surprised about the value. Everyone likes new features, but still many would choose stability over features. So be agile and add new features, but ask yourself how it may impact the quality of your software.
- Deliver stable software
- Only add something if it adds value
- If it lowers quality, don’t add it
Lesson 8: Expectations is key
Like quality, people have expectations and they come in different levels (required, expected, desired, unexpected). One might require the software to be properly compiled as a minimum. If it doesn’t, it is not suitable for usage and people will stop using it. Next level is expected functionality. Like you might expect that an anti-virus tool has an easy to use updating mechanism, to keep its malware database up-to-date. Then there are the desired functions, which are simply nice to have. Last there are the unexpected benefits. The software could be fulfilling a completely different goal than intended, due to the available options. A great example is that nmap, known as a port scanner, is also able to do much more (like vulnerability scanning).
- People have basic expectations about your software
- Be clear on your website and documentation on what they might expect
- Tell them what the software is, and optionally what it isn’t.
Lesson 9: Ease of use
Do you like hard to use software? Of course not, as it would be wasting time. But often we don’t think like the users of our software, resulting in difficult to use software. My biggest lesson was while teaching students, which never heard of my tools before. Suddenly you see how first-time users interact with your software, to my surprise. Basic routines like extracting files may result in a different outcome.
- Test your software from the beginning
- Let other people perform testing and collect feedback
- Create a first-time user guide, which helps setting up your software
Lesson 10: Use corporate resources
Usually the best open source projects have or a great community, or a corporate sponsor behind them. Getting a community of users is hard, takes time and provides no guarantees. People simply come and go, as they please.If you want to get your project to the next level and grow, you need promotion. For
If you want to get your project to the next level and grow, you need promotion. For that, it really helps if you have a company supporting you. It may even be your own employer, as long as there are no conflicting interests. The company can help with marketing efforts, or sharing your project with customers.
Another great resource companies can provide is skills in other areas you might not possess, like design. You might be able to find a volunteer with great design skills, but then are so many more skills you need to get covered.
- Promotion goes quicker with the right support
- Companies have resources to provide, use them wisely
- The best open source projects have corporate support (look at the Linux kernel!)
Lesson 11: Use referrals
We are social creatures and like to hear thoughts about products from others. For marketing specialists, referrals are a tool to show “social proof”. Talking about your product is great, but it is even better when others are talking about it.
What I learned over the years is that the easiest way to get referrals is simply to ask for them. If someone tells you they like your software, ask them if you can get them to share a quote about it.
The text of a referral is important, as it should reinforce the benefits of your software. Just one or two lines of text will do. It should explain why it is great, or how it helped that particular user. Even better is to combine it with a clear benefit of the software (e.g. “Tool X is so easy to use, that I had a report within 2 minutes. We used it so finally solve that 1-year-old issue, for which no one had the solution!”).
- Let others speak about your project
- Ask simply for a referral
- A great moment to ask if when you receive a compliment
Lesson 12: Provide help output
Still many open source projects don’t give a clear help on how to use a tool. For example running a command without parameter might actually start the tool. It is better to show the user clear instructions, even if they provide no parameters.
Another option is to intercept the -h or –help parameters. If one provides these parameters, be nice and show the user some guidance. Share the most common parameters, or provide some examples. When they are many parameters, add an additional line which hints the user to use the man page.
- Provide a guiding hand where needed
- Instead of telling someone an option is invalid, share options on how to proceed
- Use directions where to find more help (website, man page, parameters)
Lesson 13: Build a community of followers
Promotion of your fine piece of art can come in many different forms. From speaking at events, to having a Twitter account. Still there is a much more powerful method to reach your audience: e-mail. Yes, e-mail is old and get ignored. However, if someone is opting in to receive e-mails from you, most of them will read it sooner or later. It is a great way to tell them you have a new version available and what the highlights are of this new release.
Usually software projects have a few fanboys. Those people are really in love with your project and like to help. Sometimes they are not able to do development themselves, but they can do others things. Great examples are writing about the tool, or sharing it with others. Even writing a referral for your website might be a good way to help.
Another great group of people is the power-users. They are beyond positive standing with your efforts, and able to contribute even more. They have deep insights in the area, may work for big companies with a lot of resources and have a bigger network than you. These people are valuable and most likely your software is making their life easier. Keep listening to their needs and determine how you can satisfy them, without compromising the goals of your project.
- Use the skills of fanboys and power-users
- Listen to your community, but keep your personal values in mind
Lesson 14: Providing training
One area I still have on my list, is providing more training. With training I don’t mean a full course, but small pieces of help. It may be an introduction guide, a Youtube movie, or demo. Even while showing tools to many people in the past, you will get new users of the software. Real-life training is a great opportunity to demonstrate and get questions in return.
Another area of training is to provide new users with a quick start with accessible content and instruction movies. A great example for movies is asciicinema. It shows the user what they have to type in and the related screen output. If you have a graphical user interface, then record a small movie and add that to your website.
- Do real-life training sessions to learn from questions
- Record small demo’s
Lesson 15: Know your impact
If you reached this lesson, you might be overwhelmed with all the options. Especially if your project has been evolved from just a fun exercise and became a hobby. If you create art, including in the form of digital code, people will form opinions about it. Some even start using the most unstable software components in production environments.
It is good to ask users of your software how they discovered the project and where they use it. This way you become more aware of the impact you make with your software and may result in valuable referrals. As a bonus, you might even get introduced to new people. I recently learned that Lynis was used in a European satellite project (Galileo). In other words, Lynis helps to secure devices on earth and maybe already in space, who knows!
- Try to learn about your users and their use cases
- Ask people how they discovered the project
- Use this moment of questioning to predict the future and ask what features they like to see
Lesson 16: Be careful with packaging
Lynis had a lot of releases, resulting in work for package and port maintainers. Fortunately most of the updates simply means bumping up the version and create a new release. In some cases, like that of Debian and Ubuntu, a new problem raised: stable releases. These and a few other distributions, freeze software packages and link them to an OS release. That means that now a very outdated version of Lynis is in the Long-time support (LTS) release of Ubuntu.
Software packing is an interesting subject, as it helps automating software installations. The bad thing on Linux is that there are many difference file formats, and building processes. Before trying to understand them all, make sure that experienced packagers can help you. If you don’t do it correctly it might end up in a task which slowly eats up all your time.
- Get to know the packaging options
- Perform some test installations yourself (e.g. run your software on 5 different Linux distributions)
- Outsource packaging to experienced builders
There are lot options available to promote your open source project. This list above might be overwhelming at first, until you discover that most of it is marketing. Although most of us don’t have a commercial background, it might help to think a little bit more commercially. Use the question “if I had to earn money with this, how would I sell it to my customers?”. This sales/marketing mindset might help you improving your promotion efforts.
Even if you write the best possible software solution in the world, you will need at least some promotion. In this case more is actually better. At the same time ensure that you build software of good quality, get people involved, and keep growing in a steady comfortable pace.
How do you further promote your open source tool? Let us know what you are working on and we may cover you in the comments! After all, this is about promotion, right?