Students Welcome

If you are a student looking forward to participate the GSoC 2013 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. If you are new to The Fedora project, 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 2013 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.

Project name

Idea list for GSoC 2013

Collaboration projects with MATE project

GTK3 support

Status: Proposed - Draft

Summary of idea: GTK+ (GIMP Toolkit) is the cross-platform widget toolkit used in MATE to create graphical user interfaces. GTK3, released in 2011, and in Fedora since F14, brings a lot of improvements. Add GTK3 support to MATE, keeping the traditional desktop metaphor, is one of the goals of the MATE Desktop project.

Wayland support in marco window manager

Status: Proposed - Draft

Summary of idea: Wayland is a next generation display server protocol with the aim to replace the old X server. With Wayland, the window managers will become display servers and compositors at same time, using the Wayland library. Wayland is already available in Fedora, and KDE and GNOME already are moving in this direction, so this could be a great improvement for both MATE and Fedora.

Collaboration projects with Geeklog project

Please note that only one of the following Geeklog projects will be accepted under the Fedora umbrella!

Geeklog: Install Script Refinements

Status: Proposed

Summary of idea: The install script is one of the very first things a new Geeklog user encounters. Therefore, it is important that it is easy to use, supports the user in installing, updating and migrating a Geeklog site while being robust and providing helpful hints and error messages.

The current install script was originally implemented as a GSoC project in 2007 and further improved upon in GSoC 2008. We are still pretty happy with it, but there's always room for improvement. And this is what this GSoC project is about - we are looking for an evolution, not a revolution.

Geeklog: Crowdsourcing Translations

Status: Proposed

Summary of idea: Geeklog has been translated into over 30 languages, but many of those translations haven't been updated in a while. The current way of editing a PHP file is just too awkward, error prone, and not very intuitive (since you can't see the context in which a text string is used).

We're looking for a way to make translating Geeklog easier, especially for people who do not have a knowledge of PHP. Also, for new translations, the sheer amount of text to translate can be discouraging. The idea is to address both of these problems by crowdsourcing.

Geeklog: Provide PHP Session Handling

Status: Proposed

Summary of idea: Geeklog currently uses custom session management to maintain users session information. The custom session implementation is antique and needs to be upgraded to a fully supported session management system such as the one provided by PHP Sessions. The implementation needs to be secure and should cache user data between page loads of a session.

Given Geeklog's focus on security, this implementation must be hardened against the usual attacks.

Applications for desktop end users

These are coding projects that benefit end users of the Linux desktop.

Integrate Proxy Settings and Network Connections(Locations)

Status: Proposed

Summary of idea: The system should use an appropriate networking profile (e.g. Proxy settings) for each network connection.

Gnome 2 had a concept of network locations in its Network Proxy configuration window. However, user should selected the appropriate location whenever he moves between networks. This idea is about providing an integration between NetworkManager and Desktop environments so that a user can create network profiles for each network location(connection) providing appropriate settings like proxy settings which is the main proposed setting here. NetworkManager can have a "Network Location" concept: for wireless networks, usually the name of the network (ESSID) is usually enough. For wired connections, DHCP servers can and usually do provide network's domain name, which can be used as the name of the location. It is nice if a user can associate each network location with a network settings profile which will be used whenever the user is connected to that network automatically. So, when you connect to a network, a corresponding network settings profile is activated automatically.

Assemble a toolchain for recording screencasts easily

Status: Proposed - Draft - Need a mentor

Summary of idea: Creating screencasts on Fedora and post-processing them for upload should be easy and fool proof.

The Fedora Videos project has been launched to bring together a collection of screencasts that help people learn how to use Fedora. There's only one major hurdle, though. Capturing really good screencasts on Fedora, post-processing them to include an intro and outro and other effects, and finally exporting them to an open format is challenging. There are lots of different tools, but each one only gets you part of the way there and you have to be the glue to make it all work. And then there are the bugs.

The goal of this project is to assemble a toolchain (a recommended collection of software available in the Fedora repositories) and write a comprehensive tutorial for how to create an professional-looking screencast. That may included chasing down & fixing bugs in the existing tools, discovering new tools and getting them packaged and learning about techniques in the environment around the computer, such as how to select & setup a microphone or how to draft a good speaking script. One possible task in the project is to add sound recording support to the Gnome 3 desktop recorder. Currently, the desktop recorder only grabs the video of the screen.

The student will get support and advice from the Fedora Videos team since they are trying to learn how to create these screencasts.

Improve Fedora's Tablet User Experience

The window managers/desktop environments officially supported by Fedora do not match the expectations of people with low power touch devices.

Fedora features new technology to reduce system load and - requirements, the user interface has not seen too much love.

Currently available interfaces for users are:

Too Ressource Consuming

Too Overloaded or

Too Feature Poor

Not Customizable With Reasonable Effort

The E17 Desktop Shell, developed as part of the Enlightenment Project, is a perfect match.
It provides a rich interface, whilst consuming very little ressources. The Enlightenment Foundation Libraries, on which E17 is built upon, were chosen as Foundation Block of Tizen, the MeeGo successor backed by Samsung and Intel.
If things work out, E17 will be the first "real" Desktop Shell for Wayland.

Though it already provides special behaviour for touchscreen devices through certain modules, there's still room for improvement.

The overall goal of this project would be to improve the user experience of people who want to use Fedora on low power devices such as tablets.

The student will get support and advice from the Enlightenment Project developers.

Notes: If this idea gets realized, a proper tablet spin can be created, that honors the spirit of Fedora.

Applications for programmers

Implement a binding translator for GlusterFS

Status: Proposed - Draft

Summary of idea: In transporting data across networks, programmers need GlusterFS language bindings to be able to create apps in their language of choice. A language binding translator would greatly increase the number of programmers who would be able to more easily extend GlusterFS. It's also a fun project for someone wanting to get some experience with multi-threaded architecture and design in the context of distributed systems and data.

Implement a Cassandra/NoSQL Connector or Translator for GlusterFS

Status: Proposed - Draft

Summary of idea: In general, there is a need for the ability to store and access NoSQL data on general purpose distributed filesystems. Currently, there are a host of single-purpose methods for storing and retrieving NoSQL data, which are difficult to access from legacy applications. Creating a NoSQL translator for GlusterFS would help mitigate this problem and give developers more options for storing and accessing "big data" in a way that is accessible via a variety of standard toolkits and protocols.

Embedded Cli tool for most popular DBMS

Status: Proposed - Students' Idea - Need a mentor

Summary of idea: Today, many developers are working with different DBMS.
I propose to develop a common command line interface for most popular databases.
For example: MySQL, Oracle Database, PostgreSQL.

Linux kernel project

Implement nfs/fscache writeback cache (Dropped)

Status: Dropped -- This is a GSoC _2012_ idea and is being working on by Hongyi Jia although he didn't get the GSoC slot (http://www.jiayi.net/works/nfsfscache-writeback-cache/). So, I'm not going to mentor the idea this year and if anyone is really interested in it, feel free to contact me and I'll be happy to answer questions:-)

Summary of idea: Currently, the flashcache/bcache only works for local filesystems. For network filesystems, nfs only supports write through cache based on fscache/cachefiles. With wider adoption of SSD on nfs client side, it would be great for nfs to support writeback cache to speed up write intensive clients. This project would implement a writeback mechanism for nfs, which need to make necessary changes to kernel nfs, fscache and cachefiles modules, and take care of nfs close-to-open semantics.

Knowledge prerequisite: C, Linux kernel, nfs

Skill level: High

Contacts: bergwolf [AT] gmail [DOT] com

Mentor(s): Peng Tao - Mentor

Infrastructure for Fedora contributors and users

Design Hub: FLOSS Collaboration for FLOSS Designers

Status: Proposed - Draft

Summary of idea: Free software designers don't have a great set of tools to work with to collaborate with each other and with the community on their design work. With this project, we'd like to make progress towards fixing that. We have some disparate ideas / tools that we'd like to be integrated:

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 coffeescript/javascript you can insert into an SVG of mockups to enable interactive, click-through mockups (see a demo here

Design Hub - an idea and a ruby on rails prototype of a web front end that could potentially serve as a front end to git repos with design assets *and* serve as well as a front end to magic mockup mockups in said repos

Inkscape is our preferred design tool of choice; it would be great if it had some GUI integration with Magic Mockup, Sparkleshare, and Design Hub

Notes: We can provide a development platform for the web UI at openshift.redhat.com. Also, note this project doesn't just benefit Fedora designers, but it benefits all FLOSS designers.

Implement a unit test framework for fedpkg and rpkg

Status: Proposed

Summary of idea: Unit tests are good. Testing is good. fedpkg and it's backend rpkg is a growing code base, gaining more and more contributors. It lacks a unit test framework which would be very beneficial to the code base for making sure contributions don't break the code in subtle ways.

Knowledge prerequisite:

Skill level:

Contacts:

Mentor(s):

Notes: This project is in python.

Package GitLab in Fedora/EPEL

Git has fundamentally improved the way that developers share code. The barrier to sharing code has virtually been eliminated. We are also seeing the emergence of a new dynamic called "Social Coding". There's no better example of this than Github.

Creating an environment to foster social coding, and a low barrier to sharing code, requires more than just git, though. A lot of what makes Github successful with git is the web-based front end.

Fortunately, there is an open source application named Gitlab that provides much of the interactive functionality and usability that is found at Github. The goal of this project is to bring that experience to fedorahosted.org by setting up Gitlab.

This project will require working with ruby packaging sig to get the necessary gems packaged and available in Fedora (and if possible EPEL as well).

Notes: This idea is definitely something the Fedora project is interested in pursuing. The work in this project will be carried on after the project, and is an opportunity for a longer-term involvement in Fedora.

Financial IS for Fedora project

Status: Proposed

Summary of idea: There is a need of an information system where it can be used with in the project to track and analyse the finacial activities. It may be a customiztion of a open source solution or a solution from scratch.

Event management system for Fedora

Status: Proposed

Summary of idea: Fedora contributors organize lot of events. We need a system to manage them. This sounds like a project management utility. You can either build from scratch or customize an available free software. This can be used to small event and as well as large event like FUDcons. The main advantage to use such system is to organize tasks and manage the cost. If you are interested contact me with a proposal.

Darkserver improvement

Status: Proposed

Summary of idea: Darkserver now only supports primary koji instance of Fedora. We need support

other secondary architectures and distributions. Different workers should use different
job queues and they all should work independently.
The current admin commands also need proper upgrade to handle different resources to import
from.
The code also needs to be rebased so that it becomes more test friendly.

Linux system services

Implement a battery of unit tests for SSSD

Status: Proposed

Summary of idea: The purpose of this project is to develop a suite of unit tests for the SSSD. The unit tests would leverage mock objects to be able to exercise code that is otherwise only ever reachable when the SSSD is connected to the network. Contributing the set of unit tests to the SSSD would greatly improve its stability long-term and would help raise confidence when pushing new SSSD versions into Fedora or other distributions.

Improving Fedora packaging

AUR Clone for Fedora

Status: Proposed - Students' Idea - Need a mentor

Summary of idea: The idea is to make an AUR clone for Fedora where users can submit buildfiles, which need to be hosted. These set of files can compile packages on the user side, and installed locally.

The benefit of this method is:

No need to host the entire packages (saving space on servers hosting the RPMs)

Make changes to the buildfile, and not compile the package

Can pull sources from any version control system/stored tarballs to make a very upto-date package. (See blog entry for an example)

Notes: Need mentor. Need advice on feasibility of the software and issues that can arise.
Also, read the extensive blog post on my blog.

Analogy:
This is a lot like "having your own library" vs "getting a book from a bookstore".
If you refer a book often, you'd keep it in your library. This would occupy space and consume resources.
Otherwise, you'd just pull out a separate paper with instructions about the bookstore to find the book, and fetch the book from the store.
Though the first method is hassle-free, it is not possible to have all the books in the world with you.

Maven FOSS Repository Extension

Status: Proposed

Summary of idea: With the inception of Maven we have a means to standardize the building of Java projects. However it has also resulted in the usage of a very wide dependency set by these Java projects. This makes it very hard to integrate those projects on a single platform (be it Fedora or JBoss Application Server (or the combination)).

In essence during packaging all these dependencies must be lined up to form a single consistent component set. Thus each project will only have those components available which are actually available on the target platform. This is very hard to enforce using standard Maven setup.

For Fedora I'm envisioning a Maven extension that makes sure only sanctioned components are used during the build (without putting a burden on the packager). This will allow developers who are not on Fedora to also build with this extension and thus verify (and fix) issues which are the result of "Fedora packaging".

Fedora Spins and remixes

Educational Application for Fedora Robotics Suite

The Fedora Robotics SIG is creating a Robotics Suite consisting of many packages useful in robotics. We want to develop a demonstration application introducing new users step by step to core packages like Fawkes and Player/Stage. It would feature multiple game-like levels with increasing complexity. The general task would be to instruct the robot to fulfill a specific task in a simulation environment.

Knowledge prerequisite: Developing this requires a strong background in C++, a background in robotics is preferred but not necessary. You should be able to familiarize yourself with new software quickly. User visible parts will require GUI programming using Gtkmm.

Applications for systems administrators

Improving the RHQ-PyAgent to interface with OpenLMI

Status: Proposed

Summary of idea: Improve the current RHQ-PyAgent written in Python that interfaces RHQ with OpenLMI to pick up metrics that are provided by OpenLMI from Fedora or RHEL systems. The agent is talking to the RHQ server via the REST api and push metrics to RHQ etc. This agent does/will not implement the full functionality of the RHQ java agent.
The previous work is already pretty good, but it is cumbersome to add new OpenLMI-enabled servers and the types of the data model.
The work of this year should concentrate on automating that process - perhaps after providing a range of IP addresses to query for servers. Similar for resource types, the agent would talk to the server to see what types are available and then check with the OpenLMI provider if this supports the same.

While RHQ is written in Java, this project does not require any Java knowledge.

Applications for Testers

Fedora Gooey Karma

Status: Proposed

Summary of idea:Fedora Easy Karma is a CLI application to help testers apply karma to installed updates and while it's great at doing so, it doesn't display much other information on what an update is supposed to fix or what can be done to test a particular update. A GUI tool that pulls in more information on packages under test would help in the testing process and hopefully help encourage less techical users to start testing packages.

Blocker Tracking Application

Status: Proposed

Summary of idea: The blockerbugs web application is used by QA to track bugs which are currently blocking release, proposed as blocking release or could be pulled into the release past a code freeze. While the app itself already exists, there are many features which we would like to see implemented including (but not limited to):

Creating a RESTful API

Tracking contents of TC/RC spins

migrating css to zurb foundation 4

search functionality

improve the update sync process

implement CI tools (make-ish file that runs pylint, tests etc.)

integrate email (on error, on proposal, other thoughts ...)

integrate fedbus (blocker X proposed, accepted, rejected)

fix the admin interface so that it actually works

Knowledge prerequisite: Some python experience is required, the app is written with Flask so some experiehce with that would be helpful

Image Building Project

The image building project started last year as a gsoc project and while the progress was good, it isn't quite to the point where we need it to be for everyday usage. The emphasis would be on getting local image building to work before more work on distributing image building tasks got started.

Possible project components:

side repository management

better integration with bodhi and working based on updates instead of just package envrs

tree replication

integration with blockerbugs app

deltaiso creation

zsync for downloads

integration with koji's new livecd scratch builds

Knowledge prerequisite: Some python experience is required, familiarity with Fedora's ISO build tools would be preferred