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.adoc 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)
Idea list
Ideas are subject to change as additional mentors are onboarded. |
-
ASP.NET Core web application for /r/Fedora subreddit and Discord.
-
Atomic IoT (likely useful in numerous other Atomic ideas) host upgrade daemon
-
Fedora Dockerfile linter leveraging Container Best Practices
-
Advanced test cases for images running in OpenShift using conu
-
Complete support for OpenShift and Kubernetes as a backend in conu
-
Improve GPIO support in Fedora in general and particularly on the Raspberry Pi - This project is no longer available
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.
Repo : https://pagure.io/Fedora-app
Improve Fedora Android App - Backend
-
Difficulty : Intermediate - Expert
-
Technology : Javascript, Android, Experience with REST APIs, Android Studio.
-
Mentors: Kanika Murarka, Sumantro Mukherjee
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)
Repo : https://pagure.io/Fedora-app
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
-
Difficulty : Intermediate - Expert
-
Technology : Python, More Python, Understanding of data processing, Python libraries
-
Mentors : Sachin S. Kamath (skamath), Justin W. Flory (jwf)
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.
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. |
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.
-
Repo: https://pagure.io/pagure
-
Issues: https://pagure.io/pagure/issues
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.
-
Difficulty: Intermediate (some Object Oriented language experience required, not necessarily C#)
-
Technology: C# - .NET Core on Fedora & ipsilon
-
Mentors: Radka Janeková (rhea)
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.
Fedora Packets: Fedora Happiness Packets
-
Difficulty: Intermediate - Expert
-
Technology: Python, HTML/CSS/JS, knowledge of fedmsg optional: Cloud / Ansible, UI UX skills graphic design
-
Mentors:
-
Bee Padalkar (bee2502) (tentative)
-
Project is open for mentors (commitment 6-8 hrs/week)
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
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.
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 & m@rtinbriza.cz
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.
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 & m@rtinbriza.cz
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.
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.