Tech Team: Difference between revisions
Β |
|||
Line 28: | Line 28: | ||
All developments happens on '''GitHub''': https://github.com/openfoodfacts/ (even infrastructure has its repo) | 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 [[Events|community calendar.]] | π '''Some projects have weekly or bimonthly meeting,''' see the README of each projects or [[Events|community calendar.]] | ||
Β | |||
We have a monthly infrastructure meeting (see [[Events|community calendar).]] | We have a monthly infrastructure meeting (see [[Events|community calendar).]] | ||
Latest revision as of 15:30, 16 August 2024
Aim π―
What
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)
Why
- 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.
Tools βοΈ
π’ Slack channels:
- #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).
First steps π£
- read this page ! It's the only mandatory step π
- you may register to skill pool if you haven't yet
- you may also join the slack dedicated to the sub project you are interested in (enables a faster communication), and ping the project lead
- if you are not sure were your skill will be better used, ask for Alex or any team leader, we will tell try to match needs with your talents and interests
- eventually put the monthly / weekly meeting of the project in your agenda, if you are able to participate
- if you want to code,
- fork the repository on github, install the project locally (see Readme), and make it run. If you are stuck ask for help
- search for an issue with good first issue label and try to fix it ! If the issue is a bit old, it is better to check it's still there (closing an already fixed issue is also a win !). Once again, if you are stuck or in case of doubt, don't hesitate to ask for help
- celebrate π you are now part of the Tech Team contributors !
- if you want to help in project management / UX it will certainly start with a discussion with the project leader
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
- see Design
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 π§
- if you have a good level of expertise in Linux, ZFS, Proxmox or some specific architecture, we would really welcome your participation. see openfoodfacts-infrastructure repository
- monitoring is also important
- contributing in docker in projects, and CI/CD actions is also much appreciated
Machine learning π€
- robotoff is at the heart of machine learning usage (orchestrator)
- hunger-games is a fantastic tool to contribute data to it
- openfoodfacts-ai is the main repository for machine learning
- see also Artificial Intelligence
Programs π
- We regularly participate in programs like Google Summer Of Code, Google Season of docs, outreachy, data for good,
- If you are interested in mentoring or participating, or if you would like to propose another program, reach out to us.
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.
Mobile π²
Team referent: Edouard (edouard -at- openfoodfacts.org | slack: Edouard Marquez | github: g123k)
Machine Learning π€
Team referent: Raphael (raphael -at- openfoodfacts.org | slack: RaphaΓ«l | github: raphael0202)
Server π«
Team referent: StΓ©phane (stephane -at- openfoodfacts.org | slack: stephane | github: stephanegigandet)
All the rest
Infrastructure, all projects based on Python / Javascript have Alex as referent.
Principles π
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:
issue/[issue_number]-[name]
; ex.:issue/1630-name-of-the-issue
- 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
.editorconfig
file. Many editors support EditorConfig, check yours: https://editorconfig.org
Also you can refer to individual repository contributing guidelines.
Inspirations
- https://www.mediawiki.org/wiki/How_to_contribute
- 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β¦)
β Goodies
β LinkedIn volunteer badge / recommendations
Other teams
How can I join a specific team ? Fill out the Contributor Skill Pool.