Fedora is participating in the Outreachy round running from May to August 2020 and we have already selected our interns for this season.

If you are a student looking to participate in outreacy/2020/index.adoc, please feel free to browse this idea list. There may be additional ideas added during the application period.

Do not hesitate to contact the mentors or contributors listed on this page for any questions or clarification. You can find helpful people on the IRC channel, or use the mailing list. can be used for getting help with programming problems.

Idea list

Ideas are subject to change as additional mentors are onboarded.

Create a GraphQL API for Bodhi

The current implementation of Bodhi REST API is far from being ideal. The REST endpoints are not following CRUD (Create, Read, Update, Delete) and there are doing a lot of magic making it difficult to use by someone not familiar with the Bodhi code base. The Goal of this project is to give Bodhi a /graphql endpoint which would allow users to use grapqhl to query bodhi resources.

Sample plan of work for the 12 week internship.

Week 1-4: * Update the development environment with the python graphene library * Add a new graphql service which routes to /graphql and returns a simple string "Hello World" * Write tests for that service. * Integrate graphene to the graphql service. The /graphql endpoints should now accept a graphql query and return the same simple string "Hello World". * Update the tests * Update environment and dependencies to introduce graphene-sqlalchemy. * Use the graphene sqlalchemy library to generate the graphql schema for the Release class. * Add a graphql query handler for the Releases.

Week 5-12: * Work and Desing the graphql schema. Analyse the dependencies between the different object and how this will be reflected in the graphql tree. * I don’t expect much coding during this week, this should be used as a foundation for the following work. * Implement the graphql schema. Focusing first on the queries since this does not require any authentication. * Users should be able to query for releases, updates, builds, overrides, packages, users, comments. * If times allow then we can look at the implementation of the mutation (creating, updating resources). The first step to this is to have authentication and authorization in place.

Fedora Badges Back-end Engineering

Fedora Badges is a fun website built to recognize contributors to Fedora, help new and existing Fedora contributors find different ways to get involved, and encourage the improvement of Fedora’s infrastructure.

Sample plan of work for the 12 week internship.

Week 1-3: * Research badgr-server / create development environment * Add a test badge * FAS integration (see Sign-In Configuration) * Locally in dev environment * https://iddev.fedorainfracloud.org

Week 4-7: * Containerizing badgr-server for Communishift (see PR #110, PR #212) * python/django * mysql * memcached * amqp broker (e.g. RabbitMQ) * [research] Figuring out the best way to align local development practices with production deployment (docker-compose? minishift?) * Migrate old badges data to new database (postgresql → mysql)

Week 7-9: * Migrate old badges data to new database (postgresql → mysql) * Fedora-messaging middleware * Python? * Writing unit tests with Pytest * Containerization / running in communityshift * Deployment documentation, SOP (!!!) * How to add a new badge * How to upgrade the version

Week 10-12: * Fedora-messaging middleware

Fedora Design Internship

The Fedora Design Team is Fedora’s in-house design agency. We provide artwork, user experience, usability, and general design services to the Fedora project.

Sample plan of work for the 12 week internship.

Week 1-4: * Draft Fedora Budget Quarterly and Yearly Reports designs * Incorporate feedback into budget designs and complete. Begin to solicit and gather information from teams on accomplishments made in 2019. * Organize info coming in from teams. Begin drafting infographics to highlight these accomplishments. Begin to solicit artwork, designs, photography, content, for Fedora Zine. * Start working on a handout for events specified by Contributor Recruitment Initiative. Refine infographics for team accomplishments, continue to solicit info/gather/organize.

Week 5-8: * Incorporate feedback into handout for CRI. Complete infographics for team accomplishments. * Begin drafting Fedora Zine, using a lot of the same team accomplishments that have been gathered already and assets that have been solicited. * Incorporate feedback into Fedora Zine. Start working on assets for Flock 2020: game night stickers/handouts, tshirt, badges, and whatever else is left to do. * Incorporate feedback into Fedora Zine. Incorporate feedback into Flock assets. Start picking up Fedora Badges tickets to get familiar with the aesthetic.

Week 9-12: * Identify all the Fedora Badges that need to be reviewed/improved. Finalize Flock assets. * Final push to finalize Fedora Zine. Familiarize yourself with Fedora Badges Style guide. Work on badges that have been identified as needing improvement. * Identify and document things that need to be updated in the style guide, begin to incorporate them into an updated draft. Work on badge designs that need improvement/new ideas. * Incorporate improvements and finalize new version of Badges style Guide. Finalize any leftover designs/projects/follow ups that need to be done.