Creating an open-source project
Do you have an idea for a software project? A new idea that no one had before? This page should help you get started.
0. Preliminary checks
Do already existing and established projects do what I plan to? Are there good reasons not to combine my efforts with theirs to include my ideas to that project? Making this new python proof-of-concept package for that shiny machine learning algorithm that you have in mind may be easy, but have you thought about adding it into scikit-learn? You may be able to get more users, by several orders of magnitude!
1. Choose a license
2. Choose a hosting
In 2018, the revision control system choice is not really a problem: everyone uses git, and so should you. You will find a virtually infinite numbers of tutorials and the book should help you get started.
You can still have to choose where to host your repository: Github is the most popular choice and will give your project the biggest exposure and SEO, but Gitlab is a more free and open-source option. Many communities (freedesktop, GNOME…) use an hosted gitlab instance, and Télécom also has one at https://gitlab.telecom-paristech.fr/ . You can also host your own Gitlab or Phabricator instance.
All these platform integrate git hosting with bug tracking systems, wikis for documentation, and continuous integration (external with Travis for Github)
3. Code, Test, and Document.
If you want your project to attract contributor, a great idea and a great code are not enough (sadly). What seems obvious for you will not be to everyone (and will not be to yourself in six months either, by the way), so you need to write it down, aka “Documentation”.
Document the code (how and why it works), document how to build it, what it depends on, and what is yet missing in it. Only then will a potential contributor be able to help the project.
Unit tests are not dispensable once you reach some code quantity: if you cannot test everything manually when you change some code, then you need to automate that away, and use that CI to check everything for you.
4. Spread the word
Whether your shiny project is perfect or not (yet), advertise it! You will probably want contributors to add their ideas and make it even better, and users to test how awesome it is, and, maybe, report bugs.
Contributing to an open-source project
Are you a user of some open-source software? Most of open-source project are in (dire) need of contributors and whether you know how to code or not, you can help them.
0. Find answers
- Where is the code?
- Can you build it?
- Where is the documentation?
- Where is the bugtracker?
- Where is the community? (IRC, mailing lists, etc.)
1. Get in touch
Can you contact people in that project? How is the project evolving? How do they react to your improvement idea? Is someone already working on this?
2. Code, test, document
Working in an established codebase is very different from creating a project from scratch: In a big project, there are probably many things that you won’t know, but that’s ok: either it’s in the documentation, either people from the project will be able to answer your questions (and, hopefully, add the information into the documentation). Compared to your project where you may know every bit and newcomers would ask you, it’s quite a change. And who knows, when you are in a big project for some time, newer newcomers will ask you.
Working and interacting with other people will also allow you to get the next steps (merging, releasing), or even point you to project-specific steps (UI/UX design for your new feature, for instance)
I can’t really tell you what happens next: once you’re in the community for an open-source project, you may help it by many different ways: adding planned features, helping newcomers like what you were onboarding into the project… or just maintain the module you added and join another, shinier, project (you’re free).