The main page is at SummerOfCode2014 and OutreachProgramForWomen. (Depending on your program)

Projects with confirmed mentors

AppStream/DEP-11 for the Debian Archive Description of the project: The ultimate goal of this project is to implement AppStream for Debian, allowing applications like GNOME-Software to be run on Debian. Also, this task will make it possible to query installation of things where you don't know the exact package name, so you can make calls like "install missing codec for X" or "install firmware for hardware Y". It will also be one more step on the way to improved cross-distribution collaboration and will make some other cool technology possible in future. Confirmed Mentor : Matthias Klumpp

How to contact the mentor: mak@debian.org, IRC: ximion

Confirmed co-mentors: jak@debian.org, IRC: juliank

Deliverables of the project : Implementation of DEP-11 in Debian and ideally a working GNOME-Software on Debian

Desirable skills : Python knowledge, SQL knowledge, a little bit of Vala and C knowledge

What the student will learn: You will learn how to work with dak, the software which manages the whole Debian archive, and how to extend it with a DEP-11 generator so Debian will be able to do application/component-centric software management.

Archive built with asan Description of the project: In the context of Clang project, ASAN, Address Sanitizer is a fast memory error detector. It consists of a compiler instrumentation module and a run-time library. It will compile any code which built with gcc or clang and insert a static library in the binary. This library will automatically check some common memory errors. Example: More information This project will take advantages of the debile infrastructure. The first step of this project would be to propose a way to build every Debian packages using ASAN. The method must scale to the whole Debian archive (ie most of the packages should build out of the box using ASAN). debile is a platform which aims to provide a generic rebuild platform. Normal build, custom builds (clang based) or static analyzers (coccinelle, scan-build, etc) are managed through this infrastructure. Confirmed Mentor : Sylvestre Ledru

How to contact the mentor: sylvestre@debian.org

Confirmed co-mentors: Vasudev Kamath <kamathvasudev@gmail.com>

Deliverables of the project : A repository of Debian packages built with ASAN

Desirable skills : Packaging (especially of libraries), building packages

Requirements : A proof of concept of Debian packages being built with ASAN enabled

What the student will learn: Strong improvement of the quality and error detection

Bootstrappable Debian Description of the project: The goal is to make Debian buildable using itself, primarily to make the task of bringing up new architectures easier, and Debian self-supporting. Work towards this goal has been going on for several years, a large part of it undertaken by GSOC students, and we now have all the necessary components: build profiles, multiarch, cross-toolchains, botch, autobootstrap and bootstrap.debian.net. The remaining piece of work is actually modifying the packages that botch/bootstrap.debian.net and manual inspection identify as being the optimum places to break loops, and coding up the necessary variant builds and altered build-dependencies, so that a linear build order exists. The fundamental issue is that there are many cyclic build-dependencies in Debian so there is no way to just build everything in order. The rules changes and metadata you add turns the cyclic build graph into a build tree (acyclic graph) so that there actually is an order. Confirmed Mentor : Wookey

How to contact the mentor: mailto:wookey@debian.org (IRC: wookey on #debian-bootstrap on OFTC)

Confirmed co-mentors: Johanes Schauer (josch on #debian-bootstrap)

Deliverables of the project : Patches filed in the Debian BTS for the 60-odd packages that need fixing. Status webpage showing current bootstrapability of Debian.

Desirable skills : A good understanding of Debian packaging tools will help enormously as you will have to deal with a wide range of tools, helpers and build systems. Some idea of how autotools works is also very handy, as is some experience of crossbuilding. This is in ideal task for the 'Jack of all trades, master of none' type person.

What the student will learn: You will gain a detailed understanding of Debian packaging and packaging helpers, build engineering, dependencies, multiarch, and profiles. If you succeed you will enable Debian to achieve its long-term aspiration to be the 'Universal OS' by being properly self-hosting.

Debian built with clang Description of the project: During the last couple years, important efforts have been produced to build Debian with Clang instead of gcc. Clang is now features completed and compiles most of the archive. However, clang being stricter than gcc, it rejects a lot of packages. The goal of this project is to patch all packages failing to build with clang. Forwarding to upstream the patches will be part of the project (even if it is usually the responsibility of the Debian maintainer). To have an idea of the common errors, see http://clang.debian.net Many bugs have been already reported under the clang-ftbfs flag. Confirmed Mentor : Sylvestre Ledru

How to contact the mentor: sylvestre@debian.org

Deliverables of the project : A repository of all Debian packages built with clang.

Desirable skills : Patching upstream code, good understanding of C and C++, etc

Requirements : Several patches for various packages failing to build with Clang. Patches on clang itself are welcome.

What the student will learn: Impact on the whole distribution, common C/C++ mistakes, compiler issues, etc

Debian Continuous Integration Description of the project: Debian is an unconventionally large software project, with thousands of different packages that need to be integrated to work together to support dozens or even hundreds of use cases. Every time a change is made to one package, that might impact any of the other related packages, and a project of such magnitude needs automation to help identifying potential problems as soon as possible. The Debian Continuous Integration is an initiative to automate testing of these different components when any of them changes. Initially that is being accomplished by running their test suites following the DEP-8 standard, but other different types of checks might be added in the future. The Debian Continuous Integration is powered by a package called debci that will soon be part of the official Debian repository. Confirmed Mentor : Antonio Terceiro

How to contact the mentor: (terceiro@debian.org, terceiro on the OFTC IRC network)

Confirmed co-mentors: Kartik Mistry (kartik@debian.org, kart_ on the OFTC IRC network)

Deliverables of the project : improvement in the efficiency of debci with regard to the time it takes to run tests for a package, reflected in a reduction of the time it takes for debci to finish a full test run. support for different backends for debci, e.g. local backends such as kvm/lxc and remote backends such as jenkins, debile, LAVA etc. improvements to the debci web interface, as in provide more useful information for package maintainers, for the release/QA teams etc. documentation for people setting up their own debci instance, which will also help volunteers who might want to help with the maintaince of Debian's instance of debci at http://ci.debian.net/

Desirable skills : Basic understanding of software testing techiniques, programming in shell script and some higher level dynamic language (Ruby|Perl|Python), version control with git

What the student will learn: software testing in a large scale software project, quality assurance, Debian packaging, system administration, web development. This project has the potential to reduce considerably the time it takes to release a new version of Debian.

Debian metrics portal Description of the project: To improve, one needs to measure, apply changes, and see how the changes affect the observed quality. In Debian, we have a lot of project-wide metrics, statistics, and graphs. Unfortunately they are scattered and maintained in a non-coordinated manner, resulting in recurrent shortages, and the lack of a uniform interface to view, add, and query Debian metrics. This project aims at building a Debian Metrics Portal with a uniform (Web) interface to peruse Debian metrics, as well as a uniform (declarative) interface to add and maintain metrics.

Confirmed Mentor : StefanoZacchiroli

Confirmed co-mentors: Stuart Prescott

How to contact the mentor: via email at zack@debian.org + stuart@debian.org

Deliverables of the project : database structure to store all historical data points of all metrics standardized declarative interface to add/remove metrics to be graphed. The interface should allow for both "local" metrics (e.g. data generated by scripts run on the machines hosting the metrics portal) and "remote" metrics (e.g. data generated by remote data sources which are then periodically gathered by the metrics portal) cron jobs to periodically fetch new data and generate graphs proof of concept: integration of (some of the) existing graphs in the metrics infrastructure web interface to show updated graphs of the various metrics client-side dynamic web interface to graph, on demand, specific metrics (possibly more than one at a time to look for correlations) over the desired time periods (optional) produce a Debian Package of the portal code to ease deployment on Debian-based machines

Desirable skills : Python SQLAlchemy and SQLAlchemy-migrate matplotlib JavaScript (optional but desirable for the client-side interactive part) some Python templating engine (e.g. jinjia2) might be useful (name one you like in your application!) some Javascript library to generate dynamic graphs (e.g. flot) might be useful as well (name one!) please include as part of your application a Python script that uses matplotlib to graph some metrics from UDD sources history table via the public UDD mirror

What the student will learn: deal with live legacy data and code; consolidate into a single, well-designed architecture existing functionalities; this will help Debian in monitoring its strength and deficiencies, and evaluate the usefulness of changes to project processes.

Get Muon ready Description of the project: Muon, the apt frontend written by and for Kubuntu would be amazing to have in Debian. There are a great bit of ubuntuisms and ubuntu specific data that needs to be fixed up and provided in Debian. Besides this, there is also an additional set of 'improve muon' tasks attached to this project. The applicant should first try to run the various muon application on kubuntu to get a feel of what it can do. Then try to build and run on debian to get a feel of what is missing. Confirmed Mentor : Sune Vuorela

How to contact the mentor: svuorela on irc

Confirmed co-mentors: Aleix Pol (apol kde org)

Deliverables of the project : A fully functional muon

Desirable skills : C++, Qt, some qml and some cmake.

What the student will learn: The student will improve his Qt, C++ and QML skills as well as a great knowledge of Debian as well as learning to work with others and on a existing large codebase with actual users. The proposal should be submitted including the following: A project plan/schedule listing both integration tasks and generic muon tasks

Proposal should also contain a screenshot of a muon application with your name added to the about dialog

Improve Configuration Upgrade Mechansim with Elektra Description of the project: Currently configuration files only gets automatically replaced when no modification was done in the configuration file. In every other situation the user is prompted if she/he wants the file to be replaced. This detection is overly pessimistic and leads to large number of unnecessary required user input. Additionally, merges need to be done by hand without tool support. I propose to reduce that number by using Elektra that has exact knowledge of the key/value pairs and its metadata like comments. Then automatic merging would be possible in most scenarios and the user would only see real conflicts. No-Goals: Implementation of mappings between any configuration file to Elektra's ?KeySet. This is done in separate projects within the Elektra's Initiative. Related work: https://wiki.debian.org/PackageConfigUpgrade Elektra's approach allows usage of various programming languages, while Config::Model is Perl only. Unlike Config::Model, Elektra is a library to be used by the program themselves, thus creating synergies for the code base. Eventually, Elektra provides a way for a global key database to be used by any application and any user, and is not limited to configuration upgrades. Further Information: http://www.libelektra.org Confirmed Mentor :

How to contact the mentor: elektra@markus-raab.org

Confirmed co-mentors:

Deliverables of the project : Provide an Elektra Debconf Integration that does a three-way merge of Elektra's ?KeySet.

Desirable skills : C/C++, Debian Packaging, ideally Debconf Knowledge

What the student will learn:

Improve Debian on mips64el Description of the project: Port debian kernel package to support mips64el for loongson 2/3 and other possible hardware Port debian-installer to mips64el and build images for loongson 2/3 and other possible hardware fix some packages that failed to build on mips64el basic qa for gnome/kde Confirmed Mentor : Yunqiang Su

How to contact the mentor: wzssyqa@gmail.com

Confirmed co-mentors: guoliang@debian.org, Aron Xu <aron@debian.org>

Deliverables of the project :kernel package, package patches,debian-installer for mips64el which are accepted by official repository.

Desirable skills : Patching upstream code,good understanding of C and C++, etc

What the student will learn: Basic architecture of mips64el, debian packaging.

Improve Debian port on mipsel Description of the project: Improve Debian port on mips/mipsel Ports of Debian on mips/mipsel has been implemented for some time. However, many of the packages which could previously pass compilation can no longer pass. Also, some of the recently uploaded packages cannot pass compilation either. I propose that the abnormal packages of Debian port on mips/mipsel berebuilt and fixed, so that the quality of Debian in these architectures can be improved. Confirmed Mentor : Anibal Monsalve Salazar

How to contact the mentor: anibal@debian.org

Confirmed co-mentors: ?YunQiang Su <wzssyqa@gmail.com>, Aron Xu <aron@debian.org>

Deliverables of the project :

Desirable skills : Debian Packaging, C/C++, Autotools/CMake

What the student will learn: Debian archive manage, archive rebuild, more details about Debian packaging CategoryPorts

Integrate Debian with Android Description of the project: Lil' Debi is an easy Debian chroot running on Android designed to do trusted installs. It builds up a whole Debian chroot on your phone entirely using debootstrap . The user chooses the release, mirror, and size of the disk image, and clicks install. It validates every package using the official Debian repository keys, which are included in the app. It will also check and update a SHA1 checksum to make sure your debian install has not be tampered with. Then it has a simple chroot manager that fsck s your disk, mounts/unmounts things, starts/stops sshd if you have it installed, etc. Lil' Debi works with as few modifications to the Android system as possible. Currently, it only adds a /bin symlink, and a /debian mount directory. It does not touch /system at all. The aim of Lil’ Debi is to provide a transparent and tightly integrated Debian install on your Android device. It mounts all of your Android partitions in Debian space, so you see a fusion of both systems. Its even possible to have Lil’ Debi launch the normal Debian init start-up scripts when it starts, so that all you need to do is apt-get install and any servers you install will just work. The key missing piece in Lil' Debi, and indeed all Linux installers for Android, is proper integration of the Debian boot process with the Android boot process. When running Debian in a chroot on Android, Debian is using the Android Linux kernel, and Debian is started by Android's init system. This project focuses on finding out how best to call the Debian boot process so that it is transparently integrated into the Android experience. This will allow users to apt-get install any server or daemon, and have it automatically work on their Android device. Confirmed Mentor : Hans-Christoph Steiner

How to contact the mentor: mailto:hans@guardianproject.info and IRC: _hc on oftc and freenode

Confirmed co-mentors: Ramakrishnan Muthukrishnan

How to contact the co-mentor: mailto:rkrishnan@debian.org and IRC: rkrishnan on oftc and freenode

Deliverables of the project :

Desirable skills : debootstrap , fsck , chroot , the Debian boot process, Android programming, Eclipse, Java, sh scripting.

What the student will learn: The student will learn about running native processes in Android apps, how to build up Debian installs from scratch using debootstrap , the details of the Debian boot process and how to customize it. Working on this project will be useful for anyone interested in learning more details on how the core of Debian works, how to integrate native/C code into Android apps, and managing chroots and other things similar to Virtual Machines.

Required reading: http://bonedaddy.net/pabs3/log/2012/12/03/debian-mobile/

libc++-based Debian Description of the project: In the context of LLVM project, a new C++ standard library called libc++ has been developed and maintained. This package is already in Debian. The main goal is rebuild Debian using libc++ as C++ runtime. Note that the libstdc++ and libc++ are not ABI-compatible. This project will take advantages of the debile infrastructure. The first step of this project would be to propose a way to build every Debian C++ packages using libc++. The method must scale to the whole Debian archive (ie most of the packages should build out of the box using libc++). Confirmed Mentor : Sylvestre Ledru

How to contact the mentor: sylvestre@debian.org

Deliverables of the project : A repository of Debian packages running with libc++

Desirable skills : Packaging (especially of libraries), strong understanding of API/ABI compatibility

Requirements: A proof of concept of Debian packages being built with libc++

What the student will learn: Impact on the whole distribution, library management, compilations, etc

Linux hardware support for one mobile device Description of the project: There are many mobile devices in the world running some version of Linux. Unfortunately very few of them are supported by mainline Linux, which means installing Debian on them requires an unsupported version of Linux and sometimes an unsupported bootloader. There are very few people who have the skills, motivation and time to help improve this situation. This project aims to provide skills and time to people who have motivation to work on this. The student will work to add support to Linux mainline for a mobile device of their choice. Since all Android mobile devices run a version of Linux and most of these versions of Linux have source code available, an Android device would be best. Devices running Linux versions for Replicant or CyanogenMod will be best. Confirmed Mentor : Mark Brown

How to contact the mentor: mailto:broonie@debian.org broonie on IRC

Confirmed co-mentors:

Deliverables of the project : Linux mainline support for one device

Desirable skills : C programming, git, make, Android device owner

What the student will learn: Linux kernel programming

mhonarc replacement for lists.debian.org Description of the project: lists.debian.org uses mhonarc to format its archive for the web. mhonarc has a number of drawbacks, like not being developed very active or being rusty in terms of code. The pure date based layout of the mboxes isn't also the best, an additional thread based view, a method for searching the archive more intelligent would also be a nice feature. So what we are looking for: An mbox based parser that writes out, nice formatted, HTML websites.

We need to remove mails classified as spam afterwards.

Harmful content like HTML should be stripped of in a way that xss and other attacks aren't possible

A new, thread based view

Confirmed Mentor: formorer

How to contact the mentor: formorer@debian.org, IRC: formorer

Confirmed co-mentors: zobel@debian.org, IRC: zobel

Deliverables of the project : a git repository with the code

Desirable skills : Perl (the lingua franca of our team), E-Mail structure (RFC2822, RFC2045, ..), HTML/CSS, some experience with Modern Perl like Moose would be nice

What the student will learn: You will get experience on working with E-Mails, processing E-Mails, seeing numerous implementation bugs in E-Mail. Effective, Modern Perl programming.

Package elementary software Package elementary's Pantheon shell, GUI framework (Granite), applications, icon theme, and gtk theme. elementary is a project devoted to delivering a great user experience on the desktop computer. elementary's main product is elementary OS, which is currently Ubuntu based (although the developers are looking towards a Debian base in the future). Packaging this set of software in Debian will offer another great choice of desktop environments for Debian's many desktop computer users, as well as supplement current DE's offerings. Furthermore, a pure spin of Debian that uses elementary's suite of software by default will be much easier to implement. Confirmed Mentor : John Paul Adrian Glaubitz

How to contact the mentor: glaubitz@debian.org, IRC: cbmuser

Deliverables of the project : elementary's shell and apps installable with near complete functionality through Debian's repositories.

Desirable skills : Some experience with Vala, a similar object oriented programming language (such as Java or C#), or C with GObject. Some knowledge of debian packaging.

What the student will learn: The student will learn how a large project is interconnected, and he or she will broaden Debian's repositories with new, exciting software.

Project import/export for Alioth (FusionForge) Description of the project: Alioth is the reference Debian hosting platform for project code (or "forge"). It supports all majors VCS (Git, Hg, Bzr, SVN...) and offers membership management, bug trackers, discussion lists, download areas, and aims at making team work more efficient using best practices from the Free Software world. Alioth is powered by FusionForge. The forge world currently lacks interoperability: each forge has its own internal data format and few tools are available to migrate data from one forge to another. Moving project code and assets between publication platforms — including your own forge — should be easier, and faster. Your mission — if you accept it — is to implement an extensive import/export feature for FusionForge. You'll probably review the previous experiments with tools (forge-plucker, github-backup, ...), one-way imports and APIs. Defining a common format would clearly be a plus. Confirmed Mentor : Sylvain Beucler

How to contact the mentor: beuc@debian.org and #fusionforge on FreeNode

Confirmed co-mentors: Frank Villaume, Christian Bayle

Deliverables of the project : a FusionForge plug-in, to be included in the official releases.

Desirable skills : object-oriented PHP, (Postgre)SQL, regular expressions

What the student will learn: You'll get experience with data extraction and conversion, accessing services through APIs or harvesting, and interacting with the Forge community to shape interoperability.

Provide some metrics in Debile Description of the project: Because everybody loves meaningless stats, the goal of this project is to extend the debile infrastructure to provide some metrics on the packages. For example, build time, size of the binaries, etc. This projects would also extend to propose graphics over time (number of failure, number of errors/warnings detected, etc). Graphics should be provided using the d3js or Kibana library debile is a platform which aims to provide a generic rebuild platform. Normal build, custom builds (clang based) or static analyzers (coccinelle, scan-build, etc) are managed through this infrastructure. Confirmed Mentor : Sylvestre Ledru

Confirmed Co-Mentor : Paul Tagliamonte <paultag>

How to contact the mentor: sylvestre@debian.org

Deliverables of the project : A debile version with plenty of stats and graphics

Desirable skills : Some knowledge of packaging, Javascript, Python, database, etc

Requirements : Installation of Debile and a graph generated from its database.

What the student will learn: plenty of things relative to packages, build, etc

Recursively building Java dependencies from source Description of the project: Many Java projects use a combination of JAR file dependencies from other Java projects. In some cases, third party JARs are also used to provide custom tools for the build process (e.g. custom ant tasks or maven plugins). Can the entire heirarchy of dependencies and build tools and their transitive dependencies all be built from published source code? If not, we can not be certain that a particular dependency JAR is clean, free of malicious code, easy to fix or adapt for future Java versions. This project aims to develop automated mechanisms for cataloguing the portfolio of Java libraries on sites like github and the Maven Central Repository, creating a database of dependencies, mirroring their source repositories, removing binary JARs from their source trees and trying to build them using symlinks to JARs found in Debian or built by the same recursive process. This project may be partially automated using a tool like Jenkins. Data for some of the dependencies can be harvested from Maven pom.xml files. Confirmed Mentor : Daniel Pocock

Confirmed co-mentors: volunteers sought

Deliverables of the project : the ideal outcome will be a full suite of tools for automating this process: a user could insert the name of some JAR in a form, the tool would study the JAR, find the source, recursively build everything and inform the user whether or not the JAR they want to use can be built without any dependency on any JAR that is missing source code. Building individual components to help achieve the aims of this project would also be satisfactory. The student is not required to automatically correct individual Java projects that are completely unsuitable for automated builds (e.g. projects that can only be built in Eclipse).

Desirable skills : Java build tools (ant, maven, jenkins) and source repository tools (git, subversion)

What the student will learn: Effective use of Java projects involving a large number of dependencies. Using automated systems to orchestrate commands that are normally invoked manually.

WebRTC portal for the Debian community Description of the project: Debian recently launched a SIP and WebRTC service for our community. The User Guide explains how developers can access it. A key feature of the service is rtc.debian.org, the WebRTC softphone based on JSCommunicator and JsSIP. The student would look at extending this portal to provide more features specific to the requirements of Debian Developers, for example, adding support for SIP SIMPLE messaging, integrating multi-party conferencing using Jitsi Videobridge, linking WebRTC or Jitsi Videobridge to the dvswitch tool used at conferences like DebConf, adding CTI features (for example, when a call comes in, the softphone should get details about the caller from Debian LDAP and display it on the page), adding Captcha support to prevent spam calls. Confirmed Mentor : Daniel Pocock

Confirmed co-mentors: volunteers sought please just email Daniel and add your name and link or email address here

Deliverables of the project : any of the ideas in the description, to be agreed with the mentor at the beginning of the project

Desirable skills : ?JavaScript, jQuery, SIP. Alternatively, skills in C++ or Java may also be beneficial for server side work (such as linking Jitsi Videobridge with dvswitch)

What the student will learn: WebRTC, the hot new HTML5 technology of 2014.

For more details and ideas about making a successful application, please see Daniel's blog about this project