Open source software is ubiquitous, but how do you get started creating your own? With the best intentions, but without a clear plan, most open source projects fail. This book provides the insight needed for schools, companies and individuals to create their own successful, sustainable open source project.
Here’s a guide I wrote and have shamelessly renamed “How to Build an Open Source Project” for your enjoyment. It starts off with the history of the project, and describes how it works, including an honest assessment of what makes it great along with what sucks about it. This is followed by chapters on how to get involved, techniques for hosting it, and a wrap up of everything else you’d like to know. The target audience is other developers who want to create a similar project but aren’t sure how — this book will walk you through the process and give you enough background that you can make your own decisions.
Determine the goals
Every open source project solves a specific problem. Talk with colleagues, chats, forums, and share your idea. It all helps you on the first steps to understand important things, like which solutions already exist, and to hear criticism. Talk with people who already have open source projects. They can give you very valuable advice, so don’t be afraid to ask and take the initiative.
One important bit of advice which I got at that stage is to pay attention in the first place on the documentation of the project. You can have a very good project, but no one will spend the time to understand how it works.
The most important aspect, without which further steps are impossible, is motivation. The idea of the project should inspire you primarily. Most often people get used to the tools with which they work and fall into a comfort zone, so external opinions may be ambiguous.
Choosing a license
An open source license guarantees that others can use, copy, modify, and contribute back to your project without repercussions. It also protects you from sticky legal situations. You must include a license when you launch an open source project.
Legal work is no fun. The good news is that you can copy and paste an existing license into your repository. It will only take a minute to protect your hard work.
When you create a new project on GitHub, you are given the option to select a license. Including an open source license will make your GitHub project open source.
Define what success looks like
urllib3 is used by millions of people everyday, has 785 stars on GitHub, and has been growing since its creation in 2008. Andrey has another project, ssh-chat, that has 1,560 stars on GitHub, but is only used by about 15 people today. So which project is more successful? In order to answer that question, Andrey described how defining success at the beginning of project will help you understand if it’s successful or not.
The beginning of every open source project looks like this:
- Build something. Anything.
- Get frustrated with the hardest parts, build libraries and tools to help.
- Discard the original project to focus on the libraries, which become your new project.
- Go back to step 2 and repeat.
Create a Header Summarising Your Project
The first thing they see is your
README. The first thing they see on the
README is the header. Make it good.
The header is the combination of:
- Slogan (short description).
- Quick Install.
- Quick Links (not always needed).
The choice of a certain task manager is a matter of taste. It should have a clear picture of the tasks and stages of your project.
Divide tasks into sub-tasks. Ideally, if one task does not take more than 3–4 hours, it is important to enjoy the implementation of small tasks. This will help to avoid burnout and loss of motivation.
I use pivotal tracker. The main advantage is a free version for open source projects where you can sort tasks by type (feature, bug, chore, release), and group them into releases and determined deadlines.
Recruit core contributors
To spread the word about ssh-chat, Andrey started asking for help, asking for improvements, and finding ways to bring more people into the project. In order to help build interest, Andrey reached out to people on Twitter and offered free Go programming lessons in exchange for opening pull requests. This overcame the initial inertia of getting a few people involved and interested in the project. These early contributors eventually became champions of ssh-chat and started answering questions on Stack Overflow.
Another component of building and maintaining open source projects is learning to be inclusive. Andrey says “accepting pull requests very generously, and very graciously” was a key step in building more community interest and is something that many open source authors miss in the beginning. And asking specific people to make a pull request was much more effective than making more generalized asks of his Twitter followers.
Beautiful Logo as simple as Canva.com
The logo is the first thing users see and is the image used for social media sharing. When I first create a project, I’ll use something from Canva.
Canva allows you to quickly create a logo from a template for free.
Go to Canva and search for “Logo”
And then just select one of the many logos you come across. Edit it if you want.
Typically, there are 2 things I look for in a logo:
- Coolness factor 😎
Market and promote your project
In general, programmers tend not to be self-promoting types, so actively marketing and promoting an open source project doesn’t come naturally. With this in mind, Andrey identified ways that programmers can promote their projects without being self-aggrandizing.
One approach is to write interesting blog posts about your projects to provide clearer context of the project’s story and mission. Medium is a great platform for sharing in the technology community and has more potential readers than a self-hosted blog.
We live in a golden age of open source software development. Some of world’s biggest applications and most-used websites are open source. But how do you start an open source project from scratch?