Tech Team: Difference between revisions

From Open Food Facts wiki
m (Alex-off moved page Software Development to Tech Team)
(rework of the page to be tech team page)
Line 1: Line 1:
=== 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. Β 


We have a lot of development work to do:
Every thing we code is under a free software license (possibly [https://www.gnu.org/licenses/agpl-3.0.en.html AGPL])


=== Project we're working on ===
=== Why ===
(see also https://github.com/openfoodfacts/)
Providing tools is essential to be able to [[Data Contribution Team|grow the database]] as fast as possible and maintain its quality.
* Server backend (Perl and MongoDB);
* Web site (HTML5, JS, Foundation, within the backend code as templates);
* iOS native (Swift);
* Android native (Kotlin);
* Robotoff, our machine learning service (Python);
* Hunger Games, our annotation web app (VueJS);
* Our various SDKs (Python, Ruby, Dart, PHP…);
* ''... your idea ...''


=== Topics you can work on ===
The mobile app and the main website reaches a large public providing them health and environment information. It also enables crowd sourcing the database at a large scale, there UX is important.
*[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''
The other tools helps tracking data quality, fixing errors, augment contribution through machine learning etc.


== Needs ==
Having qualitative technical documentation helps a lot reaching new contributors that can help us more efficiently.


There is many issues, categorized by topics, see:
Writing SDKs and API documentation helps lower the entry for [[Reusing Open Food Facts Data|database reuse]] projects.
* [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
=== Connect ===
** For those who love i18n see [https://github.com/openfoodfacts/openfoodfacts-server/issues?q=is%3Aopen+is%3Aissue+label%3Ai18n translations] category
[https://slack.openfoodfacts.org/ Slack channels]:
** See [https://github.com/openfoodfacts/openfoodfacts-server/labels all the categories]
*<nowiki>#dev - is a general channel around development</nowiki>
* [https://github.com/openfoodfacts/openfoodfacts-androidapp/issues Android app issues]
*#infrastructure - is about managing servers, installing software, etc.
* [https://github.com/openfoodfacts/openfoodfacts-ios/issues iOS app issues]
*#documentation - about documentation
* [https://github.com/openfoodfacts/openfoodfacts-ai/issues Open Food Facts AI issues]
*Then 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
All developments happens on '''GitHub''': https://github.com/openfoodfacts/ (even infrastructure has it's repo)
Β 
Some projects have weekly or bimonthly meeting, see README of each projects or [[Events|community calendar.]]
Β 
We have a monthly infrastructure meeting (see [[Events|community calendar)]]
Β 
=== Activities ===
Β 
* 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
** 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 a thing
** 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
Β 
=== Programs ===
Some year we participated 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 propose another program, reach us.


== Principles ==
== Principles ==

Revision as of 15:15, 23 February 2023

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 reaches a large public providing them health and environment information. It also enables crowd sourcing the database at a large scale, there UX is important.

The other tools helps tracking data quality, fixing errors, augment 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.

Connect

Slack channels:

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

All developments happens on GitHub: https://github.com/openfoodfacts/ (even infrastructure has it's repo)

Some projects have weekly or bimonthly meeting, see README of each projects or community calendar.

We have a monthly infrastructure meeting (see community calendar)

Activities

  • 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
    • 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 a thing
    • 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

Programs

Some year we participated 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 propose another program, reach us.

Principles

Our goal is to follow and keep few and simple guidelines.

  1. Discuss the topics or issues or functionalities you want to work on. The slack workspace is the best choice for it.
  2. 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.
  3. If you want to work on an existing issue, tell everyone in the issue's Github comments.
  4. Fork the project and create one branch per issue or functionality you want to work on.
    • 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. Be patient, sometimes it takes time to the core team to review PRs.
  5. The coding style is defined in the .editorconfig file. Many editors support EditorConfig, check yours: https://editorconfig.org

Inspirations