How to promote your open source project
Getting more out of your project (including more users!)
Do you have an open source project, yet you feel that it could more users? You are not alone! Many other open source projects have the same problem. The good news is that with only a few steps, you can new and more active users. Time to learn how promotion can be done without the pushy tricks that marketing and salespeople use.
Traction is everything
Traction in software projects 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.
There are actually several reasons why most projects don’t get the right amount of traction. Typically these are inadequate promotion, lack of continuous development, or low product quality. In all cases, the result is the same: people won’t recommend it to others and the project slowly collects dust.
Let’s introduce myself first
I have been actively involved with the development of a few open source projects. Also, I made contributions to other projects with code or with feedback. Two of my own projects are Rootkit Hunter and Lynis. As the author, I feel it is the responsibility of the project owner to properly promote it.
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). This blog post was created to answer my own 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.
Promotion tactics and lessons
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 to talk 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 CFPs, 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 here 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 to do 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.
Takeaways
- Be active and respond to speaking opportunities
- Have a blog, or do guest blogging sometimes
- Show the people who are behind the project
Did you notice that I introduced myself, at the beginning of this post? While no article is perfect, I’m proud of my work. Don’t use a vague alias for your precious work, but show who you are!
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.
Takeaways
- 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 too big chunks of text
Create 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.
Takeaways
- 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
Be up-to-date
People using open source projects don’t like outdated projects. A project that was updated more than 1 year ago, will lose new users. It shows them that it is not maintained. 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.
Takeaways
- Determine a release schedule which you are comfortable with
- Show people that the software is maintained
- Be careful with the usage of dates
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.
Takeaways
- Use a developer platforms to get your software listed
- Use a signature on forums
- Don’t spam
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 by adding a description of a typical user who would use the software. If there are multiple audiences, describe them. Answer the question of 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.
Takeaways
- 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)
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 repeat 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.
Takeaways
- Deliver stable software
- Only add something if it adds value
- If it lowers quality, don’t add it
Expectations is key
Like quality, people have different expectations. These expectations come in different levels:
- Required
- Expected
- Desired
- Unexpected
A good example is that you might require the software to be properly compiled. This is a minimum to even be able to use the software. If it doesn’t, people will stop using it. Next level is expected functionality. An anti-virus tool requires an updating mechanism to keep its malware database up-to-date. Then there are the desired functions, which are simply nice to have. Last but not least, there are the unexpected benefits. The software could be fulfilling a completely different goal than intended. A great example is nmap . It is known as a port scanner, is also able to do much more (like vulnerability scanning).
Takeaways
- People have basic expectations of 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.
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. This results in the software being difficult to use. 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.
Takeaways
- Test your software from the beginning
- Let other people perform testing and collect feedback
- Create a first-time user guide, which helps in setting up your software
Use corporate resources
The most popular open source projects have a great community or have 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 share your project with customers.
Another great resource that companies can provide is outside your own skills. For example, providing graphics 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.
Takeaways
- Any 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!)
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!”).
Takeaways
- Let others speak about your project
- Ask simply for a referral
- A great moment to ask if when you receive a compliment
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 a 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 options. If one provides these, 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.
Takeaways
- Provide a guiding hand where needed
- Instead of telling someone an option is invalid, share options on how to proceed
- Use directions on where to find more help (website, man page, parameters)
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: email. Yes, email is old and gets ignored sometimes. 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.
Most software projects only have a few fanboys. But it is those people that are really in love with your project and like to help. Sometimes they are not able to do the 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 into 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.
Takeaways
- Use the skills of fanboys and power-users
- Listen to your community, but keep your personal values in mind
Providing training
One area I still have on my list is providing more training. With training, I don’t mean a full course. Just offer 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 to create a quick movie is using Asciinema. 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.
Takeaways
- Do real-life training sessions to learn from questions
- Record small demo’s
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!
Takeaways
- 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
Be careful with packaging
Lynis had a lot of releases, resulting in work for package and port maintainers. Fortunately, most of the updates simply mean 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 to automate software installations. The bad thing on Linux is that there are many different 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.
Takeaways
- 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
Conclusion
There are a lot of 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 to improve 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 at a steady comfortable pace.
More resources
Did you like this post? Then see the resources below for more:
- How to get traction for (your) open source project (presentation, PDF)
- Grow your community and increase the value of your tool
How do you promote your open source tool? Let it know what you are working on! After all, this is about promotion, right?