Ideas: Google Summer of Code 2015

Find an idea you like? Want to propose your own? See the Last review: link student_application_process.html[GSoC Getting Started Guide].

Further, last year accepted ideas from the Fedora Project can be found at GSoC 2014 web site

Students Welcome

If you are a student looking forward to participate the GSoC 2016 with Fedora, please feel free to browse the idea list which is still growing. Do not hesitate to contact the mentors/ contributors as indicated in this page for any related clarification. You also should find some like-minded people on the #fedora-summer-coding IRC channel.

If you are new to The Fedora project, the following material would help you to get started. Further please sign-up with the Fedora Account System(FAS) if you are willing to continue with the Fedora project. #fedora-devel, IRC channel can be used to get instant support.

Supporting Mentors

Following contributors are also willing to support the GSoC 2016 program. (please feel free to add your self, attach the user page). Sometimes there should be some backing up mentors to mentor if the original mentor get busy with something for a short time period. In such case we need help.

Draft of an idea

Please add your idea as follows.

Project name

Status:

Summary of idea:

Knowledge prerequisite:

Skill level:

Contacts:

Mentor(s):

Notes:

!!!The draft was changed slightly, please add required field as required!!!

Idea list for GSoC 2016

Implement Tinykdump

Status: Proposed - draft

Summary of idea: Tinykdump is a minimal daemon to capture kernel-based crash dumping (kdump) memory image to usb storage. Compared to the traditional kdump solution, it is,

* more reliable and scalable
* has smaller memory foot-print
`* more friendly to kernel developers `

More information here: https://fedorahosted.org/tinykdump/

Knowledge prerequisite: Python, kernel programming (desired)

Skill level: intermediate (programming)

Contacts: CAI Qian

Mentor(s): CAI Qian

Notes: Rough roadmap:

  • Implement tinykdump daemon to be included in Fedora.

  • Submit kernel patches for reserving kdump memory at run-time for community review and inclusion.

  • Currently, pstore only log kernel messages for panic and Oops. Patches are needed to support logging of kdump kernel and initramfs console output.

Improve Fedora Review

Status: Proposed - draft

Summary of idea: Every package that is included into Fedora needs to go through a review to ensure it matches the Packaging:Guidelines. Fedora Review is a tool to help with the review. It needs constant development to be updated for changes in the guidelines. Also there is currently no process to ensure that existing packages adhere to the packaging guidelines. This project is meant to improve this.

Knowledge prerequisite: Python 2&3 programming skills

Skill level: intermediate (programming)

Contacts: Alec Leamas, Till Maas

Mentor(s): Till Maas

Notes: Possible tasks:

  • Make Fedora Review PEP8 compliant, fix its current test cases

  • Help running Fedora Review regularly for existing packages e.g., updating the Jenkins continuous builds and/or integrate it into Taskotron

  • Add static code checker support to Fedora Review (e.g. with csmock)

  • Build a web service mockup supporting the review process 1 replacing current bugzilla workflow.

Enhance Fedora build setup

Status: Proposed - draft

Summary of idea: Fedora uses the Koji build system with GIT as a source. Plugings/scripts are needed to allow package maintainer to be able to use own branches without accidently deleting the source of published RPMs.

Knowledge prerequisite: Python programming skills, ideally some packaging knowledge

Skill level: intermediate (programming), high (understanding/analysing code, GNU/Linux)

Notes: Rough roadmap:

  • Make select releng scripts PEP8 compliant/python3 ready

  • Make other python tools PEP8 compliant, python3 ready:

  • Become familiar with the Fedora packaging workflow, maybe by packaging some software

  • Learn how to interface koji and write a script to get a mapping of git commit ID to package build (name, version, release)

  • Write a koji plugin to enforce that pkgs can be only built from the right GIT branch for each build target (might need improvements to koji’s plugin interface as well): https://fedorahosted.org/rel-eng/ticket/5843

  • Write a fedmsg service/cronjob to regularly tag sucessful builds in GIT: https://fedorahosted.org/rel-eng/ticket/5856

  • Help with koji2

Improve Sigul Signing Server

Status: Proposed - draft

Summary of idea: The Sigul signing server is used by release engineering to sign Fedora RPMs when pushing fedora updates. There are two major problems that make it hard to release updated packages in a timely manner: It crashes and it cannot be used simultaneously.

Knowledge prerequisite: Python programming skills, ideally some background knowledge about GPG, security and networking

Skill level: intermediate (programming), high (understanding/analysing code, GNU/Linux)

Notes: Rough roadmap:

  • To test whether everything works, a test instance needs to be setup. This is rather complex because it requires interaction with koji. Maybe it is possible to add a test instance to Infrastructure that can use the koji staging system, but the latter is not fully functional right now.

  • Debug why sigul hangs sometimes when using the sign-rpms command (called by --batch-size greater than one with sigulsign_unsigned.py

  • Enable sigul to process multiple tasks at once, e.g. sign for multiple releases or architectures at once.

  • Fix other bugs/issues, examples:

    • Currently logrotate does not make sigul properly re-open its logfiles, which is why sigul does not log to the new logfile after rotation. This needs to be fixed in sigul

    • The GPG defaults in sigul might not be up-to-date, they should be reviewed and improved if necessary

    • Add support for e.g. signing and revoking GPG keys, to build a local web of trust between Fedora release keys

Ressources:

AskFedora UX/UI & Functionality Overhaul

Status: Proposed - draft

Summary of idea:

AskFedora is a community knowledge base and support forum and designed to be the primary place for community support in Fedora. It is powered by Askbot, Django based web application. The UI and the UX for AskFedora needs overhaul to give it some uniformity with the current Fedora websites. There may also be changes to be done in Askbot itself and have possibility of being integrated upstream. We aim to achieve results similar to what Ask Ubuntu has achieved, however Ask Ubuntu is not based on Askbot and similar theming techniques can’t be applied. Discussions are open for this.

'' But why?: ''Over the years of its existence, AskFedora’s popularity has increased and there are 11,000+ questions that have been asked on the website and has 12,500+ contributors as of today (out of which quite a few are active). We think, it really needs to 'look good' and 'provide a better user experience' now.

''Status right now: '' Mockups during the last Design Fedora Activity Day (FAD) 2015 were done. Checkout this and this blogpost for latest updates on mockups. An openshift instance has also been created and source for testing repository is available for setting up your own staging instance.

Knowledge prerequisites: Front-end (HTML/CSS/JS) development, UI/UX design experience, some knowledge of Django/Python

Skill level: Beginner/Intermediate

Contacts: kushal at fedoraproject dot org, suchakra at fedoraproject dot org

co-Mentor(s): Sarup Banskota

TL;DR The infra and some ideas for testing is all ready, we need someone to improve AskFedora’s UI/UX.

Status: Proposed - draft

Summary of idea:

GlitterGallery is GitHub for designers - being developed by and for the Fedora design team, but hoping to be useful to all designers. It’s a web app that allows designers and artists to create, share, and collaborate, backed by Git for version control, and intended to be part of a FLOSS design suite that includes

  • Sparkleshare - a git-backed, Dropbox like system that will automatically check in and push files in project directly to a shared git repo

  • Magic Mockup - a javascript library you can insert into an SVG of mockups to enable interactive, click-through mockups (see a demo here

  • Inkscape is our preferred design tool of choice

Last year, two GSoC students worked on a number of critical improvements to GlitterGallery, but there is still plenty of work to be done.

  • Public gallery of works; currently the app requires a user to login and to follow other users before they can see work other than their own. They can also view direct links to works. A public gallery can be used to browse and explore works without having to be logged in.

  • Better design suite integration, which could mean better support for local editing with SparkleShare; Inkscape integration through an extension; and/or support for creating and sharing interactive SVGs with Magic Mockup

  • Better commenting - the current commenting system is basic, and there’s lots of ways it could be improved, including thread support, pingback support, the ability to reference a specific region of a design in a comment

  • External issue tracking - Glitter Gallery has an integrated issue tracker, but it would be useful to also be able to integrate with external bug/issue trackers such as GitHub and Bugzilla.

  • Enhanced history view - (see https://github.com/glittergallery/GlitterGallery/issues/187)

  • Your own ideas

Knowledge prerequisites: git, Ruby on Rails, front-end (HTML/CSS/JS) development, design experience would be great but optional

Skill level: Intermediate

Contacts: emichan at fedoraproject dot org, sarupbanskota at fedoraproject dot org

Notes: The GlitterGallery repository is hosted on GitHub.

Multimonitor wallpaper submission and download for Nuancier

Status: Proposed

Summary of idea: Purpose for this project is to extend Nuancier, Fedoras supplemental wallpaper submission application with an system that allow to submit and downlad wallpapers for multi-monitor setup.

Knowledge prerequisite: some Python knowledge

Skill level: starter

Contacts: Sirko Kemter gnokii@fedoraproject.org

Cockpit UI for Rolekit

Status: Proposed Summary of idea: The Rolekit Project provides a platform API for deploying Server Roles onto a system. Currently, it supports creating a Domain Controller (based on FreeIPA) or a Database Server (based on PostgreSQL). A major component of the Fedora Server is the Cockpit Project, a web-based management console for servers. The goal of this effort would be to enhance the Cockpit UI so that an administrator could deploy these Roles using rolekit via the Cockpit web interface.

Knowledge prerequisites: JavaScript (ideally jQuery). Preferred familiarity with D-BUS.

Skill Level: Beginner to intermediate

Contacts: Stephen Gallagher

Mentor(s): Stephen Gallagher

Success Conditions: A user of the Cockpit UI must be able to deploy a Domain Controller while providing the minimum set of necessary information to the UI. The UI must optionally allow more advanced settings to be selected. The UI must also provide a link post-deployment that allows the user to browse to the Domain Controller administration UI. Providing the same functionality for the Database Server role would be bonus functionality for this project, provided that the Domain Controller is completed early.

Cockpit support for systemd timers

Status: Proposed Summary of idea: systemd provides timers for calendar time events and monotonic time events (http://www.freedesktop.org/software/systemd/man/systemd.timer.html, https://wiki.archlinux.org/index.php/Systemd/Timers). A major component of the Fedora Server is the Cockpit Project, a web-based management console for servers. The goal of this effort would be to enhance the Cockpit UI so that an administrator could deploy these Roles using rolekit via the Cockpit web interface. Some preliminary designs for timers in Cockpit exist at https://trello.com/c/1B2lZViZ/74-timers-and-cron, although these are just intended as guidelines to get started.

Knowledge prerequisites: JavaScript (ideally jQuery). Preferred familiarity with D-BUS.

Skill Level: Beginner to intermediate

Contacts: Stephen Gallagher

Mentor(s): Dominik Perpeet, Stephen Gallagher

Success Conditions: A user of the Cockpit UI must be able to view existing timers, edit existing ones or create new timers while providing the minimum set of necessary information to the UI. The UI must optionally allow more advanced settings to be selected.

Docker Volume Support in Cockpit

Status: Proposed Summary of idea: Docker (https://www.docker.com/) allows building, running, and sharing of software in containers. A major component of the Fedora Server is the Cockpit Project, a web-based management console for servers. Docker is already supported in Cockpit, including features such as downloading images, running/stopping/deleting containers, exposing additional ports, inspecting console output as well as linking containers. The goal of this effort would be to enhance the Cockpit UI so that an administrator can use Docker 'Data volumes' (http://docs.docker.com/userguide/dockervolumes/) via the Cockpit web interface. Some preliminary designs for Docker Volume Support in Cockpit exist at https://trello.com/c/4juwxCaE/94-docker-volume-support, although these are just intended as guidelines to get started.

Knowledge prerequisites: JavaScript (ideally jQuery). Preferred familiarity with D-BUS.

Skill Level: Beginner to intermediate

Contacts: Stephen Gallagher

Mentor(s): Dominik Perpeet, Stephen Gallagher

Success Conditions: A user of the Cockpit UI must be able to create, view and (to a sensible extent) edit Docker 'Data Volume Containers' while providing the minimum set of necessary information to the UI. It should also be possible to select host directories or host files as Data Volumes. The UI must optionally allow more advanced settings to be selected. Optionally this can be extended by further functionality, such as backup, restoration or migration of data volumes.

Shumgrepper/summershum

Status: Proposed

Summary of idea: Finish and deploy the shumgrepper project

Knowledge prerequisite: python, flask, sqlalchemy and some system administration

Skill level: Intermediate

Contacts: Pierre-Yves Chibon

Notes: shumgrepper was started last year and offers an API to query the data stored by summershum. This data corresponds to the md5, sha1, sh256 and sha512 of every files in every packages in Fedora, allowing to easily find out files duplicated in multiple packages.

Dev instance: http://209.132.184.120/

fresque

Status: Proposed

Summary of idea: Fedora Review Server: take package reviews off bugzilla

Knowledge prerequisite: python, flask, sqlalchemy and some ideas about packaging

Skill level: Intermediate

Contacts: Aurélien Bompard

Mentor(s): Aurélien Bompard

Notes: fresque aims at providing a dedicated application for package (RPM) reviews. This would be integrate with a git backend and integrates the fedora-review tool for automatic testing of new reviews and changes.

Patch Tracker

Status: Proposed

Summary of idea: One of Fedoras goals as a distribution is staying close to upstream projects. However, sometimes it is necessary for Fedora packages to deviate from upstream, for example if upstream is dead or if a fix is backported to an older release. Also other distributions sometimes carry patches that are not submitted upstream but fix bugs also present in Fedora packages. Therefore it is interesting for Fedora packagers or packagers of other distributions to get easy access to information about patches. Fedora already contains a web app, that shows information about patches in Fedora, for example the patches for the ipython package. However, this is not a designated app to make the patch information as useful as possible and does not contain support for other distros. Debian used to provide a patch tracker that is currently offline due to a missing maintainer. For other distributions, there only manual methods to find out about patches. Therefore the idea is to create a web application with the purpose to make it easier for others to find patches in Fedora and to make it easier for Fedora maintainers to find patches in other distributions. FedoraCreate/adjust a webapp to track patches that are used in Fedora and other distributions

Knowledge prerequisite: Python programming, web application development

Skill level: Intermediate

Contacts: Till Maas

Mentor(s): Till Maas

Notes: Potential features:

  • Show a clear overview for patches in Fedora for a certain package

    • Link to bugs that were mentioned, extract key information from the bug

  • Allow to get notifications for new patches, e.g. via fedmsg

  • Allow to get information about patches for the package in other distros

  • Try to figure out if patches are already upstream

  • …​

Rough potential roadmap:

  • Get the debian patch tracker running on a test system, maybe with some example debian packages

  • Port it for one example Fedora package

  • Port it to a modern web framework such as Flask or Pyramid

  • Make sure it is PEP8 compliant

  • Make it generic to work for Fedora and Debian

  • Add feature to patches that are present only in Fedora or Debian

  • Add more distros, e.g. OpenSUSE, Arch, Ubuntu, Gentoo

  • Add more features

Basic requirements:

  • Target platform is RHEL/CentOS7 with EPEL

  • All dependencies should be available on the target platform as RPM packages or possible to be packaged (e.g. requiring newer versions of packages already included in the target platform might not be easily possible)

  • It needs to be possible to package the final project for Fedora/EPEL, i.e. there may not be bundled libraries included

  • The code needs to be PEP8 compliant and contain proper docstrings

  • Proper automtatic tests should be included to allow meaningful continuous integration

Recommended basic knowledge:

  • Know about PEP8, pylint, continuous integration,

  • Understand the different diff formats

Better OVAL development tools in OpenSCAP

Status: Proposed

Summary of idea: The OpenSCAP project implements the Security Content Automation Protocol standards. It provides users with a way to automatically audit their infrastructure. One of the standards is OVAL - Open Vulnerability and Assessment Language - it is the language in which the automated checks are written. Unfortunately the check authors have it tough right now. They have to edit XML files manually, there is no debugger, no static analysis of any sort (like pylint or cppcheck). To make matters worse the OVAL checks are hard to write and the learning curve is steep.

Knowledge prerequisites: Intermediate C, familiarity with the OpenSCAP project

Skill Level: Intermediate

Contacts: Martin Preisler

Mentor(s): Martin Preisler

Success Conditions: SCAP content developers are able to interactively debug their checks, they can browse the execution, looking at inputs and outputs of each step. They are able to analyze their OVAL content for common mistakes using the lint-like tool. Such common mistakes include ID mismatches, wrong usage of regexes, …​

Fix bugs in packages that break compiling as position independent

executable

Status: proposed

Summary of idea: Starting with Fedora 23, Fedora will try to ship all binaries as position independent executable to benefit from the address space layout randomization (ASLR) of the Linux kernel to increase the security of Fedoras packages. However, not all code/packages are ready for this, therefore the current change proposal plans to handle these cases by just disabling this improvement for affected packages. Ideally all packages would be fixed to not require it to be disabled, this is where you can help.

Knowledge prerequisite: low-level programming skills, compiler development, build systems configuration, maybe python programming skills

Skill level: intermediate to high, depending on the actual problem

Notes: Currently not all Fedora packages were rebuilt with the new hardening flags, therefore it is not yet clear how many packages need to be fixed. However, it might be that there are also some languages that need to be adjusted in general to produce position-independent code (for example go), so adding support to (some) of these languages would be in the scope of this project as well, after all build failures were handled. Additionally Fedora tools like Fedora Review and Taskotron should be adapted to properly report packages that are not built with the hardening flags for example by running checkseck on all created executables.

Example problems that block some packages to be built with the right flags:

Helpful documentation:

Enhance PostgreSQL GSSAPI Support

Status: proposed

Summary of idea: The Fedora Server Edition includes a Database Server Role powered by a PostgreSQL database. In order to integrate it better with Fedora Server’s Domain Controller, we want to enhance the GSSAPI authentication and communication in the server.

Knowledge prerequisite: C Programming, Kerberos/GSSAPI

Skill level: intermediate to high (probably grad-student level)

Mentor(s): Simo Sorce

Notes: This will require modifications to the authentication subsystem as well as the TCP/IP layer of PostgreSQL. It will likely be a very involved project.

Tweak specific packages to play well with MIPS architecture

Status: proposed

Summary of idea: We are planning to bootstrap Fedora for MIPS architecture. Even though the majority of packages should build with little to no modifications, there are some challenging packages that will need extra attention.

Knowledge prerequisite: C or Python Programming, packaging basics, some idea about non-x86 architectures

Skill level: intermediate to high

Mentor(s): Michal Toman

Notes: Possible work areas:

  • kernel

  • anaconda

  • openjdk

  • ghc

  • ocaml

  • erlang

  • fpc

  • …​

Open Ideas From GSoC 2016

Despite the list of ideas, you may want to check out the ideas of the previous years and contact the admins to see if they are still interested in mentoring someone this year.