Line 1: |
Line 1: |
| + | === Aim 🎯 === |
| + | |
| + | ==== What ==== |
| The Open Food Facts software is developed collaboratively by hackers from all around the world. | | The Open Food Facts software is developed collaboratively by hackers from all around the world. |
| | | |
− | All developement happens on '''GitHub''': https://github.com/openfoodfacts/
| + | Technical skills are really appreciated in a wide variety of domains. |
| + | |
| + | Every thing we code is under a free software license (possibly [https://www.gnu.org/licenses/agpl-3.0.en.html AGPL]) |
| + | |
| + | ==== Why ==== |
| + | Providing tools is essential to be able to [[Data Contribution 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. |
| + | |
| + | Having qualitative technical documentation helps a lot reaching new contributors that can help us more efficiently. |
| | | |
− | We have a lot of development work to do:
| + | Writing SDKs and API documentation helps lower the entry for [[Reusing Open Food Facts Data|database reuse]] projects. |
| | | |
− | === Project we're working on === | + | === Tools ⚒️ === |
− | (see also https://github.com/openfoodfacts/)
| + | 📢 [https://slack.openfoodfacts.org/ Slack channels]: |
− | * Server backend (Perl and MongoDB); | + | *<nowiki>#dev - is a general channel around development</nowiki> |
− | * Web site (HTML5, JS, Foundation, within the backend code as templates); | + | *#<nowiki>#infrastructure - is about managing servers, installing software, etc.</nowiki> |
− | * iOS native (Swift); | + | *#<nowiki>#documentation - about documentation</nowiki> |
− | * Android native (Kotlin); | + | *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. |
− | * Robotoff, our machine learning service (Python);
| + | *There are also channels specific to languages: #perl, #flutter, #python, etc. to ask questions specific to the language or develop the SDK |
− | * Hunger Games, our annotation web app (VueJS);
| + | *Some are specific to wider arguments. For example for ML #robotoff and #ai-machinelearning. |
− | * Our various SDKs (Python, Ruby, Dart, PHP…); | + | All developments happens on '''GitHub''': https://github.com/openfoodfacts/ (even infrastructure has its repo) |
− | * ''... your idea ...'' | |
| | | |
− | === Topics you can work on ===
| + | '''Some projects have weekly or bimonthly meeting,''' see the README of each projects or [[Events|community calendar.]] |
− | *[https://github.com/openfoodfacts/smooth-app/issues/525 Flutter app (Dart)]
| |
− | *[https://github.com/openfoodfacts/openfoodfacts-dart/issues/218 Dart package]
| |
− | *[https://github.com/openfoodfacts/api-documentation/issues/23 API Documentation (Familiarity with APIs, good pedagogy and writing skills)]
| |
− | *[https://github.com/openfoodfacts/robotoff/issues/374 Robotoff (Python)]
| |
− | *[https://github.com/openfoodfacts/openfoodfacts-server/issues/5529 Server (HTML,CSS, JS + Perl)]
| |
− | *[https://github.com/openfoodfacts/openfoodfacts-hungergames/issues/234 Hunger Games (VueJS)]
| |
− | *[https://github.com/openfoodfacts/openfoodfacts-androidapp/issues/4169 Android app (Kotlin)]
| |
− | *[https://github.com/openfoodfacts/openfoodfacts-ios/issues/912 iPhone app (Swift)]
| |
| | | |
− | ''Software development page on the website: https://world.openfoodfacts.org/development''
| + | We have a monthly infrastructure meeting (see [[Events|community calendar).]] |
| | | |
− | == Needs == | + | === First steps 🐣 === |
| | | |
− | There is many issues, categorized by topics, see:
| + | * read this page ! It's the only mandatory step 😉 |
− | * [https://github.com/openfoodfacts/openfoodfacts-server/issues Website, backend and API issues] | + | * you may [https://connect.openfoodfacts.org/join-the-contributor-skill-pool-open-food-facts register to skill pool] if you haven't yet |
− | ** For beginners see [https://github.com/openfoodfacts/openfoodfacts-server/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22 First Good Issue] category | + | * you may also join the slack dedicated to the sub project you are interested in (enables a faster communication), and ping the project lead |
− | ** For those who love i18n see [https://github.com/openfoodfacts/openfoodfacts-server/issues?q=is%3Aopen+is%3Aissue+label%3Ai18n translations] category | + | * 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 |
− | ** See [https://github.com/openfoodfacts/openfoodfacts-server/labels all the categories]
| + | * eventually put the monthly / weekly meeting of the project in your agenda, if you are able to participate |
− | * [https://github.com/openfoodfacts/openfoodfacts-androidapp/issues Android app issues]
| + | * if you want to code, |
− | * [https://github.com/openfoodfacts/openfoodfacts-ios/issues iOS app issues] | + | ** [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] |
− | * [https://github.com/openfoodfacts/openfoodfacts-ai/issues Open Food Facts AI issues] | + | ** 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 |
| | | |
− | == Principles == | + | === Needs / Missions 🏗️ === |
| | | |
− | Our goal is to follow and keep few and simple guidelines.
| + | * 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/] |
| + | ** 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 [https://github.com/openfoodfacts/openfoodfacts-infrastructure/ openfoodfacts-infrastructure repository] |
| + | ** [https://github.com/openfoodfacts/openfoodfacts-monitoring/ 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) |
| + | ** [https://hunger.openfoodfacts.org/ 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, [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. |
| + | ===Team referent 🧑🏽💻=== |
| + | 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 🪆==== |
| + | Because there are a lot of projects, we have subteams for each area of interest. |
| + | |
| + | ====[[Mobile Apps|Mobile 📲]]==== |
| + | Team referent: Edouard (edouard -at- openfoodfacts.org | slack: Edouard Marquez | github: [https://github.com/g123k g123k]) |
| + | ====[[Artificial Intelligence|Machine Learning 🤖]]==== |
| + | Team referent: Raphael (raphael -at- openfoodfacts.org | slack: Raphaël | github: [https://github.com/raphael0202 raphael0202]) |
| + | ====[[Product Opener|Server 🐫]]==== |
| + | 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 💎 === |
| + | |
| + | Be sure to always respect the [https://world.openfoodfacts.org/code-of-conduct 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 [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. |
| + | # 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 [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. |
− | # If you want to work on an existing issue, '''tell everyone in the issue's Github comments'''. | + | # 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'''. | + | # 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: ''<code>issue/[issue_number]-[name]</code>''; ex.: ''<code>issue/1630-name-of-the-issue</code>'' | | #* It's cool to name a branch: ''<code>issue/[issue_number]-[name]</code>''; ex.: ''<code>issue/1630-name-of-the-issue</code>'' |
− | #* When you're ready to propose something, send a '''Pull Request'''. Be patient, sometimes it takes time to the core team to review PRs. | + | #* When you're ready to propose something, send a '''Pull Request''', name it following [https://www.conventionalcommits.org/en/v1.0.0/ Conventional commits] principles |
− | # The '''coding style''' is defined in the <code>[https://github.com/openfoodfacts/openfoodfacts-server/blob/master/.editorconfig .editorconfig]</code> file. Many editors support EditorConfig, check yours: https://editorconfig.org | + | #* Be patient, sometimes it takes time to the core team to review PRs, but you can also ping people on slack if needed. |
| + | # The coding style is defined in the <code>[https://github.com/openfoodfacts/openfoodfacts-server/blob/master/.editorconfig .editorconfig]</code> file. Many editors support EditorConfig, check yours: https://editorconfig.org |
| + | Also you can refer to individual repository contributing guidelines. |
| | | |
− | == Inspirations == | + | ==== Inspirations ==== |
| | | |
| * https://www.mediawiki.org/wiki/How_to_contribute | | * https://www.mediawiki.org/wiki/How_to_contribute |
Line 58: |
Line 120: |
| ** policies, what people MUST do: https://www.mediawiki.org/wiki/Development_policy | | ** policies, what people MUST do: https://www.mediawiki.org/wiki/Development_policy |
| ** guidelines, what people SHOULD do: https://www.mediawiki.org/wiki/Development_guideline | | ** 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 [https://connect.openfoodfacts.org/join-the-contributor-skill-pool-open-food-facts Contributor Skill Pool.] |
| + | =====Main page of [[Contributor|HOW TO HELP]].===== |
| + | [[Category:Teams]] |