Tech Team: Difference between revisions

From Open Food Facts wiki
mNo edit summary
Β 
(21 intermediate revisions by 6 users not shown)
Line 1: Line 1:
[[File:Tech Emoji.png|thumb]]
=== 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.
# Writing SDKs and API documentation helps lower the entry for [[Reusing Open Food Facts Data|database reuse]] projects.
Β 
=== Tools βš’οΈ ===
πŸ“’ [https://slack.openfoodfacts.org/ Slack channels]:
*<nowiki>#dev - is a general channel around development</nowiki>
*#<nowiki>#infrastructure - is about managing servers, installing software, etc.</nowiki>
*#<nowiki>#documentation - about documentation</nowiki>
*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 [[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 πŸ—οΈ ===


We have a lot of development work to do:
==== 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 we're working on: ===
==== Project management / product design / design πŸ“ ====
* Server backend (Perl and MongoDB);
** skills in project or product design can really help: triaging bug, imagining new UI and UX
* Web site (HTML5, JS, Foundation, within the backend code as templates);
** also if you have skills for design do not hesitate to propose your skills
* iOS native (Swift);
** see [[Design]]
* Android native (Kotlin);
==== Technical Documentation πŸ“š ====
* Robotoff, our machine learning service (Python);
** help improve documentation on projects directly (often docs/ folder, but also the README)
* Hunger Games, our annotation web app (VueJS);
** contributing to this wiki is also useful in some cases
* Our various SDKs (Python, Ruby, Dart, PHP…);
** remember that putting good links at the right place is also very efficient
* ''... your idea ...''
==== 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.


=== Topics you can work on ===
===Team referent πŸ§‘πŸ½β€πŸ’»===
*[https://github.com/openfoodfacts/openfoodfacts-androidapp/issues/4169 Android app (Kotlin)]
Alex (alex -at- openfoodfacts.org | slack: Alex G. | github: [https://github.com/alexgarel alexgarel])
*[https://github.com/openfoodfacts/openfoodfacts-ios/issues/912 iPhone app (Swift)]
*[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)]


''Software development page on the website: https://world.openfoodfacts.org/development''
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. Β 


== Needs ==
====[[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])


There is many issues, categorized by topics, see:
'''All the rest'''
* [https://github.com/openfoodfacts/openfoodfacts-server/issues Website, backend and API issues]
** 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
** For those who love i18n see [https://github.com/openfoodfacts/openfoodfacts-server/issues?q=is%3Aopen+is%3Aissue+label%3Ai18n translations] category
** See [https://github.com/openfoodfacts/openfoodfacts-server/labels all the categories]
* [https://github.com/openfoodfacts/openfoodfacts-androidapp/issues Android app issues]
* [https://github.com/openfoodfacts/openfoodfacts-ios/issues iOS app issues]
* [https://github.com/openfoodfacts/openfoodfacts-ai/issues Open Food Facts AI issues]


== Principles ==
Infrastructure, all projects based on Python / Javascript have Alex as referent.
=== Principles πŸ’Ž ===


Our goal is to follow and keep few and simple guidelines.
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 57: Line 119:
** 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]]

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

  1. Providing tools is essential to be able to grow the database as fast as possible and maintain its quality.
  2. 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.
  3. The other tools help tracking data quality, fixing errors, augmenting contribution through machine learning etc.
  4. Having qualitative technical documentation helps a lot reaching new contributors that can help us more efficiently.
  5. Writing SDKs and API documentation helps lower the entry for database reuse projects.

Tools βš’οΈ

πŸ“’ Slack channels:

  • #dev - is a general channel around development
    1. #infrastructure - is about managing servers, installing software, etc.
    2. #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.

  1. Be as autonomous as possible, even if you are new to the project or open source projects.
  2. Don't be afraid to ask questions but know how to ask.
  3. It's ok to be a learner, but try first to do your part to use available learning resources.
  4. If you feel some documentation is missing, please add it (after requesting information if needed).
  5. 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.
  6. Discuss the topics or issues or functionalities you want to work on. The slack workspace is the best choice for it.
  7. 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.
  8. If you want to work on an existing issue, tell everyone in the issue's Github comments. (no need to get it assigned)
  9. 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.
  10. 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

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.

Main page of HOW TO HELP.