Student projects/GSOC/2017 ideas list

From Open Food Facts wiki
Revision as of 18:10, 1 February 2024 by Alex-off (talk | contribs) (Alex-off moved page Student projects/GSOC/Proposals/2017 to Student projects/GSOC/2017 ideas list: consistency with 2022 and 2023)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

Old list

The new list for 2018 projects is here: https://en.wiki.openfoodfacts.org/Student_projects/GSOC/Proposals


Here is the list of Open Food Facts proposed projects for the Google Summer of Code.
Any questions can be asked on the dedicated channel on Slack (https://openfoodfacts.slack.com/messages/summerofcode)

Match OpenCorporates data to OpenFoodFacts with simple user controls

OpenCorporates is an ODBL licensed dataset with an API. Many of the companies that manufacture food have a specific legal entity which should be identifiable in OpenCorporates.

From https://github.com/openfoodfacts/openfoodfacts-server/issues/1072

* Capture the legal entity (name, street address, suburb, state, country or similar geographic modelling) 
* When country/state are present, provide users with an autocomplete control looking up the OpenCorporates API
* Suggest matches based on suburb, state, country(jurisdiction) and name; setting an OpenCorporatesID


Integrate a cloud-based OCR into Product Opener

The main source of data for the products in the Open Food Facts and Open Beauty Facts databases is the packaging of the products, photographed by contributors and then typed into the database by the contributors. This ensures accuracy and verifiability of the information. Naturally, this manual transfer is tedious and our precious contributors deserve better tools. This project is about using an Optical Character Recognition service (cloud-based OCR) in the Product Opener (the server software running Open Food Facts and Open Beauty Facts) to provide the following (non-exhaustive list):

  • Process all uploaded images proactively using Tesseract and/or the New Cloud based engine
  • Store JSON and return a processed version to mobile client and/or web client for suggestions to the user
  • Add support to search into OCR results
  • Create a mini-game to let users turn the Raw OCR into data

See also:Project:OCR Mentor: Stephane (backend), Sebastien (backend), Johannes (backend), Laurent (backend), Pierre (OCR)
Technologies: Perl, MongoDB

Add editing capabilities to the Cordova app (for Android, iOS and Windows Phone)

Open Food Facts and Open Beauty Facts rely on crowdsourcing. The easier it is for contributors to complete a product, the faster the base grows. This project is about adding full editing capabilities on the Cordova mobile app (currently, only image capture is possible).

Mentor: Stéphane and Pierre
Technologies: Strong UX skills, good knowledge of Cordova, good HTML and Javascript

Add editing capabilities to the Native Android app

Open Food Facts and Open Beauty Facts rely on crowdsourcing. The easier it is for contributors to complete a product, the faster the base grows. This project is about adding full editing capabilities on the native Android mobile app (currently only image capture is possible).

Mentor: Herau, Itchix and Pierre
Technologies: Strong UX skills, good knowledge of Android Java

Improve the UX of the native iOS app (Food Viewer)

As opposed to the other 2 mobile applications, the native iOS application contains full viewing and editing capabilities. However, the UX of this application is not as good as the other two. The work needed on this application is a presentation work, to put things in a form easy to use.

Mentor: Aleene, Pierre
Technologies: good knowledge of Swift, Knowledge and interest in UI/UX

Define a proper RESTful API (new version)

The current REST API of the Open Food Facts database was built with time and can be improved from the point of view of its completitude, consistency and error management. This proposal is about defining and implementing a new API, thought from scratch and built by learning from the lessons of the previos experience. Solutions like Swagger can be envisaged to create a self documenting API and automatic bindings for various programming languages, but the proposal is not limited to this.

Mentor: Anca, Stéphane, Vincent (API design), Aleene
Technologies: Experience with using (and building) APIs, knowledge of REST,

Create an Open Food Facts mobile game

Imagine a game where products would be useful items on your quest, and scanning them would unlock bonuses, Lifepoints… This is about creating a game that would be a fun way to discover more about food or cosmetics and/or contribute to Open Food/Beauty Facts.

Mentor: TBD (Anca)
Technologies: Java, Swift/ObjC or Web technologies (Cordova…)

Create a system to update taxonomies from Product Opener

Many core concepts of the Open Food Facts environment are organized as taxonomies (multilanguage categories of products, additives, etc). Currently, we use a wiki based system for managing these taxonomies, that we have to reload in the Product Opener server every time we make updates to it. This is error prone and requires maintenance work. This feature is about adding a system in the Product Opener to allow moderators to define parent categories, add translations, wikidata links, etc. See Global taxonomies for more details on taxonomies

Mentor: Stephane (backend), Sebastien (backend), Johannes (backend), Laurent (backend), Anca (frontend)
Technologies: Perl, some HTML/JS

Make Product Opener able to show revisions

Food and cosmetics change over time. Nutrition info, ingredients sometimes slightly change. Our contributors are here to document all that using photos, and then update the product. Product Opener already stores these basic changes, but, once a product is edited, we can not see how it evolved over time. This project is about providing an interface for displaying the subsequent revisions of a product and all the tools that come with that (comparisons between versions, rollback, tracing an information to a revision, etc). It would be tremendously interesting for nutrition science and contributors to be able to see how (positive) change happens over time.

Mentor: Stephane (backend), Sebastien (backend), Johannes (backend), Laurent (backend)
Technologies: Perl, some HTML/JS

Improve Bulk Import of images

We currently have a very basic system to bulk-import images and create products accordingly. The project would be to create a web interface for this system for contributors, with a way to recognize barcodes, sort images by timestamp/name/manually. A basic moderation system will ensure data quality.
The project will be tested with a massive trove of images that will be eventually imported into Open Food Facts if the project is successful.

Mentor: Stephane (mainly for the API and product-opener requirements)
Technologies: Your choice: will require both front and backend-skills.

Bulk edit with web GUI for mass product modifications

Sometimes, the same error can sneak into a massive amount of contribution, for example related to a typo or a misunderstanding on an information on the packaging. In other situations, similar products might need to be updated in a similar way, for example filling in the type of packaging for all products of a same brand. This proposal is about creating a tool that would allow a moderator to easily select the products and perform these bulk changes on the selected products.

Mentor: Anca, Pierre, Stephane (backend), Sebastien (backend), Johannes (backend), Laurent (backend)
Technologies: some Perl, HTML/JS, REST

Re-work gamification and make it an important part of the User experience

Currently there is a basic gamification system in Open Food Facts, giving badges to contributors based on their amount and type of contributions. However, this system is not receiving the attention it should, from a developement point of view, and the concept is not exploited to the maximum of its capabilities. As Open Food Facts relies on contributions from users, gamification can be used to improve retention of users, boost their contributions and increase the quality. Also, it can be used as a tool to drive the contributions in a direction that would not be followed naturally by the users but which is very valuable for the purpose of collecting open data. This proposal comprises the re-working of the gamification backend, along with ideas and implementations of the presentation of the badges, to make it an important part of the Open Food Facts experience.

Mentor: Stephane (backend), Sebastien (backend), Johannes (backend), Laurent (backend), Anca, Pierre (frontend and UX)
Technologies: Perl, HTML/JS, UI/UX

Product comparison implemented in the mobile app

An important usage of the Open Food Facts database is in the area of products comparison. Currently, some comparison tools exist (e.g. displaying products on a chart, comparison of nutrition facts with the average of a category), but they are not complete and they are only available on the web. This feature is about bringing these tools to (one of) the mobile application(s), allowing the users to:

  • compare pairs of products (one-to-one), scanned by bar codes or input by text (supermarket mode)
  • bringing to mobile the feature of comparing nutritional info of products of the same category
  • bringing charts to
  • etc.

Mentor: Stephane, Anca, Pierre, Qian(Android), herau (Android), itchix (Android), aleene (iOS)
Technologies: Mobile language (see above on the mobile proposals), UI/UX, Statistics basics

Create tooling to import all EU-packaging codes

EU packaging codes are those little logos on food that -once decyphered- will tell you where the product was packaged and produced. Unfortunately, the data, mandatory for all European Union countries, comes in many formats (XLS, CSV, HTML, and yes, even PDF). This project would be building on the basic Python script we have for 3 countries, and extend it to the rest of Europe. Bonus point if you add Fishing codes and Recyclable Paper codes to that.

Mentor: Pierre
Technologies: Your language of choice. The current script is in Python, Text processing

Add content management capabilities to all static pages of Product Opener

The Product Opener server side software contains, besides the product pages, lots of pages with helper text, explanation and extra information about the elements of the Open Food Facts environment. Currently, these texts are in the source code, or, in the best cases, stored and edited on the wiki and regularily migrated to the Open Food Facts database site. This project is about implementing / integrating a content management system to allow this content to be easily authored by moderators of the site.

Mentor: Anca, Stephane or Sebastien
Technologies: basic understanding of CMS, Perl or other technology(?)

Tool for syncing with Wikidata on additives

The purpose of Open Food Facts and Open Beauty Facts is to provide the facts, not to issue judgement. Thus, we heavily rely on external sources of information (Wikidata) in what concerns the facts we present about the attributes of food products (such as additives, labels, ingredients, etc). This project is about providing a tool to better integrate these external data sources, including but not limited to:

  • Automatically fetch relevant information from Wikidata about categories, labels, additives, ingredients…
  • Display them in a human readable way on relevant pages and as tooltips
  • Expose this information in the API.

Mentor: Pierre (wikidata)
Technologies: Perl, REST, Open data concepts, Wiki data

Create a power contribution tool

Open Food Facts and Open Beauty Facts rely on crowdsourcing. The easier it is for contributors to complete a product, the faster the base grows. This projects is about creating a standalone power-edit tool using the API.

Mentor: depending on your tech choice
Technologies: Any web language (Rail, Python, Backend JS framework…)

Create a bot to perform smart edits on the products

Open Food Facts already has a couple of basic editing bots in Perl and Ruby. You will have to expand the bindings of your choice, and design a series of sensible edition rules and create an easy to use edition bot based on it.

Mentor: Pierre (Python), Nicolas (Ruby)…
Technologies: Pick your favorite

Create a contribution quality score

Predict if a contribution is of high or low quality using several signals and techniques Mentor: Stéphane…
Technologies: Pick your favorite

Create an Android Wear lookup app

Enable browsing Open Food Facts with Android Wear. For lack of a camera, You will use the native input methods to type the barcode, and design simple way to access the most essential information

Mentor:Qian, Herau, itchix
Technologies:

Create a Google Cardboard / Daydream compatible viewer app

Enable browsing Open Food Facts in VR with Google Cardboard or Google Daydream.

Mentor:Qian, Herau
Technologies:

Expand the Hololens prototype

Niwra has created a Hololens able to display multilingual ingredients in your field of view. Finish implemeting the API (labels, categories) in the Hololens app. Add contribution abilities (taking photos) Mentor:Niwra
Technologies:UWP, C…


Create a connected microwave prototype

  • Create a connected microwave prototype that uses Open Food Facts data and a barcode scanner or computer vision techniques to assess products taken in and out of the microwave, find the product and choose the right cooking programme accordingly.

Project:Microwave

Mentor:Qian
Technologies: Arduino or your own

Create a connected fridge prototype

Create a connected fridge prototype that uses Open Food Facts data and a barcode scanner or computer vision techniques to assess products taken in and out of the fridge, calculate calorie input by user and is able to create a list of things to buy again.
Mentor:Qian
Technologies: Arduino or your own

Create a smart bin prototype

Create a smart bin prototype that uses Open Food Facts data and a barcode scanner or computer vision techniques to assess products thrown away in the bin, and give recycling instructions.
Mentor:Qian
Technologies: Arduino or your own

Your own idea

You can of course propose your own great idea, as long as it's suitable in terms of workload with the requirements of the Summer of Code.

Other ideas