The main page is at SummerOfCode2016.

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, please avoid spaces) 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)

APT↔dpkg communication rework

Description of the project: APT-based tools like apt-get, aptitude, synaptic, … work with the user to figure out how their system should look like after they are done installing/removing packages and their dependencies. The actual installation/removal of packages is done by dpkg with the constrain that dependencies must be fulfilled at any point in time (e.g. to run maintainer scripts).

Historically APT has a super micro-management approach to this task which hasn't aged that well over the years mostly ignoring changes in dpkg and growing into an unmaintainable mess hardly anyone can debug and everyone fears to touch – especially as more and more requirements are tacked onto it like handling cycles and triggers, dealing with "important" packages first, package sources on removable media, touch minimal groups to be able to interrupt the process if needed (e.g. unattended-upgrades) which not only sky-rocket complexity but also can be mutually exclusive as you e.g. can't have minimal groups and minimal trigger executions at the same time.

  • Confirmed Mentor: Michael Vogt

  • How to contact the mentor: Teams/Apt: deity@lists.debian.org or #debian-apt

  • Deliverables of the project: An architecture similar to the "External Dependency Solver Protocol" (EDSP) allowing different implementations (and hence strategies) to be used interchangeably starting with the current one and a second doing the minimal amount of work and instead trying to work closer together with dpkg.

  • Desirable skills: C++, Debian packaging experience, previous experience with APT & dpkg

  • What the intern will learn: Developing and maintaining software running on millions of computers, package management internals

Android SDK 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 a preferred platform for Android developers, and many Android SDK tools are included in Debian as part of the Android Tools and Java teams. 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. In combination with Replicant, this will make the most popular operating system in the world, Android, into a 100% Free Software platform.

There are many chunks of work to be done:

  • finish packaging all of the core development tools (lint, gradle-plugin, SDK Manager, etc.)
  • update android-tools and relevant pkg-java 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, emulators, Android Studio, etc.
  • make all Android Tools packages build reproducibly
  • improve package build systems to be more tightly integrated with upstream build systems
  • add Continuous Integration tests

  • package and improve related tools, like apktool, androguard, fdroidserver, drozer, etc.

Since this project is a large one, multiple mentors and students 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@debian.org> and apo on IRC, (add yourself! we had lots of student applications last year)

  • 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 is one GSoC project that is somewhat related: ?Reproducible builds for Debian and free software since the Android Tools should also build reproducibly. Replicant, the 100% free software Android ROM, is also working towards a 100% free software Android SDK.

Continuous Integration for all biological applications inside Debian

Description of the project: The Debian Med project has packaged a lot of http://blends.debian.org/med/tasks/bio. Some of these are containing a test suite but we want to approach a 100% coverage to increase the quality of those bio tools. In this project as many as possible autopkgtests should be added.

  • Confirmed Mentor: Andreas Tille

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

  • Confirmed co-mentors: other members of Debian Med team

  • Deliverables of the project: autopkgtests for biological packages of Debian Med team.

  • Desirable skills: The student should have a background in bioinformatics. Debian packaging skills are an extra plus but can be taught in the project run.

  • What the student will learn: Detailed insight into the bioinformatic tools inside Debian, Comparing and benchmarking biotools, Debian packaging skills, Writing tests

Cross Bootstrap

Cross Bootstrap: Automatically bootstrapping new and existing Debian architectures still is a difficult task with many challenging subproblems. Quite a few of them are suitable to be solved by a mentored student. Out of 22000 source packages in Debian, only 5000 have satisfiable cross Build-Depends. Figuring out which packages need changes to fix satisfiability issues is non-trivial from the currently available diagnostics. Improving the presentation of these issues using (to be developed) heuristics and integration into tracker.d.o would be a significant step towards solving them. Instead of work on metadata, working on the practical issues with cross building can be an alternative focus of a suitably skilled applicant. The overall goal of this project is to make cross building just work. This project is the continuation of several successful GSoC projects during the past years (see Related projects)

Debsources on mobile

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 developing a mobile version of Debsources.

A few directions can be taken to reach that goal. The first step will be allowing people using a mobile browser to view Debsources and its content comfortably (without zooming in and out to navigate). That can be done using mobile-compliant libraries such as Bootstrap. Later, an SPA (single page application) can be developed, that is, client-side javascript responsible for fetching data from our API and feeding it to templates (with a framework such as AngularJS). Third, a Phonegap/Cordova application can be written, allowing users to install it and benefit from more features, such as an integrated edition of the source files to produce patches. Today, Debsources on mobile doesn't provide any user experience better than Debsources on desktop, and a lot is to be done, that is why this project can take a few directions. We are open to new ideas, as long as a consensus is reached between the co-mentors and maintainable code is developed.

We can accept two students in this project, provided that we define two precise sets of goals that don't overlap.

  • Confirmed Mentor: MatthieuCaneill

  • How to contact the mentor: we can be reached through info@sources.debian.net, or on irc: #debian-debsources

  • Confirmed co-mentors: OrestisIoannou

  • Deliverables of the project:

    • A Debsources design that renders well on mobile, including the source code of any file served by Debsources.
    • A test suite for that design, integrated to Debsources' test suite.
    • According to where the project leads, either a mobile application (that compiles to Android, iOS, and more) or an hybrid SPA that makes Debsources faster or brings new features.
  • 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: HTML, CSS, Javascript, test-driven development. Knowledge of Python (our backend language) and PostgreSQL will also be considered.

  • What the intern will learn:

    • To begin from almost zero and deliver a mobile app/website, that works everywhere and is adapted to display the source code of all Debian packages in all programming languages.
    • Deal with complex client-side libraries (jQuery, Angular, Bootstrap, and possibly others).
    • Integrate code to an already existing Debian project, while not breaking anything (Debsources serves thousands of pages daily).

During the application period, we expect prospective students to get familiar with the Debsources codebase, and show their interest by sending patches, and discussing with us via IRC/email.

  • List of debsources bugs: http://deb.li/debsrcbugs

  • Newcomer (easy) bugs: http://deb.li/debsrceasy

  • To send us a patch you can you reply to the bug and attach the patch, create a PR on the github mirror, or send us the patch via email. Prefer the first two options in order to avoid doublework.

Ham / Amateur Radio Transceiver

Description of the project: Students applying for this project are invited to submit two applications, one under the GNU Radio project and another under the Debian Project.

The aim of this project is to make ready-to-run solutions for ham radio enthusiasts.

The typical use case is a ham who has a spare computer in his shack, he should be able to boot the computer from DVD or USB stick using the Debian Ham Radio Live Blend or the GNU Radio Live SDR and have a functional transceiver within a few minutes.

A student may not be able to do everything required for this project in one summer. We are looking for a student who can make any incremental improvement to bring us closer to this goal.

Here are some of the tasks that may be involved:

  • survey the existing GNU Radio samples for ham radio, many are listed on the HamRadio page of the GNU Radio wiki.

  • design user interface improvements for the samples to make them more intuitive to new users and traditional radio operators. Consider how they can interact with Hardware such as a VFO tuning knob, PTT microphone switch and even a morse key

  • look through the other packages in the Debian Ham Radio metapackage list and consider how they could interact with GNU Radio. In particular, we are interested in the use of message bus solutions, such as ZeroMQ or D-Bus - for example, GNU Radio could send alerts on the bus when incoming signals exceed the squelch threshold. GNU Radio could also receive events over a message bus, for example, patching GPredict to send Doppler shift information.

  • developing and packaging libraries needed to process digital voice transmissions
  • look at how one or more of the samples can be deployed as a Debian package so users can just install the package and have a working radio

Prerequisites

The following experience is highly desirable:

  • ham radio license
  • GNU/Linux skills (Debian or Ubuntu)
  • use of version control systems (Git)
  • C++ or Python or both

Mentor(s)

Application process

  • To apply, please introduce yourself on both the GNU Radio mailing list and the Debian Hams mailing list

  • Fill in the formal application for both GNU Radio and Debian
  • Pick some items from the list above or feel free to suggest another piece of work relevant to this theme. Give us a detailed, week-by-week plan for completing the task over the summer.
  • find at least one other member of the GNU Radio or Debian community who is willing to be a co-mentor on the project. Please try communicating with us over IRC or email and give us examples of your existing work on Github or elsewhere.

Improve the Debian mips and mipsel ports

The Debian mips and mipsel ports have been around for a long time. There are packages which could build and need some porting. Also, some of the recently uploaded packages stop building and we need to investigate what's causing the failures. The quality of Debian will be improved by fixing these problems. It is very common that a fix on one architecture is a similar fix on other architectures.

  • Confirmed Mentor: Anibal Monsalve Salazar

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

  • Confirmed co-mentors:

  • Deliverables of the project: mips and mipsel bug fixing.

  • Desirable skills: Debian packaging, patch upstreamming.

  • Related projects:

Improve the Debian mips64el port

Description of the project: The Debian mips64el port has been around for a short time. There are packages which could build and need some porting. Also, some of the recently uploaded packages stop building and we need to investigate what's causing the failures. The quality of Debian will be improved by fixing these problems. It is very common that a fix on one architecture is a similar fix on other architectures.

  • Confirmed Mentor: Anibal Monsalve Salazar

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

  • Confirmed co-mentors:

  • Deliverables of the project: mips64el bug fixing.

  • Desirable skills: Debian packaging, patch upstreamming.

  • Related projects:

Reproducible builds for Debian and free software

Description of the project: We want to provide Debian users with a verifiable path between the binaries we ship and their source code. With “reproducible builds” independent parties should be able to create byte-for-byte identical packages from the same source. ReproducibleBuilds are about trust, quality assurance, and having free software up to its promises. Good progress has been made over the course of the past year, but a good amount of work remain on individual packages, toolchain issues, infrastructure, debugging tools, and documentation.

  • 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)

  • There is room for more than one intern, probably we can mentor up to three people, as they are small and bigger tasks to work on:

    • (!) Improving reproducibility of Debian packages:

    • (!) Improving Debian infrastructure:

    • (!) Improve general documentation:

      • Document problems and known solutions for tools involved in building software. Other areas of reproducible-builds.org could also be improved. (This can only be a main project for Outreachy as GSoC requires code.)

    • (!) Improve test and debugging tools:

      • Improve diffoscope. Examples: allow users to ignore arbitrary differences, perform fuzzy-matching accross archives, finish parallel processing

      • Implement reprotest: a simple and easy way for anyone to test if a build give the same result in different environments.

      • Improve tests.reproducible-builds.org: allow more distributions to be tested easily, create web pages for all distros from the same codebased in conjuction with a db, improve the web design and user experience

    • (!) Help collaboration accross distributions

      • Design and implement a shared database for package status and common issues.

  • Desirable skills: We are a diverse team, ready to help with knowledge in many different areas. The following list of skills is both incomplete and too long, but anyway, useful skills are:

    • To improve Debian packages: basic understanding of how packages are made, a thrill for investigations, a taste for fun hacks.
    • Python for diffoscope and reprotest.
    • Perl for strip-nondeterminism.
    • Shell for tests.reproducible-builds.org.
    • Web design to enhance tests.reproducible-builds.org.
    • Basic web editing (Markdown, HTML) for documentation.
  • What the intern 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.
    • How to design easy-to-use development tools.
  • Related projects: https://reproducible-builds.org/

Specify security attributes for configuration file entries

Description of the project: In this Google Summer of Code Project we want to introduce a simple way for maintainers to specify the relevance of individual configuration options. When the specification and the default option changes during an upgrade, a tool will merge options to achieve better quality attributes such as security. The main focus will be on having a tool to validate security attributes in configuration files, e.g. inform users if options such as ?ServerKeyBits of the openssh-server configuration file are considered insecure.

  • Confirmed Mentor: Markus Raab

  • How to contact the mentor: markus@libelektra.org

  • Confirmed co-mentors: None

  • Deliverables of the project: (1) Implement a specification for important Debian packages such as the openssh server. (2) Implement a tool that can validate if a configuration file is secure according to the specification.

  • Desirable skills: Very good C programming skills.

  • What the intern will learn: You will get contact to people involved in the Debian project. You will learn about Debian upgrade mechanism, especially how conffiles and ucf work. The long-term aim is to have better configuration upgrade experience that also takes quality attributes into account.

  • Related projects: Libelektra

Improving voice, video and chat communication with free software

Description of the project: have a look through the project ideas at project.freertc.org. Filter the list using the tags for programming languages you are most familiar with (for example, C, C++, Python, Java, PHP). In your application, specify which of the ideas you would like to work on. Some of these are only small projects and you will need to propose doing more than one of them during the summer.

  • How to contact the mentor: join the Free RTC mailing list and send a message introducing yourself

  • Confirmed co-mentors: Do you know anybody who is willing to be part of the mentoring team? If so, please ask them to contact me.

  • Deliverables of the project: completing one or more of the issues in project.freertc.org

  • Desirable skills: At least one of C, C++, Java, Python, ?JavaScript

  • What the intern will learn: helping people to avoid using proprietary communications tools like Skype, Viber and ?WhatsApp. Learning about SIP, XMPP and peer-to-peer technology.

Mentoring team

Name

Email

Comment

Alexandr Akulich

akulichalexander@gmail.com

TelepathyQt Developer

Ingo Bauersachs

ingo@jitsi.org

Jitsi Developer

Boris Grozev

boris@jitsi.org

Jitsi Developer

Iain Learmonth

irl@debian.org

Debian Developer

Juliana Louback

juliana.m.louback@gmail.com

Java/Python/JS Developer

Bruno Magalhaes

bfmags@gmail.com

Java/Python/JS Developer

Tristan Mahe

tristan.mahe@gmail.com

VOIP Engineer/Developer

Daniel-Constantin Mierla

miconda@gmail.com

Kamailio/C Developer

Daniel Pocock

daniel@pocock.pro

Debian Developer

Gaurav Saini

gauravsaini03@gmail.com

Javascript/VOIP Developer

Support for KLEE in Debile

Description of the project: KLEE is a dynamic analysis tool that systematically and automatically executes a program along as many as possible execution paths. This is called symbolic execution. It automatically generates inputs driving the program along each of the paths. In this way it can automatically detect an error such as a program crash along a path. KLEE targets C and C++ programs.

The goal of the project is to integrate KLEE into the Debile system.

For your application, we expect that the student will have a working instance of Debile deployed with automatic analysis of new packages uploaded in Debian. We also expects at least 2 pull requests on the project (new features, tests coverage, docker improvements, documentation, etc).

  • Confirmed Mentor: Sylvestre Ledru

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

  • Confirmed co-mentors: Clément Schreiner mailto:clement@mux.me clemux on irc.oftc.net

  • Deliverables of the project: A patch to Debile integrating KLEE

  • Desirable skills: The student should have a a background in symbolic execution. Some experience in Debian packaging is preferred.

  • What the student will learn: Automatic testing, Debian packaging skills, bug reporting.

Non-Coding Projects with confirmed mentors (Outreachy)

Following, explaining, strengthening the Web of Trust in the Debian keyrings

Description of the project:

I have been trying to get some interesting data out of doing historical analysis of our keyring, as well as adding some health checks on it, getting some indicators, maybe see whether we are heading in the right direction or there is something we are missing. I have been quite short on time, so my work has slept for months.

I am targetting getting two kinds of output: On one side, something useful for Debian, both as documentation regarding our practices and the aforementioned keyring health indicators. On the other side, I want to get some publishable results; for that, I have been working a bit with people at my universities (on one, I am a teacher, on the other, I'm a graduate student). But any extra pair of hands and eyes, plus a keen set of neurons linking them together, might prove very useful.

I have not shared much of my work even with the keyring-maint team itself (of which I am a part); I have at least one script that does interesting work, but is soooooo slow and suboptimal I'm rather interested in rewriting it from scratch. Anyway, I do have two bits of (very preliminary) output that can show approximately where I want this to be heading (both in Spanish, covering very similar work):

  • Poster presented at a local conference: "Strengthening the web of trust in a geographically distributed project' (oct 2015), http://ru.iiec.unam.mx/2767/

  • Corresponding presentation; very similar contents, in a presentation format, as well as a (partly cut :-( ) video are available at https://congreso.seguridad.unam.mx/2015/conferencia/fortalecimiento-del-llavero-de-confianza-en-un-proyecto-geogr%C3%A1ficamente-distribuido

  • Confirmed Mentor: Gunnar Wolf

  • How to contact the mentor: Mail: gwolf@debian.org

  • Confirmed co-mentors: Jonathan ?McDowell

  • Deliverables of the project:

  • Desirable skills:

    • Good familiarity with Git, GnuPG, and a scripting language we will use for data extraction (probably Ruby, as that's where we are starting from, but others are possible)
    • Basic to medium knowledge of the output processing tools (Gruff, Graphviz, LaTeX)
  • What the intern will learn:

    • Better understanding on how the trust keyrings in Debian are handled, particularly what migrations mean, and what is needed to keep them trustable
    • Some insight on technical, but also psychological and sociological tools on social networks (on the "traditional" sense, not regarding the social networks website companies ;-) )

Projects ideas without confirmed mentors

Creation of a DFSG-free variant of OVMF

/!\ Thanks to Microsoft, the TianoCore FatPkg is now 2-clause BSD licensed. So this project is no longer needed.

Description of the project: OVMF is a UEFI firmware for virtual machines: it is needed to create and run a virtual UEFI machine (for example with Qemu/KVM). Unfortunately, ovmf is non-free, due to the included FAT32 file system driver.

The goal of this project is to get a free FAT32 driver included OVMF in order to replace the non-free FAT32 driver and create a DFSG-free OVMF fork. This would allow to have ovmf variant in Debian main. There are some options for this:

  • Adapt and copy some code from a *BSD kernel (for instance, kFreeBSD) and port it to UEFI

  • Use the NetBSD rumpkernel (in NEW) framework to use BSD kernel drivers and port that to UEFI

  • Port the independently implemented FatFs library to UEFI

See bug #815618 for further details.

  • Confirmed Mentor: None.

  • How to contact the mentor: N/A.

  • Confirmed co-mentors: None.

  • Deliverables of the project: A modified ovmf package intended for Debian main (possibly expressed as a patch against source package edk2).

  • Desirable skills: The student should have some background in firmware programming (in C) and building and/or in file system driver development.

  • What the intern will learn: Debian packaging skills, firmware build tools, firmware driver integration.

This wiki page is copyrighted by its authors and editors and released under the terms of the Expat license