Difference between revisions of "Tech Team"
(copy some parts from https://wiki.openfoodfacts.org/Development_Team) |
(Adds link to the corresponding translated page.) |
||
(16 intermediate revisions by 5 users not shown) | |||
Line 1: | Line 1: | ||
+ | {{otherlang | ||
+ | | fr=FR:Equipe/Développement | ||
+ | }} | ||
+ | |||
+ | [[File:Tech Emoji.png|thumb]] | ||
+ | |||
+ | |||
=== Aim 🎯 === | === Aim 🎯 === | ||
Line 9: | Line 16: | ||
==== Why ==== | ==== Why ==== | ||
− | |||
− | 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. | + | # Providing tools is essential to be able to [[Database Team|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. | + | # 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. | |
− | 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 [[Reusing Open Food Facts Data|database reuse]] projects. |
− | |||
− | Writing SDKs and API documentation helps lower the entry for [[Reusing Open Food Facts Data|database reuse]] projects. | ||
=== Tools ⚒️ === | === Tools ⚒️ === | ||
Line 26: | Line 30: | ||
*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. | *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 | *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) | 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).]] | ||
+ | |||
+ | === First steps 🐣 === | ||
− | + | * read this page ! It's the only mandatory step 😉 | |
+ | * you may [https://connect.openfoodfacts.org/join-the-contributor-skill-pool-open-food-facts 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, | ||
+ | ** [https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo fork the repository on github], install the project locally (see Readme), and make it run. If you are stuck [https://stackoverflow.com/help/how-to-ask 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 [https://stackoverflow.com/help/how-to-ask 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 🏗️ === | === Needs / Missions 🏗️ === | ||
− | + | ==== Software development 🤓 ==== | |
** there is a large variety of projects to develop. see [https://github.com/openfoodfacts/.github/blob/main/profile/README.md#developers https://github.com/openfoodfacts/] | ** there is a large variety of projects to develop. see [https://github.com/openfoodfacts/.github/blob/main/profile/README.md#developers https://github.com/openfoodfacts/] | ||
** if you want to help with the core of the project, consider learning Perl (server) or Flutter (mobile app) | ** if you want to help with the core of the project, consider learning Perl (server) or Flutter (mobile app) | ||
Line 41: | Line 58: | ||
** For beginners we often try to add a ''good-first-issue'' label on accessible issues | ** 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 | ** 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 | ** also if you have skills for design do not hesitate to propose your skills | ||
− | * Technical Documentation 📚 | + | ** see [[Design]] |
+ | ==== Technical Documentation 📚 ==== | ||
** help improve documentation on projects directly (often docs/ folder, but also the README) | ** help improve documentation on projects directly (often docs/ folder, but also the README) | ||
** contributing to this wiki is also useful in some cases | ** contributing to this wiki is also useful in some cases | ||
** remember that putting good links at the right place is also very efficient | ** 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 [https://github.com/openfoodfacts/openfoodfacts-infrastructure/ openfoodfacts-infrastructure repository] | ** if you have a good level of expertise in Linux, ZFS, Proxmox or some specific architecture, we would really welcome your participation. see [https://github.com/openfoodfacts/openfoodfacts-infrastructure/ openfoodfacts-infrastructure repository] | ||
** [https://github.com/openfoodfacts/openfoodfacts-monitoring/ monitoring] is also important | ** [https://github.com/openfoodfacts/openfoodfacts-monitoring/ monitoring] is also important | ||
** contributing in docker in projects, and CI/CD actions is also much appreciated | ** 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) | ** robotoff is at the heart of machine learning usage (orchestrator) | ||
− | ** hunger-games is a fantastic tool to contribute data to it | + | ** [https://hunger.openfoodfacts.org/ hunger-games] is a fantastic tool to contribute data to it |
** openfoodfacts-ai is the main repository for machine learning | ** openfoodfacts-ai is the main repository for machine learning | ||
− | * Programs 🏅 | + | ** see also [[Artificial Intelligence]] |
+ | ==== Programs 🏅 ==== | ||
** We regularly participate in programs like Google Summer Of Code, Google Season of docs, [https://outreachy.org/ outreachy], [https://dataforgood.fr/ data for good], | ** We regularly participate in programs like Google Summer Of Code, Google Season of docs, [https://outreachy.org/ outreachy], [https://dataforgood.fr/ data for good], | ||
** If you are interested in mentoring or participating, or if you would like to propose another program, reach out to us. | ** If you are interested in mentoring or participating, or if you would like to propose another program, reach out to us. | ||
+ | |||
===Team referent 🧑🏽💻=== | ===Team referent 🧑🏽💻=== | ||
− | Alex (Alex G. | + | Alex (alex -at- openfoodfacts.org | slack: Alex G. | github: [https://github.com/alexgarel 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 🪆==== | ====Subteams in Tech 🪆==== | ||
− | Because there are a lot of projects we have subteams for each area of interest. | + | Because there are a lot of projects, we have subteams for each area of interest. |
====[[Mobile Apps|Mobile 📲]]==== | ====[[Mobile Apps|Mobile 📲]]==== | ||
− | Team referent: Edouard | + | Team referent: Edouard (edouard -at- openfoodfacts.org | slack: Edouard Marquez | github: [https://github.com/g123k g123k]) |
====[[Artificial Intelligence|Machine Learning 🤖]]==== | ====[[Artificial Intelligence|Machine Learning 🤖]]==== | ||
− | Team referent: Raphael | + | Team referent: Raphael (raphael -at- openfoodfacts.org | slack: Raphaël | github: [https://github.com/raphael0202 raphael0202]) |
====[[Product Opener|Server 🐫]]==== | ====[[Product Opener|Server 🐫]]==== | ||
− | Team referent: Stéphane | + | Team referent: Stéphane (stephane -at- openfoodfacts.org | slack: stephane | github: [https://github.com/stephanegigandet stephanegigandet]) |
+ | |||
+ | '''All the rest''' | ||
+ | |||
+ | Infrastructure, all projects based on Python / Javascript have Alex as referent. | ||
=== Principles 💎 === | === Principles 💎 === | ||
Line 76: | Line 102: | ||
Some simple guidelines. | Some simple guidelines. | ||
− | # Be '''as autonomous as possible''', even if you are new to the project or open source projects | + | # 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 [https://stackoverflow.com/help/how-to-ask how to ask]''' | + | # '''Don't be afraid to ask''' questions but '''know [https://stackoverflow.com/help/how-to-ask how to ask].''' |
− | # It's ok to be a learner, but try first to do your part to use available learning resources | + | # 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). | # If you feel some '''documentation is missing, please add it''' (after requesting information if needed). | ||
− | # '''Your opinion has value,''' try to propose sensible solution to the problem at hand. Discuss your plan with others when it implies a lot of work. | + | # '''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 [http://slack.openfoodfacts.org/ slack workspace] is the best choice for it. | # '''Discuss the topics or issues or functionalities you want to work on'''. The [http://slack.openfoodfacts.org/ 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 not already done, '''open an issue''' on Github to explain the problem you want to solve or the functionality you want to work on. | ||
Line 100: | Line 126: | ||
===Perks of being a volunteer at Open Food Facts 🏅=== | ===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=== | ===Other teams=== | ||
− | ''How can I join a specific team ?'' Fill out the [https:// | + | ''How can I join a specific team ?'' Fill out the [https://connect.openfoodfacts.org/join-the-contributor-skill-pool-open-food-facts Contributor Skill Pool.] |
=====Main page of [[Contributor|HOW TO HELP]].===== | =====Main page of [[Contributor|HOW TO HELP]].===== | ||
+ | [[Category:Teams]] |
Latest revision as of 10:25, 6 September 2024
Other languages:
/ français /
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 ⚒️
- #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.