Table of content:
- Intro
- Starting a project
- Documentation
- Publicity
- Issues and PRs (WIP)
- Automation (WIP)
- Versions management (WIP)
Recap
The baseline for this part is:
You already have an open source project, it is available on GitHub, well documented and can be consumed easily via one of the package registries.
Spreading the word
- Each of these platforms may have a different mark up language and you’ll have to redo all the formatting
- Maintenance — if something changes (and things will change) you’ll need to update your blog post across all of the resources.
- Start with a problem statement. It might even be the title of the blog post.
Usually people are looking for a solution to a specific problem and before they decide investing the time to read your post they should have an idea whether it’s what they’re looking for.
An example: https://medium.com/angular-in-depth/customizing-angular-cli-build-an-alternative-to-ng-eject-v2-c655768b48cc
As you can see it doesn’t say “custom-webpack builder — a new fancy project”, it clearly states the problem that it solves in the title.
If you google “Customizing Angular build” this is the first result you’ll get and right from the search page you can see which problem it addresses. - Describe why and how exactly your project solves this problem
- Provide a detailed step-by-step guide, starting with installation and finishing with a working example.
- Create an example project that uses your open source and link to the sources in the blog post.
There are lots of developers who prefer a working example to any blog post. - Get some feedback before publishing it.
Make your friends go over it without telling them what it’s about and see if they can figure it out themselves. If they can’t then probably it’s not that clear and you need to elaborate.
Making your project attractive to contributors
However, that’s not always the case.
- Someone who wants to make an impact and looks for a project to contribute to (these are rare but still exist).
- Someone that uses your package and found either a bug or lack of certain functionality.
- Have a pending implementation list. It might contain known bugs, planned features or something else.
This list will make it simpler for contributors of type #1 to pick the right item and issue a PR.
It can be a standalone list or you can (and probably should) use issues and labels on GitHub. - Have a contributors guide.
A very basic contributors guide should explain the repository structure and have a step-by-step guide for building and running your project and tests.
The expanded guide can contain architecture, design decisions, code of conduct and more.
A good example is Atom’s contributors guide .
Don’t underestimate it’s value! It’s something that takes a decent amount of time to make when the project has grown, and I wish I created it at the very beginning and updated it gradually as the project evolved.
Unfortunately, I didn’t have someone to point out its importance, and today my project has no contributors guide.
It’s always on my TODO list but there is always something more urgent than that. - Recognize your contributors
Listing your contributors on the main page of the project would give them additional incentive to make a contribution.
Just adding user names can be enough, but I’d recommend you to use All Contributors. Apart of creating a fancy section with profile images and badges for your all your contributors, it automates new contributors addition by creating PRs that add contributors to this section.
Wrapping it up
But this won’t keep them as contributors neither will it make sure they will finish the work they started.