Google Summer of Code 2018 Mentors and Ideas

Fedora has been accepted as a mentoring organization! Please make sure you carefully read through the general information and application process pages before applying.

If you are a student looking forward to participating in Google Summer of Code with Fedora, please feel free to browse this idea list. There may be additional ideas added during the application period.

Now please go read the What Can I do Today section of the main page. This has the answers to your questions and tells you how to apply

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.

Supporting Mentors

The following contributors are available to provide general help and support for the GSoC program If a specific project mentor is busy, you can contact one of the people below for short-term help on your project or task. add yourselves and your wiki page).

  • Brian (bex) Exelbierd (Fedora Community Action and Impact Coordinator, FCAIC, 🎂, containers, general development, general Linux)

  • Justin W. Flory (General development, general Linux, Fedora community, GSoC alumnus, questions about program, misc. advice)

  • Sachin S. Kamath (Python Dev, General Linux, Fedora community, Metrics, GSoC alumnus, Help with program)

  • Martin Bříza

Idea list

Ideas are subject to change as additional mentors are onboarded.

Improve Fedora Android App - UI/UX Research and Design

  • Difficulty : Intermediate

  • Technology : XML, UX, Inkscape, Android, Layouts, HTML, CSS, Cordova, Angular, Javascript, Ionic.

  • Mentor : Kanika Murarka, Sumantro Mukherjee

Description

Fedora has an android app which lets a user to browse magazine, Fedora Ask, browse the calendar etc within it. However. it is still very primitive and requires a lot of UI/UX love. As a GSoC intern, you will be responsible for the following :

  • Engage in community discussion and do community research

  • Build initial mockups and gather community feedback.

  • Finalize design and start making them functional

  • Write Javascipt(Angular), integrate with Android application

  • Follow UX/UI standards to build the best possible experience for Android.

Deliverables

  • A prototype of the UI/UX for communuity review.

  • Integrate the prototype with the existing application

  • Responsive, cross screen compatible UI design (Scaling)

  • Work with the backend GSoC intern to bring together a better app!


Improve Fedora Android App - Backend

Description

Fedora has an android app which lets a user to browse Fedora Magazine, Fedora Ask, Fedocal etc within it. However, most of the functions rely on an in-app browser to render content and requires speed optimization and native integration. As a Summer of Code intern, you will be responsible for the following :

  • Research on the best possible way to improve performance and report to mentor

  • Write Javascript code to parse various Fedora APIs

  • Integrate in Android app.

  • Work with the UX intern and collaborate over the design and layouts.

  • Publish app (Play Store, F-droid, etc and maintain releases)

Deliverables

  • Replace web views and build a more native Android experience like immersive mode, etc.

  • Fully functional Android app

  • Releases in Play Store and F-droid.

  • Notifications for new posts, calendar events, etc on an opt-in basis.


Metrics : fedmsg plugin for perceval

Description

During the course of the project, you will be closely working with the Fedora Community Operations (CommOps) Team to build a metrics dashboard for the community. For building the dashboard, we will be using Grimoirelab suite of tools to build the backend as well as the frontend.

Perceval is a tool that collects data from a given data source and has a lot of pre-defined plugins. The aim of this project is to add fedmsg support to it so that metrics can be pulled out of it, suitable for the Fedora community.

Final Deliverables

Primary Objectives:

  • A working fedmsg consumer

  • A plugin for perceval to pull metrics from fedmsg directly

  • Documentation for the plugin

Secondary Objectives: - Additional plugins to support Wordpress, Twitter and other data sources


Pagure: A git based source repository

  • Difficulty: Intermediate

  • Technology: Python, git, pygit2

  • Mentors: pingou

Applicants interested in Pagure must contribute by solving easy fix issues before the end of the application period.

Pagure is a git-centered forge, python based using pygit2.

With pagure you can host your project with its documentation, let your users report issues or request enhancements using the ticketing system and build yourcommunity of contributors by allowing them to fork your projects and contributeto it via the now-popular pull-request mechanism.

Projects in Pagure will be selected by the student in concert with the mentor. They will be drawn from the non-easyfix issues in the issue queue. Students are expected to guide the mentor in helping them select areas of interest.


ASP.NET Core web application for /r/Fedora subreddit and Discord.

Description

ASP.NET Core web application for our /r/Fedora subreddit to let the user choose a flair, based on their FAS (Fedora Account System) Group memberships, and to be able to verify Discord account with FAS as contributor with CLA+1. These will be written in C# and deployed on a Fedora production server as systemd service.

You will learn: - What is it .NET Core and how to use it in Linux - How to write C# code in Linux and what IDEs are available to you. - Basic systemd unitfile structure and working with services.

Deliverables

  • Create an ASP.NET Core application with Reddit and Discord integrations.

  • Deploy it on our Fedora production server as a systemd service

  • Configure secure Apache proxy


Fedora Packets: Fedora Happiness Packets

Summary

Add Fedora user account authentication and fedmsg integration to Happiness Packets to deploy in Fedora’s infrastructure

Background

Happiness Packets is a web application to send positive feedback and thank-you notes to open source contributors. You can send a note with your name or anonymously. The Fedora community plans to have a Fedora Appreciation Week in 2018, where contributors thank each other and celebrate our accomplishments together. Fedora wants to extend Happiness Packets by giving a Fedora Badge to anyone who sends a Happiness Packet to another contributor. To do this, we need to fork Happiness Packets and add support for Fedora’s authentication system and add a fedmsg hook. This lets Fedora contributors log in and receive a badge when they send a Happiness Packet.

Details

The project is split into primary deliverables (required) and secondary deliverables (optional).

Primary deliverables
  • Add back-end support for Ipsilon authentication

    • Push the application upstream

  • Integrate fedmsg publishing

  • Create Fedora Badge rule file to automatically award badge

Secondary deliverables
  • Add support for video messages

  • Add support for emojis

  • Explore major social media APIs (for example, Twitter, Facebook, Reddit) to allow sharing on social networks

    • Twitter

    • Facebook


Atomic IoT (likely useful in numerous other Atomic ideas) host upgrade daemon

  • Skill level: medium

  • Skills required: python3 ans/or C

  • Mentor(s): Peter Robinson

IoT devices need to be almost impossible to brick. When you upgrade a device if it doesn’t work it needs to be able to automatically role back, or at the very least be able to contact the update service for a newer fixed version.

A daemon to manage this state is required. The daemon would need to be able to do the following:

  • Monitor the status of available downloads

  • Apply the Atomic update delta

  • Set a "boot once" flag to boot the new version via grub

  • Set a hardware watchdog

  • initiate a reboot of the system

  • If boot to normal userspace fails the watchdog triggers and it resets to the old version

  • If boot succeeds to the point the daemon starts up it then proceeds to phase two of the upgrade process

  • Unsets watchdog so the OS won’t reset

  • Checks it can see all required network interfaces

  • Checks it can resolve addresses and contact the update server

  • Check it’s connected to all other critical services (eg MQTT or a HTTPS API

  • Checks it can see and all sensors and services are running correctly

There needs to be a means of specifying what components are critical to the successful operation of the device. Some components will be the same across all types of device such as the ability to check network interfaces are operating, to check an update service is available, to check services are available etc but some might be plugins eg to check GPIO is working, specific IIO sensors, cameras or other such things are seen as expected.

  • What are we looking for: An initial daemon with basic functionality with good design that can be extended. Integration with atomic updates etc.


Fedora Dockerfile linter leveraging Container Best Practices

  • Skill level: Intermediate

  • Skills required: Python, containers

  • Mentor(s): Tomas Tomecek, Eliska Slobodova

  • Contacts (IRC & email): ttomecek (ttomecek @redhat.com), eslobodo (eslobodo @redhat.com)

Description

Fedora infrastructure for container image delivery is lacking any kind of automated testing of the images or underlying Dockerfiles. The Container Best Practices document is a digest of recommended practices for writing and deploying images.

Deliverables

With Container Best Practices serving as a “cheatsheet”, you will create a tool to perform basic and advanced checks on Dockerfiles and images that can be applicable generally regardless of an image. In cooperation with the Fedora infrastructure team, you will deploy the tool in the container infrastructure so that the tests can be executed automatically upon a new build/commit or locally before the developer pushes the changes remotely.


Advanced test cases for images running in OpenShift using conu

  • Skill level: Intermediate

  • Skills required: Python, containers, OpenShift

  • Mentor(s): Tomas Tomecek, Dominika Hodovska

  • Contacts (IRC & email): ttomecek (ttomecek @redhat.com), dhodovsk (dhodovsk @redhat.com)

Description

Conu is a library which provides Python API to interact with a selected container runtime. It simplifies writing of tests for container images. However, the project currently lacks support for OpenShift and Kubernetes.

Deliverables

  • Your primary goal will be to deliver at least 10 new functions that will enable the users to write tests for OpenShift scenarios.

  • Your secondary goal will be to write test for at least 5 images (eg mariadb, mysql, postgresql, golang, rust) using conu’s full capabilities.


Complete support for OpenShift and Kubernetes as a backend in conu

  • Skill level: Intermediate - Expert

  • Skills required: python, containers

  • Mentor(s): Tomas Tomecek

  • Contacts (IRC & email): ttomecek (ttomecek @redhat.com)

Description

conu defines a generic API to interact with containers and container engines. To make the project more usable, we would like to add implementation of well known container orchestration systems — Kubernetes and OpenShift.

Deliverables

  • Write a series of pull requests to add support for Kubernetes and OpenShift in conu project.

  • The newly added functionality needs to have integration tests which can run inside CI environment and are passing.

  • And finally, the feature should be demonstrated it works well by at least 3 real examples.


Continuous Integration for Fedora Media Writer + Tests

  • Skill level: Intermediate

  • Skills required: CI, C++, Qt

  • Mentor(s): Martin Bříza

  • Contacts (IRC & email): mbriza@freenode & [email protected]

Description

Fedora Media Writer is a tool with two build platforms and three deployment platforms. It’s quite challenging to check all the new added code for being able to build properly and as of now, there are no tests.

Your task in this project would be to get a CI platform of your choice to work well with FMW on GitHub. The required environments are Fedora and macOS. Windows builds are done using the MinGW packages in Fedora and FMW can run using Wine - this should be sufficient for testing, however testing the MinGW builds under native Windows is a definite plus.

Qt provides the QTest framework for testing the application - it’s the preferred platform to write tests in this case, however using a bash or Python library is likely okay, too. However, once again, as QTest is easily attachable to the internal structures of FMW, it’s strongly suggested.

Bonus points are if you get automatic binary builds published in the Releases section for tags.

Deliverables

Working CI integration for macOS and Fedora-latest or Rawhide. A set of tests covering at least 5 closed bugs.


ARM uBoot Support in Fedora Media Writer

  • Skill level: Intermediate - Expert

  • Skills required: C++, Qt, ext4, bash/Python (?)

  • Mentor(s): Martin Bříza

  • Contacts (IRC & email): mbriza@freenode & [email protected]

Description

Fedora Media Writer now supports writing ARM images to portable media. These cards can then boot on devices that support Fedora out of the box, like the Raspberry Pi. However, to support most other boards, one has to do some modifications to the image on the flash drive. The first of them is writing uBoot (open source bootloader) to the start of the drive. Then it’s sometimes necessary to tweak some environment variables or modify a configuration file.

These are the tasks that are possible to be automated. However, it’s necessary to find a way how to do that in a clean fashion. As an example of an approach to this problem, you can take a look at the arm-image-installer. One option would be to cooperate with the ARM SIG to create a solution that uses their know-how or code directly. I have some ideas so please go ahead and talk to me.

Remember, this is pretty trivial to do on Linux, however we need this functionality to work on Windows and macOS. This induces issues - especially with filesystem handling. For your project proposal, I expect you include a rough description of how you’re planning to tackle this problem.

Deliverables

A Fedora Media Writer build that’s able to deliver a Fedora SD card that can boot on a currently unsupported ARM platform (for example, Cubieboard) on Linux, Windows and macOS.


Open Ideas From Previous Years

In addition to the above list of ideas, you may want to check out ideas from previous years and contact the mentors for those projects to see if they’re still interested in mentoring someone this year.

Note: Do not submit a proposal for an idea from a previous year without contacting the mentor to ensure they will be available to mentor you. Without a mentor, proposals will be rejected.