Student projects/GSOC/2017 ideas list
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
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
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 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, 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
- Project:Archeology
- Project:Blind people
- Project:Community portal
- Project:Contribute Back
- Project:Current events
- Project:Error detection
- Project:Mobile version
- Project:Mobile Apps
- Project:What's in my yogurt?
- Project:Structured Data
- Project:Internationalization & Global taxonomies & Translations
- Project:Fast Food
- Project:Gamification
- Project:Google Glass