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.

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.

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

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

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.

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.

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

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.

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.

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.

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.

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

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.

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.

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.

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.

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

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/

Creation of a DFSG-free variant of OVMF

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