GSoC/GCI Archive
Google Summer of Code 2013

Debian Project

Web Page:

Mailing List:

The Debian Project is an association of individuals who have made common cause to create a free operating system. The Debian Project was founded in 1993 by Ian Murdock to be a truly free community project. Since then the project has grown to be one of the largest and most influential open source projects. Thousands of volunteers from all over the world work together to create and maintain Debian software. Available in 70 languages, and supporting a huge range of computer types, Debian calls itself the "universal operating system".


  • Add OCRA support to oath-toolkit and dynalogin Introducing necessary tools and libraries to implement the OCRA authentication mechanism in oath-toolkit and dynalogin.
  • Bootstrappable Debian The objective of this project is to enable the automated bootstrap of new debian ports. We can summarize all the project in two items: 1) Make a tool to manage bootstrap process (including instructions of how to use it) 2) Write patches and file bugs for all the multiarch, cross-build and profile patches needed for the bootstrap process.
  • Debian Android Application The project will result in an Android app that makes the usage of many debian tools easier by blending it with the everyday usage of a smartphone.
  • Debian GNU/Hurd Debianish initialization Use the default Debian init system to boot Debian/Hurd.
  • Enabling free multimedia real-time communications (RTC) with Debian Currently Debian contains various applications for RTC, but there are problems when trying to make them work together. There are issues with NAT traversal, especially symmetrical NAT's and, of course, there is the problem of inter-program communication, there are various incompatibilities when trying to communicate between different types of clients. ICE/TURN/STUN are capable of traversing NAT/firewalls but the multitude of programs, protocols and fragmentation in general, will always pose problems. WebRTC promises to fix these problems and it has the potential to become the de facto standard in real time communication.
  • Implementation of message passing in the Debian infrastructure This project aims at leveraging the existing FedMsg software to emit various messages when events occur in our infrastructure.
  • Improvements to Debian Search and the Search Interface The project is about improving Debian's search results and search interface by implementing state of the art and parameter free DFR weighting schemes in Xapian which are known to outperform the current weighting schemes available under Xapian and then deploying them in Debian search. Also, query expansion feature will also be implemented in Debian search and it will be greatly improved by implementing novel query expansion schemes in Xapian which are not currently implemented. Moreover, spelling suggestions feature and resistance to keyword spamming will also be implemented in Debian search which will greatly improve the search experience for Debian users. As an optional project, the popularity of a page will be estimated by various metrics which will then be used to add to the weight of a of a page thereby making the search results more relevant and dynamic.
  • Leiningen & Clojure packaging Debian maintainers don't have tools to automate the packaging of software made with Leiningen and Clojure. This project will be divided into 2 parts: The first part will be packing the dependencies for Leiningen 2 (wheezy currently has 1.7.1 which is outdated) this will allow Debian to incorporate more Clojure programs and libraries into it's package system. The second part is to write tools to ease the packaging of software made with Leiningen and Clojure.
  • MIPS N32/N64 ABI Port MIPS is one of the most elegant RISC CPUs in the industry, and there are quite a lot different usages in its family. This project attempts to create a new MIPS N32/N64 ABI port for Debian. Different from O32 (used by existing mips/mipsel port), N32 is an address model that has most 64-bit capabilities but uses 32-bit data structures to save space and process time, it is quite similar to the ongoing x32 port for x86 platform. At the same time, N64 is a full 64-bit address model which is comparable to x86_64 on x86. There is consensus that N32/N64 ABI would give capable devices better performance, while O32 ABI should be kept for devices that is only 32-bit capable. Since Multiarch support is almost available in Debian, we are able to apply the state-of-art technology to help us on both bootstrapping and future usages. Users can run N64 kernel with mixed N32/N64 userland to take advantage of both the performance and the large memory as needed.
  • OpenJDK and Debian To finalize the transition to the OpenJDK 7 for all debian packages, and to attempt to build with OpenJDK 8
  • OpenRC init system in Debian Add LSB init script compatibility to OpenRC.
  • PTS rewrite in Django Package Tracking System (PTS) is currently a mess of various technologies and languages: Perl, Python, XSLT which makes it extremely hard to maintain and extend. It includes an e-mail and Web interface for viewing information about packages, but the information shown is rather fixed and adding something new is a daunting task. Finally, since it is based on generating static HTML files, it does not offer real-time up-to-date information. This project aims to rewrite the application using Python and the Django framework in order to solve these problems by making a modular modern Django application.
  • Redesign metapackage creation for Debian Blends In Debian Blends a basic way to install packages belonging to a certain user task is a set of so called metapackages. The package blends-dev is responsible for creating these metapackages taking as input data task files, which specify dependecies from binary packages. The current implementation is using information from the system where blends-dev is called to validate the dependencies. In practice this has the effect that the most popular architectures (i386, amd64) are used as reference for metapackages which are intended to work on all available Debian architectures. The task of the GSoC project is to rewrite the blends-dev code to enable architecture dependent metapackages creation.
  • scan-build on the Debian archive The project consists in using clang's static analyzer (C, C++, Objective-C) on Debian packages to help developers find bugs that compilers are not able to find. scan-build can detect a large range of oddities in the code from dead assignments (a clean up is always something worthy) to null pointer dereferencement or weird malloc/free scenarios. This is a process that could be integrated into Debian quality assurance workflow, to ensure stability for end users and remove bugs even before uploading packages to the archive (such as other daca tools or lintian checks).
  • ZFS on Linux integration ZFS provides many more advanced features than any other filesystems available to Linux users, and it's proven in production environment for years. There is btrfs under heavy development to provide similar functions, while the way is still quite long to go. At the same time native ZFS on Linux (ZoL) is a low hanging fruit for Linux users. To achieve this target we have two things to do: make zfs actually work on a Linux distribution; make it better integrated into the system, pushing its higher-level functions more handy to end users. This project covers the both parts, which is to provide a functional ZFS support in Debian by integrating basic functions into the system and more in-depth integration. A well integrated ZFS support will make Debian even better suited for enterprise usages than today, and most of the work in this project will be immediately available to BTRFS users once different bits are taken care.