Difference between revisions of "Student projects/GSOC/2017 ideas list"

From Open Food Facts wiki
Jump to navigation Jump to search
Line 25: Line 25:
  
 
=== Improve the UX of the native iOS app (Food Viewer) ===
 
=== Improve the UX of the native iOS app (Food Viewer) ===
Insert description.
+
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<br>
 
'''Mentor:'''Aleene, Pierre<br>
'''Language:'''Strong UX skills, good knowledge of Swift<br>
+
'''Technologies:'''good knowledge of Swift, Knowledge and interest in UI/UX<br>
  
 
=== Define a proper clean API (new version) ===
 
=== Define a proper clean API (new version) ===
Use Swagger to create a self documenting API and automatic bindings for various programming languages.
+
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 but 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, Aleene<br>
 
'''Mentor:'''Anca, Stéphane, Vincent, Aleene<br>
'''Technologies:'''Experience with using (and building) APIs, REST
+
'''Technologies:'''Experience with using (and building) APIs, knowledge of REST,
  
 
=== Create a power contribution tool ===
 
=== 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
+
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.
 
<br><br>
 
<br><br>
 
'''Mentor:'''depending on your tech choice<br>
 
'''Mentor:'''depending on your tech choice<br>
'''Language:'''Any web language (Rail, Python, Backend JS framework)<br>
+
'''Technologies:'''Any web language (Rail, Python, Backend JS framework)<br>
  
 
=== Create an Open Food Facts mobile game ===
 
=== Create an Open Food Facts mobile game ===
Line 46: Line 45:
 
<br><br>
 
<br><br>
 
'''Mentor:'''TBD<br>
 
'''Mentor:'''TBD<br>
'''Language:''' Java, Swift/ObjC or Web technologies (Cordova…)
+
'''Technologies:''' Java, Swift/ObjC or Web technologies (Cordova…)
  
 
=== Create a system to update taxonomies from Product Opener ===
 
=== Create a system to update taxonomies from Product Opener ===
Currently, we use a wiki based system for taxonomies, that we have to reload. This is error prone and requires maintenance work. This project would be about adding a system into product opener to let moderators define parent categories, add translations, wikidata links and various properties.<br><br>
+
Many core concepts of the Open Food Facts environment are organized as taxonomies (multilanguage categories of products, additives, etc).
'''Mentor:'''Stephane or Laurent<br>
+
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.<br><br>
'''Language:''' Perl, some HTML/JS
+
'''Mentor:'''Stephane or Laurent, Anca<br>
 +
'''Technologies:''' Perl, some HTML/JS
  
 
=== Make Product Opener able to show revisions ===
 
=== 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.
 
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 basic changes, but once a product is edited, we can't see how it evolved over time. It would be tremendously interesting for nutrition science and contributors to be able to see how (positive) change happens over time.<br><br>
+
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.<br><br>
 
'''Mentor:'''Stephane or Laurent<br>
 
'''Mentor:'''Stephane or Laurent<br>
'''Language:''' Perl, some HTML/JS
+
'''Technologies:''' Perl, some HTML/JS
  
 
=== Improve Bulk Import of images ===
 
=== 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.<br>
 
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.<br>
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.
+
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.<br><br>
 
 
 
'''Mentor:'''Stephane (mainly for the API and product-opener requirements)<br>
 
'''Mentor:'''Stephane (mainly for the API and product-opener requirements)<br>
'''Language:''' Your choice: will require both front and backend-skills.
+
'''Technologies:''' Your choice: will require both front and backend-skills.
  
 
=== Bulk edit with web GUI for mass product modifications ===
 
=== 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<br>
 +
'''Technologies:'''some Perl, HTML/JS, REST<br>
  
 
=== Create a bot to perform smart edits on the products ===
 
=== Create a bot to perform smart edits on the products ===
 
Open Food Facts has a basic bot system. You will have to design sensible rules and create an edition bot based on it.
 
Open Food Facts has a basic bot system. You will have to design sensible rules and create an edition bot based on it.
 
'''Mentor:'''Pierre<br>
 
'''Mentor:'''Pierre<br>
'''Language:''' Pick your favorite
+
'''Technologies:''' Pick your favorite
  
 
=== Create a Google Cardboard / Daydream compatible viewer app ===
 
=== Create a Google Cardboard / Daydream compatible viewer app ===
 
Enable browsing Open Food Facts in VR with Google Cardboard or Google Daydream. Bonus point if you enable contributions using the camera.
 
Enable browsing Open Food Facts in VR with Google Cardboard or Google Daydream. Bonus point if you enable contributions using the camera.
 +
'''Mentor:'''<br>
 +
'''Technologies:'''<br>
  
 
=== Re-work gamification and make it an important part of the User experience ===
 
=== 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.<br><br>
 +
'''Mentor:'''Stephane, Anca, Pierre<br>
 +
'''Technologies:'''Perl, HTML/JS, UI/UX<br>
  
 
=== Product comparison implemented in the mobile app ===
 
=== Product comparison implemented in the mobile app ===
* 2 by 2, scanned by bar codes or input by text (supermarket mode)
+
An important usage of the Open Food Facts database is in the are 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:
* the web feature of comparing nutritional info of products of the same category
+
* compare pairs of products (one-to-one), scanned by bar codes or input by text (supermarket mode)
* charts on mobile
+
* bringing to mobile the feature of comparing nutritional info of products of the same category
* other usages of comparisons
+
* bringing charts to
 +
* etc.<br><br>
 +
'''Mentor:'''Stephane, Anca, Pierre<br>
 +
'''Technologies:'''Mobile language (see above on the mobile proposals), UI/UX, Statistics basics<br>
  
 
=== Create tooling to import all EU-packaging codes ===
 
=== 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 comes in many formats (XLS, CSV, HTML, and yes, even PDF).
+
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 is building on the basic Python script we have for 3 countries, and extend it to the rest of Europe.
+
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.
 
Bonus point if you add Fishing codes and Recyclable Paper codes to that.
 
'''Mentor:'''Pierre<br>
 
'''Mentor:'''Pierre<br>
'''Language:''' Your language of choice. The current script is in Python
+
'''Technologies:''' Your language of choice. The current script is in Python, Text processing
  
 
=== Add content management capabilities to all static pages of the product opener ===
 
=== Add content management capabilities to all static pages of the 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<br>
 +
'''Technologies:'''basic understanding of CMS, Perl or other technology(?)<br>
  
 +
=== 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.<br><br>
 +
'''Mentor:'''Pierre<br>
 +
'''Technologies:'''Perl, REST, Open data concepts, Wiki data<br>
 
=== Create a connected microwave prototype ===
 
=== Create a connected microwave prototype ===
 
*[[Project:Microwave]]
 
*[[Project:Microwave]]
 +
'''Mentor:'''<br>
 +
'''Technologies:'''Probably: Arduino<br>
 +
 
=== Create a connected fridge prototype ===
 
=== 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:'''<br>
 +
'''Technologies:'''Probably: Arduino<br>
 +
 
=== Create a smart bin prototype ===
 
=== Create a smart bin prototype ===
 +
'''Mentor:'''<br>
 +
'''Technologies:'''Probably: Arduino<br>
  
 
=== Your own idea ===
 
=== Your own idea ===
Line 120: Line 145:
 
*[[Project:Gamification]]
 
*[[Project:Gamification]]
 
*[[Project:Google Glass]]
 
*[[Project:Google Glass]]
*[[Project:Made Near You]]
+
 
*[[Project:Media monitoring]]
+
 
*[[Project:Non Standard Barcodes]]
 
 
*[[Project:OCR]]
 
*[[Project:OCR]]
 
*[[Project:Public Data]]
 
*[[Project:Public Data]]

Revision as of 15:22, 9 February 2017

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)

Integrate a cloud-based OCR into Product Opener

  • 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

Mentor:Stéphane or Laurent
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 clean 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 but 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, Aleene
Technologies:Experience with using (and building) APIs, knowledge of REST,

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 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
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.

Mentor:Stephane or Laurent, Anca
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 or Laurent
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
Technologies:some Perl, HTML/JS, REST

Create a bot to perform smart edits on the products

Open Food Facts has a basic bot system. You will have to design sensible rules and create an edition bot based on it. Mentor:Pierre
Technologies: Pick your favorite

Create a Google Cardboard / Daydream compatible viewer app

Enable browsing Open Food Facts in VR with Google Cardboard or Google Daydream. Bonus point if you enable contributions using the camera. Mentor:
Technologies:

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, Anca, Pierre
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 are 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
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 the 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
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
Technologies:Perl, REST, Open data concepts, Wiki data

Create a connected microwave prototype

Mentor:
Technologies:Probably: Arduino

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:
Technologies:Probably: Arduino

Create a smart bin prototype

Mentor:
Technologies:Probably: Arduino

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