The Open Food Facts software is developed collaboratively by hackers from all around the world.
Technical skills are really appreciated in a wide variety of domains.
Every thing we code is under a free software license (possibly AGPL)
Providing tools is essential to be able to grow the database as fast as possible and maintain its quality.
The mobile app and the main website reach a large public and provide health and environment information. They also enable crowdsourcing the database at a large scale. Their user experience is very important.
The other tools help tracking data quality, fixing errors, augmenting contribution through machine learning etc.
Having qualitative technical documentation helps a lot reaching new contributors that can help us more efficiently.
Writing SDKs and API documentation helps lower the entry for database reuse projects.
- #dev - is a general channel around development
- #infrastructure - is about managing servers, installing software, etc.
- #documentation - about documentation
- All our software projects have their own channels, for example #product-opener (main server), #mobile_app. You may find specific channels in the README of each project.
- There are also channels specific to languages: #perl, #flutter, #python, etc. to ask questions specific to the language or develop the SDK
- Some are specific to wider arguments. For example for ML #robotoff and #ai-machinelearning.
All developments happens on GitHub: https://github.com/openfoodfacts/ (even infrastructure has its repo)
Some projects have weekly or bimonthly meeting, see the README of each projects or community calendar.
We have a monthly infrastructure meeting (see community calendar).
Needs / Missions 🏗️
- Software development 🤓
- there is a large variety of projects to develop. see https://github.com/openfoodfacts/
- if you want to help with the core of the project, consider learning Perl (server) or Flutter (mobile app)
- new ideas are also welcome
- after one or two successful merge PR you can ask direct access to a repository
- For beginners we often try to add a good-first-issue label on accessible issues
- Project management / product design / design 📐
- skills in project or product design can really help: triaging bug, imagining new UI and UX
- also if you have skills for design do not hesitate to propose your skills
- Technical Documentation 📚
- help improve documentation on projects directly (often docs/ folder, but also the README)
- contributing to this wiki is also useful in some cases
- remember that putting good links at the right place is also very efficient
- Infrastructure 🖧
- Machine learning 🤖
- Programs 🏅
Team referent 🧑🏽💻
Alex (alex -at- openfoodfacts.org | slack: Alex G. | github: alexgarel)
The role of referent, does not mean "maintainer" or "manager", it's just a facilitator to help people onboarding and cooperation flow.
Subteams in Tech 🪆
Because there are a lot of projects, we have subteams for each area of interest.
Team referent: Edouard (edouard -at- openfoodfacts.org | slack: Edouard Marquez | github: g123k)
Team referent: Raphael (raphael -at- openfoodfacts.org | slack: Raphaël | github: raphael0202)
Team referent: Stéphane (stephane -at- openfoodfacts.org | slack: stephane | github: stephanegigandet)
All the rest
Be sure to always respect the code of conduct
Some simple guidelines.
- Be as autonomous as possible, even if you are new to the project or open source projects.
- Don't be afraid to ask questions but know how to ask.
- It's ok to be a learner, but try first to do your part to use available learning resources.
- If you feel some documentation is missing, please add it (after requesting information if needed).
- Your opinion has value, try to propose a sensible solution to the problem at hand. Discuss your plan with others when it implies a lot of work.
- Discuss the topics or issues or functionalities you want to work on. The slack workspace is the best choice for it.
- If not already done, open an issue on Github to explain the problem you want to solve or the functionality you want to work on.
- If you want to work on an existing issue, tell everyone in the issue's Github comments. (no need to get it assigned)
- Fork the project and create one branch per issue or functionality you want to work on (never work on main branch, even if you forked the project), see https://learngitbranching.js.org/.
- It's cool to name a branch:
- When you're ready to propose something, send a Pull Request, name it following Conventional commits principles
- Be patient, sometimes it takes time to the core team to review PRs, but you can also ping people on slack if needed.
- It's cool to name a branch:
- The coding style is defined in the
.editorconfigfile. Many editors support EditorConfig, check yours: https://editorconfig.org
Also you can refer to individual repository contributing guidelines.
- Inspirations from https://www.mediawiki.org/wiki/How_to_become_a_MediaWiki_hacker
- Wikimedia makes a difference between:
- policies, what people MUST do: https://www.mediawiki.org/wiki/Development_policy
- guidelines, what people SHOULD do: https://www.mediawiki.org/wiki/Development_guideline
Perks of being a volunteer at Open Food Facts 🏅
⭐Collective action / Impact / actively contributing to citizen science !
⭐Highlighting global impact / individual impact (through testimonials, invites)
⭐Developing skills, learning new ones
⭐Events (annual Open Food Facts days, meet-ups…)
⭐LinkedIn volunteer badge / recommendations
How can I join a specific team ? Fill out the Contributor Skill Pool.