The main page is at SummerOfCode2019.

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 debian-outreach mailing-list.

Approved Projects

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 stretch already includes the core Android SDK tools, enough to build some apps. The Debian Android Tools team is working towards the goal of having the entire Android toolchain and SDK in Debian. That means 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. This project is in conjunction with the Debian Java team, since many tools like gradle are for any Java software.

  • Confirmed Mentor: Hans-Christoph Steiner (UTC+2), hans@at.or.at and @_hc on IRC

  • Confirmed co-mentors:

  • 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/C++ and Java code, an understanding of git. Android development is preferable.

  • What the intern 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.

  • Application tasks: (simple tasks that could show your determination):

    • Find out what new/missing components (D8/R8? hidl-gen? sdkmanager?) and the location of their source code

    • build an Android app using only apt install android-sdk android-sdk-platform-23 android-sdk-helper, F-Droid is a good app to try

    • backport android-sdk-helper to stretch-backports

    • test Android Tools bash completion (e.g. for adb, fastboot, etc), file bugs if it doesn't work properly

    • anything else you think suitable.
  • Related projects: Replicant, the 100% free software Android ROM, uses our packages to provide a 100% free software Android SDK.

There are many chunks of work to be done, sorted in priority:

  • Package Kotlin, which is heavily used by Gradle and the SDK itself
  • Package the latest Android Target Platform Framework (WIP)

  • Finish packaging all of the core development tools (Install android-sdk and compare /usr/lib/android-sdk with the one downloaded from Google)

  • Update android-tools and relevant pkg-java packages to the latest upstream version

  • Improve android-sdk-helper

  • Update gradle to 5.x, which is the official build system for Android apps

  • Make all Android Tools packages build reproducibly
  • Add Continuous Integration tests

  • Improve package build systems to be more tightly integrated with upstream build systems
  • Package and improve related tools, like apktool, androguard, fdroidserver, drozer, libscout, qark, OWASP Dependency Check, etc.
  • Package new parts of the Android upstream source, including the NDK, emulators, Android Studio, 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: AndroidTools

There is also a blog post about contributing to this project here

The Debian Android Tools Team works with git and git-buildpackage: PackagingWithGit

Continuous Integration for biological applications inside Debian

Description of the project: The Debian Med project has packaged a lot of applications for bioinformatics. In 2016, 2017 and 2018 Outreachy students did a great job in adding autopkgtests to several packages. This is considered a big step for Continuous Integration for applications in bioinformatics. Due to the great success and the very positive response of the students a continuation of this effort to cover even more applications with sensible test suites should be done. It has turned out that it can be an extra challenge to debug and fix programs where the previously written tests have failed.

  • Confirmed Mentor: Andreas Tille

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

  • Confirmed co-mentors:

  • Deliverables of the project: Enhanced packages for bioinformatics covering whole workflows of users as best as possible

  • 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 intern will learn: Detailed insight into the bioinformatic tools inside Debian, Comparing and benchmarking biotools, Debian packaging skills, Optimising bioinformatics and other scientific tools

  • Application tasks: Pick one of these bugs 909706, 909707, 909708, 909709, 909710, 909711, 909713, 909715, 909716 or 909717 and try fixing it - asking the mentor for help is fine. This is on one hand proof that the students is able to understand Debian packaging and understands bioinformatics at a sufficient level

  • Related projects: SummerOfCode2016/Projects/BioToolsTesting, SummerOfCode2017/Projects/QA_BiologyApps, ?Continuous_Integration_for_biological_applications_inside_Debian

Debian Cloud Image Finder

Description of the project: The Debian Cloud team is moving forwarding and providing many images for different cloud providers and some variations. As the number of images grow we need to provide a way for users to easily find what they are looking for. This project aims to develop an image finder for Debian Cloud Team. We still do not have the cloud images published in a fixed place but we can work with the metadata file that each image will have in the near future. The idea is to develop a web application, where the backend should be written in Python + Flask and the frontend using Vue.js, Bootstrap and HTML. The GSoC intern will interact a lot with the Debian Cloud Team since we do not have strict requirements and they probably will be elicited and discussed during the project execution.

  • Confirmed Mentor: Lucas Kanashiro

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

  • Confirmed co-mentors: Bastian Blank <waldi@debian.org>

  • Deliverables of the project:

    • Web application
      • Frontend written in preferably Vue.js and make use of Bootstrap
      • Backend written in preferably Python using a proved framework like Flask (other languages need further co-mentors)
    • Data aggregation running in our CI pipelines (written in Python to match the rest of the existing toolset)
  • Desirable skills: Python, Flask, HTML 5, Javascript, Vue.js, Bootstrap 4

  • What the intern will learn: The intern will gain/improve their communication skill within the Debian community since we will interact a lot with it, and also improve their web development and python skills during the work.

  • Application tasks: We'd like to see your HTML and styling + UX skills. Since this is a project starting from scratch you will design and implement a "details page" for the cloud provider of your choice. The outputs of this application task are:

    • drawing the UX of the "Details page" (mock-up)
    • implementation of the proposed design using HTML/CSS/bootstrap

The idea that we have for a "Details page" is to provide access to the latest and older Debian images of that specific cloud provider, helping user in scenarios like these:

Keep in mind that you're free to propose whatever you want here!

Debian Continuous Integration

Description of the project: Debian Continuous Integration is a system that runs tests on Debian packages to assist with the process of quality assurance of the Debian distribution. It has gained quite a few features in the last couple of years, and now directly influences the Debian release process. In this project, the intern will work in improving the Debian CI user interface, both on the web and otherwise (command line etc) to make the interaction of Debian maintainers with the service more productive.

  • Confirmed Mentor: Antonio Terceiro (terceiro)

  • Confirmed co-mentors: Paul Gevers (elbrus)

  • How to contact the mentor:

    • IRC: terceiro, elbrus (OFTC, #debci)

    • email: terceiro,elbrus}@d.o

  • Deliverables of the project: improvements to the debci web interface, and deployment of those improvements to the main instance at ci.debian.net

  • Desirable skills: Ruby, shell scripting, HTML/CSS, git

  • What the intern will learn: besides working on the web user interface (Ruby/HTML/CSS), the intern will also learn about distributed data processing applications, message queues, producer/consumer, build systems, automated software testing, git, etc.

  • Application tasks:

    • Get debci up an running on your machine: read the instructions and post comments on issue #22

    • Send a merge request with an improvement to the debci web interface. You can pick one idea from the list that is marked as easy/quick, or do something else that you find interesting or useful.

Debian PHP Packaging

Description of the project: PHP Packaging in Debian is far from perfect and there are several areas that needs improvement related to packaging core PHP interpreter, extensions and PEAR packages.versions; b)

  • Confirmed Mentor: Ondrej Sury

  • How to contact the mentor: ondrej@sury.org, I would insist on regular 1:1 meetings (over videoconferencing software)

  • Confirmed co-mentors:

  • Deliverables of the project: Improve a Debian PHP ecosystem packaging tools

  • Desirable skills: Debian, Debian packaging, make (debian/rules is a Makefile), shell, automation, CI

  • What the intern will learn: PHP packaging is a quite complex and yet many people depend on those packages, you will learn how to package a complex programming language with vast ecosystem of extensions and libraries

  • Application tasks: package an unpackaged PECL extension

  • Related projects: http://tracker.debian.org/dh-php https://tracker.debian.org/pkg/php-defaults

There are many unpackaged PECL extensions that people regularly use or request to be packaged. The current system uses dh-php that automates many things, but it could be improved even more, so the packaging of a PECL extension is even more straightforward and simple, see debdry, gem2deb, dh-make-perl or pkg-php-tool.

The deliverables for this project would include:

1. packaged and uploaded PECL extensions for PHP 7.x, some examples: psr, zbarcode, mysqlnd-ms, inotify, protobuf, grpc, opencv, swoole, cassandra, vips, yaconf, rar, pinba, and perhaps others; this task might or might not include packaging and maintaining required libraries - some of those are not yet in Debian 2. a tool that would automate packaging a new PECL extension - something like gem2deb (let's call it pecl2deb) that would be able to use pecl command line tool to download the latest extension (stable, beta, etc...) and create basic skeleton for debian package 3. updated dh-php that would automatically extract upstream fields like description from the packages.xml and use those in substvars in the d/control file

Debian Patch Porting System

Description of the project: In 2017, I kick started a small project to automatically port security patches into Debian. Here, you can find the presentation here. Since then, the project has pretty much been abandoned. Let's try to put it back on its feet!

  • Confirmed Mentor: Luciano Bello (luciano@d.o)

  • How to contact the mentor: lbello@gmail.com, Hangouts.

  • Confirmed co-mentors: László Böszörményi (GCS) (gcs@d.o)

  • Deliverables of the project: In general, the goal is to improve the current situation of the project. Ideally, put it back online! Specifically, it can be one ore more of:

    • Improve the patching heuristics
    • Design and implement a modular patch finder
    • Design and implement a compiling life cycle.
  • Desirable skills: Debian, Debian packaging, make (debian/rules is a Makefile), Python, webcrawling, some front-end (optional)

  • What the intern will learn: Python and building automatization. How the Debian Security team works as well as collaboration with other distros and projects.

  • Application tasks: write a web crawler to download security patches from the security-tracker, the Debian repo, or from wherever you can get them. For example, take a look to the links in the CVE tracking list, and download patches linked there. Not every link is a patch and sometimes you need to get a bit deeper in the website to get it. It can be as simple or complex as you want! Extra points if it is modular.

  • Related projects: https://security-tracker.debian.org/tracker/ https://github.com/PatchPorting

Package Loomio for Debian

Description: Loomio is decision-making software designed to assist groups with the collaborative decision-making process. It is a free software web application, where users can initiate discussions and put up proposals. More details on Loomio could be found at loomio.org . By packaging of Loomio in Debian we could enable easy installation of Loomio on Debian. It would foster collaborative decision making entirely using Free Software Loomio. The idea is to package all the dependencies of Loomio and get Loomio easily install able on Debian. Loomio is mostly written in Ruby but also includes some ?CoffeeScript and Javascript. The interns need not explicitly need to know Ruby/CoffeScript, but knowing it a bit would surely help.

  • Confirmed Mentor: Abhijith PA

  • How to contact the mentor: abhijith@debian.org, bhe on OFTC

  • Confirmed co-mentors: Raju Devidas (rajudev@disroot.org, libregeekingkid on OFTC)

  • Deliverables of the project:

    • The deliverables of this project would be getting Loomio and its dependencies into Debian.
    • In the process Interns will also need to update few of the existing Debian packages.
    • If we make some patches during Packaging process, we will try to get them merged upstream into Loomio's codebase.
  • Desirable skills:

    • Well versed with Git.
    • Familiarity with using Debian or any of its Derivatives.
  • What the intern will learn:

    • How software gets delivered to end users by Debian and other distributions.
    • Software packaging for Debian and in the process will gain an insight on how it is done for other distributions.
    • You will learn git very well as it is used at each step through the process.
    • The intern will improve their communication skills by interacting with the larger Debian community.
  • Application tasks:

  • Related projects: links to some existing projects that are related.

Reproducible Builds

Reproducible builds are a set of software development practices that create an independently-verifiable path from source to binary code. See https://reproducible-builds.org/docs/definition/ for a full definition.

This project is about both Reproducible Builds in Debian as well as about Reproducible Builds in general and you have several choices about the area(s) you get to work to improve on. See below.

  • Confirmed Mentor: Vagrant Cascadian (outreachy), Holger (GSoC)

  • How to contact the mentor: vagrant@d.o / vagrantc on irc, holger@d.o / h01ger on irc

  • Confirmed co-mentors: lamby@d.o (depending on the deliverable), santiago@nyu.edu (for in-toto), mattia@d.o, holger@d.o / h01ger on irc

  • Deliverables of the project: either:

    • improve diffoscope (to find out how/what is part of the deliverables)
    • fix key packages (upstream and/or in Debian)
    • overhaul tests.r-b.o website, both structural and layout wise
    • integrate OpenSUSE/Fdroid results in tests.r-b.o
    • work on rebuilders (with in-toto/NYU's work)
  • Desirable skills: communication via email and irc, git, python, maybe shell.

  • What the intern will learn:

    • how to interact with the Debian community
    • how to interact with other free software communities (both upstream as well as other distros)
    • contributing to a project which is seen as interesting, challenging and important by many
  • Application tasks: provide a patch for fixing some unreproducibly and file a proper bug about it (requires to find out what that means and how to do it.) - or do a meaningful contribution to tests.r.b.o (same)

  • Related projects:

Please note that below projects aren't approved yet. Please don't apply for non-approved projects. The list of approved projects is available at Approved Projects

Unapproved Projects with confirmed mentors

Laniakea Software/Package Web Viewer

Description of the project: Laniakea is a suite of tools designed to make management of Debian derivatives easier. While originally developed for the Tanglu derivative, it is now primarily used in Purism's PureOS. Laniakea either provides its own tools (e.g. for building packages or synchronizing them) or wraps existing tools widely used in Debian under one web and CLI interface (e.g. dak, Britney, ...). Currently, Laniakea is undergoing a Python 3 rewrite. For this project, you would work primarily on the web application module that displays a software catalog, similarly to what packages.d.o provides, but with the added benefit of including application information alongside packages using AppStream data. The end result could look similar to Fedora's package overview mixed with the look and feel of Flathub, but for Debian packages.

  • Confirmed Mentor: Matthias Klumpp

  • How to contact the mentor: mak@debian.org, IRC: ximion (I will insist on very frequent IRC/chat communication)

  • Confirmed co-mentors: -

  • Deliverables of the project:

    • Create a web software/application viewer based on Laniakea
    • Find & improve missing elements in AppStream

    • Fix missing pieces in Laniakea, write tests
  • Desirable skills: Python 3 (required), usage of the Flask web framework, C programming (optional)

  • What the intern will learn:

    • Building a web application with Python
    • Deeper knowledge about how the Debian archive works
    • AppStream / software store solution on Debian

    • Interacting with different communities, in Debian and Purism
  • Application tasks:

    • Write a small Flask web-app that displays applications currently installed on your system (to find applications, this Gist may help you.)

    • Write basic tests for the application
  • Related projects:

New Contributor Wizard

Description of the project: New Contributor Wizard is a federated GUI software for Linux which can help any person start learning about Open Source and all the essential skills required to contribute to it. The project's development began during the Google Summer of Code 2018 and was built using Kivy. It now has 7 different topics and each has modules for both learning and experimentation. There's a parser built to convert JSON into Kivy GUI and hence is very efficient in making learning modules. Please read more about the software here https://salsa.debian.org/new-contributor-wizard-team/new-contributor-wizard

  • Confirmed Mentor: Looking for a DD to mentor this project. Please reach out if you are interested

  • How to contact the mentor: TBD

  • Confirmed co-mentors: Shashank Kumar IRC: realslimshanky | Email: abc@shanky.xyz

  • Deliverables of the project: Add new tutorials and tools in the software, Debian package for the software and optionally update package for Pypi.

  • Desirable skills: Python 3, Kivy, knowledge of Debian packaging (optional)

  • What the intern will learn: Intern to this project will learn about building GUI application using Kivy and packaging software for Debian and Pypi

  • Application tasks:

  • Related projects: Here is an example of a web application which contains similar modules for learning tools needed for open source contribution https://openhatch.org/missions/

Projects ideas without confirmed mentors

The following are project ideas which nobody has agreed to mentor - at this point it is unlikely that anybody will step forward to mentor them this year, and without a mentor they can't go ahead as projects, so we do not recommend submitting proposals for them.

Kotlin and friends in Debian

Description of the project: Kotlin is a JVM language inspired by Groovy and Python, aimed to complement and replace Java in many uses, and is gaining popularity mainly in Android development. Gradle Kotlin DSL is on the other hand competing with the more usual Gradle Groovy DSL, and we cannot package it for Debian until we have Kotlin in. The Kotlin compiler, unfortunately, is partly written in Kotlin (since an early 0.6 version), and depends on bits and pieces of IntelliJ IDEA, so bootstrapping it is non-trivial. We have packaged some of the dependencies already, but there’s still a lot of work to do.

  • Confirmed Mentor: TBA (_hc? andrewsh?)

  • How to contact the mentor: (mail, IRC, etc)

  • Confirmed co-mentors: TBA

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

  • Desirable skills: Building and packaging Java code, an understanding of git. Knowledge of various Java build systems would be very helpful.

  • What the intern will learn: Students will learn about building and packaging C and Java, and also about bootstrapping compilers.

  • Application tasks: TBD

  • Related projects: TBD