I am pleased to announce our project in Outreachy. Currently we are looking for an intern.
Project registration: [Improve the code quality of the Perl backend of Open Food Facts](https://www.outreachy.org/outreachy-may-2020-internship-round/communities/perl/#improve-the-code-quality-of-the-perl-backend-of-op)
Improve the code quality of the Perl backend of Open Food Facts
Open Food Facts is a Wikipedia for food products: a collaborative database of food products, with a backend written in Perl.
Over the last 8 years, the Open Food Facts code base has grown a lot organically, which makes contributing not very welcoming for developers, and sometimes also causes performance issues and bugs.
This project is to improve the architecture, performance, code quality, tests and documentation of an important project that badly needs it!
It's important to note that Open Food Facts is a running project with millions of users every month, so finding the right way to do things is only the beginning: it will also be necessary to find the right way to get there. In practice, it will be better to make small incremental changes that can be gradually deployed with minimal risk.
The project could include some of the following:
- Replacing the generation of HTML by a templating system like Template::Toolkit
- Extending the existing documentation in POD format
- Re-architecturing the Open Food Facts Perl modules and functions, possibly making some of them more generic and publishing them on CPAN.
- Extending the coverage of unit tests
- Making it easier to install a dev environment for Open Food Facts
- and more!
**Project Contribution Information**
As part of the application process, all applicants must make at least one contribution to be accepted as an intern for this project. Only applicants who make a contribution will be eligible to be accepted as interns.
Applicants can contribute to this project through [the project repository or contribution page](https://github.com/openfoodfacts/openfoodfacts-server). The project uses an [issue tracker](https://github.com/openfoodfacts/openfoodfacts-server/issues) to keep information about bugs to fix, project features to implement, documentation to write, and more.
Please [join the Open Food Facts community on Slack](https://slack.openfoodfacts.org/), introduce yourself there and get familiar with the project.
A good way to do that is to open your fridge or cupboard to find a food item to scan with our Android or iOS application. Open Food Facts works like Wikipedia. The food product may already be in the database with its data completed. If it’s present, you will get valuable information about its nutritional quality (Nutri-Score) or its level of food processing (NOVA). If it’s not present yet, please take some pictures and add it!
On the Open Food Facts Slack, you can introduce yourself in the #general channel and the channel dedicated the the Perl backend: #productopener (Product Opener is the code name of the Perl backend).
My username on Slack is @stephane, please do reach to me when you join the Slack.
Our code base is on Github: https://github.com/openfoodfacts/openfoodfacts-server
**How do I work with the Perl & Raku community?**
Outreachy applicants can get help and feedback from both mentors and community members. Community members discuss their contributions in a public chat. Outreachy applicants can often learn from those discussions.
Please introduce yourself on the public project chat:
- **Slack** - [Follow this link](https://slack.openfoodfacts.org/) to join this project's public chat.
Register on our Slack. If you have trouble, please e-mail email@example.com
Then introduce yourself on #general, join the #productopener channel and message me (@stephane).
Outreachy mentors will often be in the community public chat. The project mentor's usernames are: stephane,
**Who will I work with?**
Each Outreachy intern works remotely with one or more mentors. Most Outreachy mentors only work with one intern per round. Mentors are your guides in learning more about free and open source software, technical and non-technical skills, and will always be there when you get stuck.
During this internship project, you'll be interacting with a team of 3-5 people. The project has been accepting contributions from people from around the world for more than 2 years.
You'll be working with the following mentor:
- Pronouns: he/him/his
- Timezone: Europe/Paris
- Location: Paris, France
- Personal email: "Stéphane Gigandet"
Each Outreachy mentor will have a different mentorship style, a preferred way to contact them, and different ways of working with interns. Stéphane Gigandet's mentorship style is: For informal day-to-day communication, questions etc. we can use our Slack channels (public and private), and have a regular call or video conference once a week.
Outreachy mentors are required to be experienced contributors to free and open source software (FOSS). Stéphane Gigandet has contributed to this team for more than 2 years. This mentor has made the following contributions to this team or other FOSS communities: I coded most of the Open Food Facts backend and I am thus the person to blame for all its shortcomings. :)
You'll be able to find this mentor on the FOSS community communication channel under the username: stephane
**How do I get help?**
The community members and the project mentor(s) are your guides to introduce you to the project community and contribution norms. Mentors are here to help answer your questions, encourage you, and help you when you get stuck.
You should try to ask your questions on public project channels before asking mentors or coordinators questions privately. Often you'll get an answer faster if you ask on the public communication channels, rather than waiting for a mentor to answer your email. Applicants often have the same questions, so asking them in a public place helps other people.
Try to make your questions concrete "I'm having trouble installing X and I've tried Y but I get Z error message". If you are having trouble figuring out how to make a contribution, please state where you looked for contribution tasks. For example, "I'm trying to make a contribution to X project. I looked in the Y repository for issues marked newcomer-friendly, but they all seem to be claimed by other Outreachy applicants. Can you point me to an issue that involves Z?"
When you've exhausted all other avenues of communication, you can reach out to the community's coordinator. Each FOSS community has one or more coordinators. The Perl & Raku coordinator is "Makoto Nozaki"
I'd like to add that we are not participating in Google Summer of Code this year based on Google's decision.