Debian's Google Summer of Code 2012 wrap-up

IntnsRed's picture

Forums: 

From Ana Guerrero in the debian-devel-announce mailing list:

Debian participated this year with 15 projects in the Google Summer of Code, with 12 projects finishing successfully and with some of the students greatly exceeding our expectations.

We would like to thank everybody involved, mentors, co-mentors and students for all the work they put this summer. We would like specially invite our students to continue being involved in making Debian better, whether by continued work on their summer project or by working in other areas of Debian. Please feel welcomed!

Below is a small summary of what our projects achieved this summer. If you have any comments or suggestions, please drop us an email on our mailing list: http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/soc-coordination

* Pluggable Acquire System for APT
by Bogdan Purcareata. Mentored by Michael Vogt and David Kalnischkies.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/BogdanPurcar...

Higher-level package management systems require more and more metadata, often to be collected from a wide variety of sources. The goal of the project was to provide a unified backend that can be hooked into, so all the currently external tools could use this mechanism and benefit from all the goodies that come with it (checksums, pdiffs, etc). Furthermore, future package management developers don't have to build their own backends for acquiring files from the Debian Archive, instead they can just build plugins for APT.

Most of the work has already been merged into apt - albeit, one has to choose between the old and the new code for now.

* PyPI to Debian repository converter
by Natalia Frydrych. Mentored by Piotr Ożarowski.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/NataliaFrydrych

The PyPI repository contains thousands of Python packages, of which only a fraction is available in Debian. To make it easier to install additional software from this repository, Natalia developed a PyPI to Debian package conversion tool.

Thanks to her work, it is now possible to use this tool to automatically fetch a PyPI package, and create not only a Debian package out of it, but repositories too, making installation and sharing them even easier.

The same tool can be of use to Debian packagers, as they can base their packaging on the generated one, reducing the amount of work they need to do.

* Clang support for the Debian buildd infrastructure
by Alexander Pashaliyski. Mentored by Sylvestre Ledru & Paul Tagliamonte.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/AlexanderPas...

Debian has a distributed buildd network, which builds incoming packages for all suitable architectures.

During the Summer of Code, The first step of Alexander's work was to documentthe process of configuring a new buildd node. While doing so, some patches have been proposed and merged upstream. Secondly, a parallel build infrastructure has been set up to process incoming packages alongside official builders to test for issues in each package when built with the clang compiler. This infrastructure helps move Debian forward in two distinct ways. Firstly, this project helps to decouple Debian from gcc in term of tools and processes. This means that we will be able to build the archive with secondary compilers to aid with compiler testing, or help derivatives build their distro in a slightly different way. Secondly, it helps to provide automatic rebuilds using clang (the LLVM-based compiler), allowing for more checks, as well as enabling new tools to audit the archive's source.

* Provide an alternative to libstdc++ with libc++
by Andrej Belym. Mentored by Sylvestre Ledru.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/AndrejBelym

With the LLVM stack gaining more and more momentum, Andrej took on the task of preparing a Debian package for libc++ (an alternative for libstdc++). The result of this is in experimental already, at least for the i386 and amd64 architectures, and bugs with patches have been filed to correct issues on some of the other architectures. The package also provides an easy way to build C++ applications with clang, using the libc++ library instead of libstdc++.

Andrej also works on providing a replacement of libgcc_s using compiler_rt and libunwind.

* Improving the online package review interface for http://mentors.debian.net
by Baptiste Mouterde. Mentored by Nicolas Dandrimont, Arno Töll and Stuart
Prescott.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/BaptisteMout...

http://mentors.debian.net is the most common way for new maintainers to get their packages sponsored into the main Debian archive. Currently, package reviews happen in three different places: the website http://mentors.debian.net, the debian-mentors mailing-list, and the "sponsorship-requests" bug reports.

Baptiste worked on debexpo, the software that runs mentors.d.n, in order to merge the information from those three distinct sources in a single place. To do so, Baptiste developed an online code review interface, allowing reviewers to comment directly on snippets of code and, at the end, to send a detailed report to the mailing-list or the sponsorship request bug report.

In order to develop his online review interface, Baptiste had to completely overhaul debexpo's package storage backend. Thanks to his work, package history will be kept using git repositories with one commit per upload to debexpo, allowing for easy random access to former package revisions.

* Semantic Package Review Interface for http://mentors.debian.net
by Clément Schreiner. Mentored by Nicolas Dandrimont, Arno Töll and Stuart
Prescott.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/ClementSchre...

As a new maintainer, getting your packages sponsored into the main Debian archives can be a lengthy and frustrating process. Most of that time is spent waiting for a potential sponsor to do an initial review of the package.

Clément has worked on debexpo's package analysis capabilities, and among other things integrated debtags' heuristics to find out which packages are similar to the one just uploaded, allowing us to suggest packages to sponsors, and conversely to suggest sponsors to prospective maintainers.

Throughout his work, Clément improved debexpo's package metadata storage API, making it easier to query packages given specific traits (e.g. "mostly developed in Python", "works on the network", ...).

* Improving Debian Team Activity Metrics
by Vipin Nair. Mentored by Sukhbir Singh and Andreas Tille
http://wiki.debian.org/SummerOfCode2012/StudentApplications/VipinNair

The "Debian Team Metrics" project collects data from various sources (mailing lists, repositories, package upload records) to gauge the performance of teams in the Debian community. The data collection work was done as a part of Google Summer of Code last year by Sukhbir Singh, mentored by Andreas Tille and Scott Howard, where the tools to gather data for the metrics above were developed.

Over the summer, Vipin worked on writing a web interface for presenting the data, designed a data access API and suggested new metrics for the project. We hope that the Debian community can make use of the data to see how a team, and individual members in a team are performing. We plan to announce this project soon.

* Multiarch Cross-Toolchains
by Thibaut Girka. Mentored by Héctor Orón Martínez.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/ThibautGirka

With the rise of ARM, and the increasing importance of embedded systems, the need for a usable cross-compiling toolchain rose as well. Thanks to Thibaut's work, wheezy will come with much improved support for cross-toolchains (dpkg, apt know about cross-arch dependencies for example). Thibaut also wrote an important patch to gcc 4.7 packages to enable usages of gcc -dev packages without installation the whole compiler dependencies.

* Port bootstrap build-ordering tool
by Johannes Schauer. Mentored by Wookey and Pietro Abate.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/JohannesSchauer

Bootstrapping a new Debian port is extremely difficult, in a large part due to cyclic build dependencies. Johannes wrote a tool and various other utilities to analyze and help solve the build dependency cycle, and has documented the whole process extensively, thereby reducing the manual work required considerably.

* Bootstrappable Debian
by P. J. McDermott. Mentored by Wookey and Jonathan Austin.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/PJMcDermott

Another way to tackle the bootstrapping issue is to break the build dependency cycles, and that is what Patrick set out to do. Patrick implemented a way to support "build profiles" in dpkg and sbuild, and made test builds for some base packages using these staged builds to break the dependency cycles.

As part of his work, Patrick also helped improve the multi-arch support in a number of core packages.

* Improve Debian-Installer network setup, by Sorina - Gabriela Sandu.
Mentored by
http://wiki.debian.org/SummerOfCode2012/StudentApplications/SorinaSandu

This project aimed to improve the Debian-Installer network setup. In the first part of the project, Sorina added support to scan the wireless network interface and provide a list of available wireless networks instead of asking for one. Afterward, Sorina worked on adding support for netcfg to write configuration files in Network Manager’s format, in order to keep the configs used while installing after the installation process is complete. Furthermore, Sorina also worked on some of the netcfg bugs, mostly wishlist items but also normal bugs.

* multi-archive support for dak
by Ansgar Burchardt. Mentored by Joerg Jaspert.
http://wiki.debian.org/SummerOfCode2012/StudentApplications/AnsgarBurchardt

Ansgar improved upon the Debian Archive Kit (dak) by adding support for handling multiple archives with the same installation. His work is already merged and is live, the NEW, policy and build queues are all separate archives now. This is a huge step towards merging the archive of backports.debian.org into ftp-master.debian.org, and a required step towards personal developer repositories.