The main page is at SummerOfCode2015.

To add a new project proposal, please enter a WikiName in one of the boxes below (the contents will be used as a wiki page name) and hit the button! Then, fill in the template, and drop us a line on the soc-coordination mailing-list.

Coding Projects with confirmed mentors (GSoC and Outreachy)

Add new checkers in Debile

Description of the project: 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.

The idea of this project is to plug additional checkers (static analyzers, dynamic, etc) to the Debile infrastructure.

This project will take advantages of the debile infrastructure.

More on Debile: https://france.debian.net/evenements/minidebconf2014/debile-presentation.pdf

Some examples of checkers:

Android tools in Debian

Description of the project: The Android platform is free software, including the tools used for developing apps for Android. Debian-derivatives are already the preferred platform for most Android developers, and some Android tools are included in Debian as part of the Android Tools Team. This project is about working towards the goal of having the entire Android toolchain and SDK in Debian so that Android apps can be developed using only free software from easy-to-use packages.

There are many chunks of work to be done:

  • finish packaging all of the core development tools (aidl, gradle, etc.)
  • update android-tools package to follow Android Tools team package structure

  • update existing packages to the latest upstream version

  • update androidsdk-tools to the Android Tools Team style, and update to latest upstream version

  • package new parts of the Android upstream source, including the NDK, target platforms, compilers, etc.
  • make all Android Tools packages build reproducibly

Since this project is a large one, more that one student could work on it simultaneously. You can find relevant documentation in READMEs in each git repo and source package. There is also this wiki section: https://wiki.debian.org/AndroidTools

The Debian Android Tools Team works with git and git-buildpackage: https://wiki.debian.org/PackagingWithGit

  • Confirmed Mentor: Hans-Christoph Steiner

  • How to contact the mentor: hans@at.or.at and _hc on IRC

  • Confirmed co-mentors: Markus Koschany <apo@gambaru.de>

  • Deliverables of the project: The deliverables of this project will mostly be finished packages submitted to Debian sid, both for new packages and updated packages. Whenever possible, we should also try to get patches submitted and merged upstream in the Android sources.

  • Desirable skills: Building and packaging C and Java code, Android development, an understanding of git and git-buildpackage.

  • What the student will learn: Students will learn to figure out large scale projects like Android, and how to organize their own work within such projects. They will also learn about building and packaging C and Java, as well as some of the guts of Android itself.

  • Related projects: There are two projects that are project is somewhat related: Integrate Debian with Android since it deals with Debian and Android together; and Move forward reproducible builds since the Android Tools should also build reproducibly.

Apport for Debian

Description of the project: Apport intercepts Program crashes, collects debugging information about the crash and the operating system environment, and sends it to bug trackers in a standardized form. It also offers the user to report a bug about a package, with again collecting as much information about it as possible.

In Debian, we'd like to see Apport play flexible roles. Apport could serve as a crash detection tool, and also upon opt-in, as a Bug/Crash reporting tool. I'd also like to see functionality to save bug reports. This would allow users to save the state and then work on it later, at their leisure.

Offline Functionality: Apport has impressive retracing mechanism, where in it can download all the debug symbols for a package, to generate a proper stack trace. What to do when the crash is triggered on a box with no network? Share some ideas from apt-offline on how to download dependent packages on a different box.

  • Confirmed Mentor: Ritesh Raj Sarraf

  • How to contact the mentor: rrs@debian.org, IRC: rrs|?RickXy

  • Confirmed co-mentors: Aron Xu

  • Deliverables of the project:

    • Notification tool - Provide a generic notification tool, that can detect apport crash reports, and notify the user. Today, we are doing it with a small daemon.

    • Integration with Reportbug - Integrate Apport with reportbug to stand as a secondary bug reporting tool. Use as much of reportbug's modules, as possible.

    • Integration with Debian BTS - Integrate Apport with Debian's BTS. As of today, apport has a crashdb for Debian. It can take a bug/crash report and craft an email based bug report that is understood by Debian BTS. Add more improvements to it, like:

      • Draft all emails with a custom tag assigned only for Apport (Usertags?)
      • Make apport crash reporting reliable - By reliable, we mean Do our best to ensure that the candidate bug report is really a genuine problem, and has not yet been reported.

    • Display bug reports - If connected to the internet, pull in all bug reports (with the particular usertag?) and display it to the user, for possible duplicate

    • Scan bug reports - If we pull in the bug reports, try to do a crash signature scan, to guess possible duplicate.

    • Offline functionality - What about Debian boxes that do not have network, or are behind a firewall???

  • Desirable skills: Shell, Python, C, Debugging.

  • What the student will learn: Student will gain deeper knowledge of when and why programs crash (Actual bugs vs Integration Issues, Library Transitions), How to reliably detect and Debug them.

  • Related projects: apport

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

  • 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, screenshot of the Debile web interface (to prove that the student installed it)

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

  • Related projects and documents: ASAN, 760741, Debian hardening goals, SoftBoundCETS

Automated configuration of packaged web applications

Description of the project: web applications is an area in which Debian could do a lot better. Even most well-packaged web applications still require some manual steps for configuring a frontend web server and/or a database. The aim of this project is to improve a tool that operates one layer above the package manager, and that 1) can be used as a consistent interface to configure supported web applications; 2) can be extended by the packaged application themselves by providing some support files in the right location; and 3) requires no technical backgound to be used (i.e. is usable by end users). A prototype of this tool is being put together by the project mentor, and the students's goal during the program will be to add support for as many applications as possible.

  • Confirmed Mentor: Antonio Terceiro

  • How to contact the mentor: terceiro@debian.org, terceiro on IRC

  • Confirmed co-mentors: ...

  • Deliverables of the project: base tool to configure web applications, support for 2-3 popular web applications (each using a different technology to serve as example for other ones).

  • Desirable skills: Basic Debian packaging (i.e. modifying existing packages to include extra files), some scripting language experience (Ruby or Python or Perl or shell), a basic understanding of how web applications work, interacting with database systems.

  • What the student will learn: Debian packaging, configuration of web applications, practical tool development.

  • Details:

    • The initial idea for the tool is that there will be a user interface where the user will select which application he/she wants, and provide some information needed to configure that application (i.e. domain name, path under the domain -- / or /myapp, etc). On the backend, there will be a mechanism that will apply a selected set of chef cookbooks, passing the information provided by the user, ir order to get the application installed and configured.
    • The tool is being written in Ruby, and will use chef as a backend for applying configuration to servers.
      • because those are the tools the project mentor is confortable with.
    • Please see /WarmUpTasks for a set of tasks applying students must complete before submission

  • Related projects, documents, talks:

Blends web sentinel

Description of the project: In DebianPureBlends one key feature is the so called web sentinel which is featuring several parts like so called tasks pages (example from Debian Science), bugs pages (example from Debian Med), a so called thermometer (example from Debian GIS) and there might be other interesting features to be invented. The web sentinel is in principle based on data obtained from UltimateDebianDatabase but this is not yet consistently implemented and needs a partly or fully rewrite of the tools.

  • Confirmed Mentor: Andreas Tille

  • How to contact the mentor: tille@debian.org

  • Confirmed co-mentors: N/A

  • Deliverables of the project: More flexible and new web sentinel components

  • Desirable skills: Python, SQL (UDD is a PostgreSQL database)

  • What the student will learn: The student will be introduced into DebianPureBlends which are dealing with interesting topics and have inviting teams - at least one of them might be of certain interest for the student. Diving into UltimateDebianDatabase is also a very interesting thing since the student will get a great overview about metadata around the whole Debian universe.

Bootable Clang-Built Debian

Description of the project: Following the work done on building Debian using Clang (http://clang.debian.net/), the goal is to produce a minimal Debian built only with Clang. In this project, we will focus only on the key packages of Debian necessary to start the OS (Kernel, libc, etc)

  • Confirmed Mentor: Sylvestre Ledru

  • How to contact the mentor: sylvestre@debian.org

  • Confirmed co-mentors: ?

  • Deliverables of the project: A set of packages built with Clang (with patches)

  • Desirable skills: C/C++, packaging, init system

  • Requirements: The list of packages which must be fixed to reach this objective + a package fixed (ie writing a patch to fix one of this package), a step by step documentation on how to make a bootable Debian

  • What the student will learn: Dealing with various packaging, the key package of a distro, etc

  • Related projects: http://clang.debian.net/, the two GSoC projects last year

Coinstallable PHP Versions

Description of the project:

PHP 5.x co-installability is a big task in Debian. All packages would have to be renamed from php5 to php5.x, all conflicting binaries would have to be renamed and an /etc/alternatives/ system would have to be used to select the default PHP version. But that's the smaller part - the supporting infrastructure (namely dh_php5 and php5-maintscript-helper) would have to be modified to support multiple PHPAPI versions to allow compiling all external (and internal) PHP modules for all supported PHP versions.

  • Confirmed Mentor: Ondřej Surý

  • How to contact the mentor: ondrej@debian.org, IRC: ondrej@i.d.o

  • Confirmed co-mentors: N/A

  • Deliverables of the project: Multiple versions (5.5, 5.6, 7) of PHP packaged (compare with python or ruby). Support tools and infrastructure for PECL (and PEAR) modules, and transition of the (PECL) modules to the new infrastructure. Packaging guide for module packagers. Technical documentation for tools (man pages).

  • Desirable skills: Shell, perl or python (for dh_* modules), Debian packaging.

  • What the student will learn: Student will gain deeper knowledge in the Debian packaging for languages that have multiple versions (compare with Python). Student will also learn how to interact with multiple maintainers (PECL, PEAR) and how to coordinate transition to a new technology in a diverse environment. Student will also learn how to document his work and how to prepare documentation for people using his project.

  • Related projects:

Debsources as a Platform

Description of the project: Debsources provides Web access to all of Debian source code. Debsources allows to browse, search, and render Debian source code, as well as compute code metrics and statistics that encompass all available source packages. This GSoC project aims at extending Debsources in two directions.

On the one hand, Debsources will be extended to scale better, by switching the Debsources updated to an asynchronous architecture. This change will allow to distribute indexing tasks over multiple workers, potentially running on multiple independent machines. It will also allow to easily re-index previously indexed data in batch (e.g., upon changes to the available indexing plugins, or when injecting new releases from scratch), a use case that is challenging to support properly with the current synchronous architecture.

On the other hand, requests to extend Debsources with new features and to support new use cases, not always related to source code publishing, are on the raise. We want to address them by turning Debsources into a base software platform capable of running multiple Web applications on top of the same underlying database. The Debsources code base will be refactored to make this possible. As concrete use cases to test this change we aim at developing 2 new Web applications on top of Debsources: 1) a "copyright.debian.net" web app, allowing to browse, search, render, and export debian/copyright files; 2) a "patch tracker" web app to publish details about the source code differences that Debian packages carry with respect to upstream releases of the same software.

  • Confirmed Mentor: StefanoZacchiroli

  • How to contact the mentor: <info@sources.debian.net> ; see mentors' wiki pages for more

  • Confirmed co-mentors: MatthieuCaneill

  • Deliverables of the project:

    • refactor Debsources web app to use blueprint, pluggable views, and other Python/Flask abstractions to separate common features (e.g., browse, search, etc.) from specific web apps
    • implement on top of Debsources a new Web app, copyright.debian.net, that allows to find, render, and export (e.g., in SPDX) debian/copyright files, in particular machine-readable ones

    • implement on top of Debsources a new web app, similar to the (now defunct) patch tracker

    • refactor Debsources updater from the current synchronous architecture, to an asynchronous architecture, based on Celery; convert the current plugins to tasks

    • write new Debsources plugins (now workers) to mine debian/copyright information and inject them into the Debsources database
    • you shall include as part of your application a Debsources patch that fixes one of the currently outstanding bugs (you might want to start with newcomer bugs); see the HACKING file for info on how to get started with Debsources development

  • Desirable skills:

  • What the student will learn:

    • deal with Debian infrastructure components, working on a large-scale service used daily by hundreds of Debian contributors
    • apply real-life refactoring on an existing code base, to allow building unexpected features on top of it
    • modular Web and infrastructure development, to share code among unrelated services
    • deal with "big data" scale services, working on one of the largest existing database of Free Software source code

Developer Dashboard

Description of the project: Please look at the Debian Maintainer Dashboard and my recent blog posts about iCalendar with Github, iCalendar with Nagios and Bugzilla. Think about all the possible ways you could help take this further. I am really open to ideas from students. For example, if you have written Mozilla Firefox or Thunderbird plugins, could you help extend the Lightning plugin to improve the way such data is rendered? Or could you help the GNOME project to improve the way they display a developer's tasks in Evolution? How about storing and aggregatig data about free software events (see the recent discussion on the debian-project mailing list)? Other ideas may include aggregating data from different iCalendar task feeds and rendering it in HTML (similar to the Planet Venus RSS aggregator), helping developers build reports on their pending tasks or anything else you can think of in this domain.

  • Confirmed Mentor: Daniel Pocock

  • Confirmed co-mentors: it is recommend that students engage with the Debian QA team and any other relevant teams in Debian to help maximize their chance of selection

  • Deliverables of the project: to be defined in a student proposal

  • Desirable skills: Python, Ruby, ?JavaScript, C, Mozilla plugin development

  • What the student will learn: the student has a great opportunity to learn about different styles of project management and time management used by developers both in their professional work and private projects

Improve one of the Debian MIPS ports (mips, mipsel, mips64el)

Description of the project: Improve one of the Debian MIPS ports (mips, mipsel, mips64el)

Ports of Debian on mips/mipsel/mips64el 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/mips64el be rebuilt 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

  • 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

Input/Output model for multiple simultaneous users

Description of the project: For decades, the majority of human computer interaction has focused on a single user utilizing one mouse, one keyboard, with a single monitor. Many systems now include multiple monitors; however, at the desktop level, the dominant paradigm is still focused on a single user with one keyboard and one mouse. Multi-user interaction at the desktop is slowly occurring: Synergy allows users to share keyboard and mouse across disparate systems; inexpensive new input devices such as the PSMove and Kinect may replace or augment the mouse as an input device; and virtual/augmented reality devices may replace the traditional monitor. Systems like the MPX allow multiple keyboards and mice to be used within X11 desktops, but most applications and toolkits are not yet configured to work well with multiple simultaneous users.

There are multiple focus areas for separate GSoC projects. Below are some example projects that would fall under this topic:

  • - Improve toolkit support for multiple simultaneous pointing devices
    - Improve support for multiple simultaneous keyboard devices (e.g. deconflict typing; extend the keyboard focus model).
    - Improve support for non-traditional input devices (e.g. PSMove, Kinect, etc).

Confirmed Mentor: Klee Dienes
How to contact the mentor: klee@debian.org
Deliverables of the project: Debian package(s) that perform some or all of the above functions.

For example, we have developed a package to enable the use of a PSMove controller (PSMoveAPI) to create a pointer anywhere on any screen in a multi-system computing environment, just by pointing directly to the physical screen. Example projects might be to:

  • - Improve the configuration and integration of the PSMoveAPI packaging support.
    - Improve the integration of the PSMove input stream into window managers (such a kwin or mutter or weston).
    - Create an API to allow "detail" data such as position and orientation to augment mouse events as seen by an application or web browser (properly managing coordinate transformations as the window moves about the physical space).

Desirable skills: Coding, packaging, general engineering ability
What the student will learn: A deep understanding of USB human interface devices, input models and toolkits, and advanced gestural and spatial input devices.
Related projects: Various portions of this project have already been implemented and will be made available via GPL.

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 cdebootstrap. 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 fscks 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.

Important feature required for the project is to add "installation profiles". On the install screen, there should be a menu of profiles to choose from, example "basic webserver", "wireshark", "minimal SSH", etc. The user would just choose one of those profiles, and then Lil' Debi would make that setup. In addition to above feature we have bunch of feature which are required to be implemented like adding support for arm64 and x86. Check wiki page and issues list to find more about missing features.

  • Confirmed Mentor: Kumar Sukhani

  • How to contact the mentor: mailto:kumarsukhani@gmail.com and IRC: sdkie on oftc and freenode

  • Confirmed co-mentors: Hans-Christoph Steiner

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

  • Deliverables of the project:

  • Desirable skills: chroot, the Debian boot process, Android programming, 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 cdebootstrap, 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: Debian chroots on Android, Debian on mobile, Debian on mobile Howto

  • Related projects: tasksel, blends

Move forward reproducible builds

Description of the project: How can we assess that a given binary package was indeed produced by the source it claims to be coming from? By enabling independent parties to create a byte-for-byte identical packages from the same source, the ReproducibleBuilds project will enhance trust in Debian, and free software in general. Very good progress has been made over the course of the past year, but several general and particular problems remain. Some issues require careful examination, getting deep down the rabbit hole to understand the source of variations, and ingenuity to come up with fixes. If possible the issues should be fixed at the toolchain level and thus will a lot of packages at once.

  • Confirmed Mentor: Lunar

  • How to contact the mentor: lunar@debian.org, Lunar^ on IRC.

  • Confirmed co-mentors: Holger Levsen (h01ger), Reiner Herrmann (deki), Mattia Rizzolo (mapreri)

  • Deliverables of the project:

    • Patches for many Debian packages!
    • Documentation of common issues, and their solutions.
    • Improvements to our experimental toolchain, including strip-nondeterminism.

    • Improvements to the debbindiff package comparator.

  • Desirable skills: There's a small team and we are all learning together as we make progress.

    • Basic understanding of Debian packages.
    • Python for those who want to improve debbindiff.
    • Perl for those who want to improve strip-nondeterminism.
    • A thrill for investigations.
    • A taste for fun hacks.
  • What the student will learn:

    • A lot about the many different ways software can be built.
    • How to make build systems reproducible.
    • Many details (that you might regret learning) about how our plumbing tools work.
    • How to interact with other Debian developers and research suitable solutions with them.

Packaging of further non-free printing drivers

The current Brother Linux printer drivers are vastly non-free and use outdated packaging techniques; furthermore there is no public repository of these printers. The licence apparently allows a redistribution of the packages, which come in two forms: an "LPR driver" and a "cupswrapper driver", of which both are needed for use in modern CUPS environments.

The body of this project is to investigate ways to create proper Policy-compliant packages out of the current Brother packages and establish a methodology to provide them to Debian users: either upload what's free in Debian main & upload what's not in non-free; or build a packager that could be uploaded to contrib.

This project would take on https://github.com/illwieckz/debian_copyist_brother/ which was the result of last year's New Contributor Game on the same project

  • Confirmed Mentor: Didier 'OdyX' Raboud <odyx@debian.org>

  • How to contact the mentor: mail or OdyX on IRC

  • Deliverables of the project:

  • Desirable skills: Skills that the student has or is willing to develop. Remember, the students do not have as much experience as the mentor.

  • What the student will learn: Scripting in various languages for the packager, forensics in printing code of various age, packaging techniques, etc

Spatial computing environment; room modeling

Description of the project: Computer labs and collaboration spaces now have an overabundance of pixel real estate (i.e. screens). The ability to spatially manipulate those pixels requires that computer programs be cognizant of where the pixels are in the room. We need a tool that will allows us to identify the location of all of the screens in a room and map them into an arbitrary coordinate frame.

For example, if we define a room with origin at [0,0,0], we may define each screen in the room via [x1,y1,z1] (upper left) and [x2,y2,z2] (lower right). However, this does not provide flexibility for non-square (i.e. curved) monitors or projectors with keystone projections. While a planar assumption is reasonable to start, flexibility for non-standard displays is desirable. Given coordinates for all of the screens, we want to be able to visualize the room in 3D. Inputs and outputs should be standard machine readable format (e.g. json, xml, etc.). Applications include labs, CAVES, and other spatially enabled immersive environments.

Confirmed Mentor: Klee Dienes
How to contact the mentor: klee@debian.org
Confirmed co-mentors: Frank Tanner, frank.tanner@hadronindustries.com
Deliverables of the project: Debian package(s) that perform some or all of the above functions.
Desirable skills: Coding, packaging, linear algebra, general ability to do cool stuff
What the student will learn:
Related projects: Prototype python code that does some of these functions is (will be) available via GPL.

Non-Coding Projects with confirmed mentors (Outreachy)

Projects ideas without confirmed mentors

Extend the security-tracker check-external scripts

Description of the project: Extend the check-external scripts in the security tracker to automatically pull in CVE and other security advisory data and commit directly to the secure-testing repo. This would eliminate a lot of the manual work done by the security team. The project would consist of several phases: Review tracker data and collate common data sources. Research/contact all of the data sources in order to find existing machine-readable APIs/information about security issues. Write core infrastructure for committing data to tracker. Write converters for external machine-readable data. Write parsers for the remaining data sources. During the development phase it could simply mail the debian-security-tracker mailing list with diffs to commit.

  • Confirmed Mentor:

  • How to contact the mentor:

  • Confirmed co-mentors:

  • Deliverables of the project: A replacement for check-external that will automatically commit new external data to the security tracker.

  • Desirable skills: Python

  • What the student will learn: Debian security processes, security information, integration of data sources, scraping data from websites

  • Related projects: security-tracker, check-external