- Approved Projects
- Unapproved Projects with confirmed mentors
- Projects ideas without confirmed mentors
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.
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), firstname.lastname@example.org and @_hc on IRC
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 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: email@example.com
Confirmed co-mentors: firstname.lastname@example.org
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
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: email@example.com, kanashiro on IRC
Confirmed co-mentors: Bastian Blank <firstname.lastname@example.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)
- Web application
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:
"i want to run debian 9 on microsoft azure, where do i need to go to run this vm via the web interface (https://portal.azure.com/#create/credativ.Debian9, https://portal.microsoftazure.de/#create/credativ.Debian9 for Azure Germany)"
"how do i run it via the cli client (az vm create --image credativ:9:latest $options)"
- "i want to run debian 8 on google compute engine, what is the exact url of this specific image version"
Keep in mind that you're free to propose whatever you want here!
Related projects: https://cloud-images.ubuntu.com/locator/
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)
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.
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: email@example.com, I would insist on regular 1:1 meetings (over videoconferencing software)
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
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 (firstname.lastname@example.org)
How to contact the mentor: email@example.com, Hangouts.
Confirmed co-mentors: László Böszörményi (GCS) (firstname.lastname@example.org)
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.
Package Loomio for Debian
Confirmed Mentor: Abhijith PA
How to contact the mentor: email@example.com, bhe on OFTC
Confirmed co-mentors: Raju Devidas (firstname.lastname@example.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.
- 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.
Understand basics of packaging by starting to read Debian New maintainer's Guide https://www.debian.org/doc/manuals/maint-guide/index.en.html
Study the various Ruby/Node packages within Debian, you can take a look at the package source codes at https://salsa.debian.org/
- Study the various packaging tools such as gem2deb, npm2deb, dh-make-golang and dh_make.
See if you could solve some bugs within Ruby Team preferably. https://email@example.com
Related projects: links to some existing projects that are related.
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)
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)
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: firstname.lastname@example.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
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: email@example.com
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
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