The main page is at SummerOfCode2020.

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: some test tasks that you want your applicants to complete during the application process. This helps us make sure the applicants are motivated to do the project, and to assess mentor/intern communication during the application step.

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

  • Mentors affiliation with Debian: _hc, andrewsh, seamlik are DDs / cdesai is a member of Debian Android Tools Team

  • 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, a very simple app is good for trying

    • 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

Architecture Cross-Grading Support in Debian

Description of the project:

Debian is well-known for its wide support for multiple architectures. We build the vast majority of our packages for all out architectures, and adding extra libraries or programs for another architecture is easy, supported directly by the packaging system. It's often even possible to directly run programs from an incompatible architecture by using qemu-user-static on a Debian system. (Ask me more about this at some point!)

However, despite all of this support it's still quite hard to do one thing in Debian - cross-grade a system from one architecture to another. Due to this, lots of people are still running older 32-bit "i386" systems on top of 64-bit hardware (as an example). It is possible to cross-grade, but it's currently a very risky manual process - it's not for the faint-hearted. This project would involve developing (and testing!) tools to make cross-grading a supported Debian feature.

  • Confirmed Mentor: SteveMcIntyre

  • How to contact the mentor: 93sam@debian.org, or Sledge on IRC

  • Confirmed co-mentors: Phil Hands, phil@hands.com or fil on IRC

  • Deliverables of the project:

    1. A tool to evaluate how feasible a cross-grade is (check for disk space, package availability, etc.).
    2. A tool to actually perform the cross-grade - keeping system and user configuration as much as possible. (Guillem: ISTM the bulk of this would ideally be done within apt and at most this tool would be a very thin wrapper over apt itself.)
  • Desirable skills:

    1. Debian
    2. Basic Unix/Linux skills - tracking things like users, groups, etc.
    3. A scripting language - python?, perl?, ruby?
    4. An understanding of how to use VMs for testing will be a great help!
  • What the intern will learn: Detailed insight into how a Debian system works, with background knowledge of potentially all kinds of technologies - storage and filesystem setups, authentication, VMs, qemu emulation.

  • Application tasks: Demonstrate how to set up and run a foreign-architecture binary on your existing system. Hint: busybox-static is an easy test case.

  • Related projects: cross-grading wiki page, kilobyte's crossgrade script

  • Mentors affiliation with Debian: DD

BLAS/LAPACK Ecosystem Enhancement

Description of the project: BLAS/LAPACK are important scientific computing libraries. There are many optimized implementations aside the standard netlib implementation. To make the BLAS/LAPACK backends switchable at runtime without any recompilation, the update-alternatives system is incorporated. To date, the mechanism is working well, but there are still some aspects that needs to be improved. For example, the

  1. documentation on this mechanism and how to maintain it;
  2. some new implementations are still not packaged yet;
  3. we need to update science team policy and add some lintian hints about BLAS/LAPACK to prevent people from falling into the pitfalls;
  4. we need to finish the deprecation of libcblas.so; and so on.
  • Confirmed Mentor: S├ębastien Villemot

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

  • Confirmed co-mentors: Andreas Tille

  • Deliverables of the project:

    1. better environment for BLAS/LAPACK users and upper layer applications.
    2. documentation about debian's BLAS/LAPACK ecosystem.
    3. new section about BLAS/LAPACK in science team policy.
    4. new lintian checks.
    5. getting rid of libcblas.so
  • Desirable skills:

    1. scientific computing background.
    2. C programming language and at least one scripting language, optionally FORTRAN.
  • What the intern will learn:

    1. how debian packaging works.
    2. in which way does debian differ from other distros.
    3. more familar with the fundamental linear algebra libraries.
  • Application tasks: Fix a bug in some of the relevant packages

  • Related project of GSOC 2019: https://wiki.gentoo.org/wiki/Blas-lapack-switch

  • Existing documentation https://wiki.debian.org/DebianScience/LinearAlgebraLibraries

Packaging and Quality assurance of COVID-19 relevant applications

Description of the project: The Debian Med project has packaged quite a number of packages that are relevant for investigating COVID-19. There is also quite a number of not yet packaged or recently developed Free Software that could turn a Debian system into a workbench for scientists and medical stuff to fight the corona pandemic. Since there is a big amount existing and new software writing tests and hunting down bugs is a larger task than the Debian Med team can manage (since currently team members are also occupied by other tasks).

Quality Assurance and Continuous integration for applications in life sciences and medicine

Description of the project: The Debian Med project has packaged a lot of applications in life sciences and medicine. In previous years Outreachy students did a great job in adding autopkgtests to several packages. Continuous integration in this field is very important to get reproducible results and ensure that all programs are working together smoothly. In the past it turned out that students did a really great job in not only writing tests but fixing the failures that were uncovered by failed tests. So that effort can be considered a great success for the Debian Med team. There was also very positive response of the students and some of them remained inside Debian - so the outreachy effort with similar tasks can be considered a full success.

  • Confirmed Mentor: Michael R. Crusoe

  • How to contact the mentor: michael.crusoe@vu.nl

  • Confirmed co-mentors: chuprikovalv@gmail.com, tille@debian.org

  • Deliverables of the project: Continuous integration tests for all Debian Med applications (life sciences, medical imaging, others), Quality Assurance review and bug fixing

  • Desirable skills: Background in bioinformatics, medical imaging could be an advantage, but interest in scientific software and reading relevant documentation and papers might be sufficient. Debian packaging skills are an extra plus but can be taught in the project run.

  • What the intern will learn: Detailed insight into the software maintained by the Debian Med team, bug triaging in scientific software, Debian packaging skills, optimising bioinformatics and other scientific tools

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

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

Upstream/Downstream cooperation in Ruby

Description of the project: The Debian Ruby team has a lot of experience in package Ruby projects for Debian. During this work, they identified several issues in upstream codebases that makes it more difficult to build a Debian package out of Ruby gems. This project has two goals: 1) raise awareness of those issues among upstream maintainers in the Ruby community, so that the lifes of Debian maintainers, and of distribution maintainers in general, is easier; and 2) provide tools to automatically detect those issues, and fix them if possible.

  • Confirmed Mentor: Antonio Terceiro

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

  • Confirmed co-mentors: David Rodriguez

  • Deliverables of the project:

    • A guide for rubygems.org on good practices for upstream maintainers
    • A tool that can detect as many problems as possible, and if possible, fix them automatically

      • Packaged and released in rubygems.org
      • Packaged and releases in the Debian archive
      • good documentation, specially instructions on how to add it to upstream CI pipelines (travis, github, gitlab etc)
      • the tool is initially targetted at Ruby, but should be designed as to be extensible for other languages. in special, try to make it easy for people who don't do Ruby to add support for their favorite language.
  • Desirable skills:

    • Debian Ruby packaging
    • Ruby programming
    • Good online communication skills (IRC, email)
  • What the intern will learn: the intern will learn good practices for packaging Ruby projects upstream (i.e. for rubygems) that make the life of downstream packagers (Debian, but also all other GNU/Linux distributions) easier, and how to avoid the practices that cause problem. They will also learn how to package and release a tool by themselves.

  • Application tasks:

    • to be defined
  • Related projects:

  • Mentors affiliation with Debian: AT is a DD, DR is an upstream maintainer for the Ruby toolchain

Systemd unit translator

Description of the project: systemd unit is a popular declarative format for defining services. As systemd gains widespread adoption among the GNU/Linux distributions, many upstream projects start to ship only systemd units. To make possible that all the init systems in Debian leverage systemd units, a translator is needed to be developed.

Systemd units are written in standard Microsoft ini files, and have many parsers available. In this project, development will be centered around OpenRC in Debian, which already ships a LSB init script translator. After parsing a systemd unit, equivalent systemd features in OpenRC, cron, xinetd, etc. will be identified and translated accordingly.

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.

Please note that below projects aren't approved yet. Please don't apply for non-approved projects. The list of approved projects will be available once evaluation is done by the admins.

Unapproved Projects with confirmed mentors

Develop and implement Hotword App for Debian Desktop and Create Packages

Description of the project: A hotword voice activation application is currently not available on the Debian desktop. A number of projects use the solution Snowboy, which is only partly freely licensed. Alternatively there is a library available from the Mycroft project, which is still missing some features and is not easily portable. It is your task to develop a hotword library and app for Debian that is fully functional and ensure it integrates with FOSS voice assistants such as SUSI.AI.

  • Confirmed Mentor: Norbert Preining

  • How to contact the mentor: email (during GSoC: daily scrum emails, weekly meetings, monthly blog posts)

  • Confirmed co-mentors: Quan Nguyen

  • Deliverables of the project: As the final outcome there should be a Debian package that provides the hotword functionality in Debian and enables the user to train the hotword recognition of their system as well as to enable the user to contribute their voice to FOSS projects (e.g. SUSI.AI).

  • Desirable skills: Python, Deep Learning Frameworks, Debian, Debian packaging, make (debian/rules is a Makefile), shell, automation, CI, Java

  • What the intern will learn:

  • Application tasks:

  • Related projects: https://github.com/MycroftAI/mycroft-precise

  • Mentors affiliation with Debian: DD

Create a User Interface for ls32, Add Bluetooth Support and Create a Debian Package

Description of the project: Ls32 is a Python app to control LED badges. Currently there is no user front-end for the project. It is your task to create a user desktop frontend similar to FOSS projects on Android like Badge Magic and extend the feature set to match existing application as well as add Bluetooth support and provide a Debian Package.

  • Confirmed Mentor: Norbert Preining

  • How to contact the mentor: email (during GSoC: daily scrum emails, weekly meetings, monthly blog posts)

  • Confirmed co-mentors: (TBA)

  • Deliverables of the project: User-Frontend, Bluetooth support, Debian Package, documentation

  • Desirable skills: Debian, Debian packaging, make (debian/rules is a Makefile), shell, automation, CI, Python, Web Technologies, Hardware knowledge

  • What the intern will learn:

  • Application tasks:

  • Related projects: https://github.com/jnweiger/led-name-badge-ls32

  • Mentors affiliation with Debian: DD

Packaging Open Event Solution and Dependencies for Debian

Description of the project: Open Event is a FOSS event management solution with a Python backend and an EmberJS frontend. In the project participants will package the various components of the project (server, Python interface library, client, etc) for Debian and integrate it into the system. Resolve issues in the project to make it fully functional and collaborate with the team during the summer to enhance features.

  • Confirmed Mentor: Norbert Preining

  • How to contact the mentor: email (during GSoC: daily scrum emails, weekly meetings, monthly blog posts)

  • Confirmed co-mentors: Areeb Jama

  • Deliverables of the project: Debian Packages of Open Event components, improved event solutions with major bugs solved during summer.

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

  • What the intern will learn: 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:

  • Related projects: Open Event

  • Mentors affiliation with Debian: DD

Add Pocket Science Lab Apps to Debian, Improve Feature Set and Provide Autobuilds for Debian Packages

Description of the project: The Pocket Science Lab is an Open Hardware that comes with a basic desktop application in an early stage version. There is a prototype Debian package available that was generated semi-automatically. The goal of the summer project is to further develop the application to make the hardware fully functional on the Debian desktop and to fully automate the package build. The frontend used for the application is Electron. The student should also collaborate with other Debian members in order to include Electron in Debian.

  • Confirmed Mentor: Norbert Preining

  • How to contact the mentor: email (during GSoC: daily scrum emails, weekly meetings, monthly blog posts)

  • Confirmed co-mentors: Padmal M.

  • Deliverables of the project: The outcome of this summer project should be a well-tested PSLab desktop version for Debian that is automatically built using CI tools. In order to achieve this goal the student has to develop the missing bits and pieces including creating frontend and adding features to the Python backend of the project.

  • Desirable skills: Debian, Debian packaging, make (debian/rules is a Makefile), shell, automation, CI, Python, Electron, Web Technologies, Hardware knowledge

  • What the intern will learn:

  • Application tasks:

  • Related projects: PSLab Desktop

  • Mentors affiliation with Debian: DD

Privacy Aware Personal Assistant Integration into the Debian Desktop

Description of the project: Personal assistants (Hey Google, Alexa, Siri, Cortana) are omnipresent on desktops and mobiles, but conspicuously unavailable on most Linux distributions and desktops, Debian not being an exception. SUSI.AI is a privacy aware, open source personal assistant targeting desktops, mobiles, as well as smart speaker devices.

In the project participants will work on integrating the SUSI.AI personal assistant with the main desktop environments (DE) available in Debian, in particular Gnome and KDE, optionally some more DEs. Integration means support for DE specific skills or actions to be executed using voice commands and specifically support for features such as desktop search.

  • Confirmed Mentor: Norbert Preining

  • How to contact the mentor: email (during GSoC: daily scrum emails, weekly meetings, monthly blog posts)

  • Confirmed co-mentors: Michael Christen

  • Deliverables of the project: At the end of this project the user is able to control major functionalities of the Debian desktop through voice after the installing the relevant packages. The user should also be able to configure the SUSI Voice App through a graphic interface.

  • Desirable skills: Debian, Packaging, make (debian/rules is a Makefile), shell, automation, CI, UX, Java, Javascript

  • What the intern will learn: The intern will learn how desktop environments are handled in Debian, how packaging works, and how to develop plugins for major desktop environments

  • Application tasks: Write a SUSI.AI skill, get SUSI.AI running on your computer, develop a simple plugin for your favorite desktop environment

  • Related projects: SUSI.AI, SUSI.AI Github Web Client, SUSI.AI Github Linux client, SUSI.AI Server

  • Mentors affiliation with Debian: DD

Packaging SUSI.AI and dependencies for Debian

Description of the project: Personal assistants (Hey Google, Alexa, Siri, Cortana) are omnipresent on desktops and mobiles, but conspicuously unavailable on most Linux distributions and desktops, Debian not being an exception. SUSI.AI is a privacy aware, open source personal assistant targeting desktops, mobiles, as well as smart speaker devices.

In the project participants will package the various components of SUSI.AI (server, Python interface library, desktop client, etc) for Debian and integrating it with the init system.

  • Confirmed Mentor: Norbert Preining

  • How to contact the mentor: email (during GSoC: daily scrum emails, weekly meetings, monthly blog posts)

  • Confirmed co-mentors: (TBA)

  • Deliverables of the project: At the end of the project there should be functional Debian packages of the SUSI.AI voice client. A number of integration issues should be solved as part of the project. Basically, the voice apps should be working smoothly on Debian and basic configuration options should be available as GUI, which would also need to be developed collaboratively.

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

  • What the intern will learn: 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:

  • Related projects: SUSI.AI, SUSI.AI Github Web Client, SUSI.AI Github Linux client, SUSI.AI Server

  • Mentors affiliation with Debian: DD

Voice Republic Apps to Debian and Develop Setup for Autobuilds for Packages

Description of the project: Voice Republic is using a number of components already available in Debian. In this summer project it is your task to make the missing components and to create a setup for Autobuilds of packages of systems, that can easily be installed.

  • Confirmed Mentor: Norbert Preining

  • How to contact the mentor: email (during GSoC: daily scrum emails, weekly meetings, monthly blog posts)

  • Confirmed co-mentors: Mario Behling

  • Deliverables of the project: The outcome of this summer project should be a well-tested Voice Republic deployment using distribution packages on Linux systems such as Debian that is automatically built using CI tools. In order to achieve this goal the student has to develop the missing bits and pieces.

  • Desirable skills: Debian, make (debian/rules is a Makefile), shell, automation, CI, Ruby, Clojure, Web Technologies

  • What the intern will learn:

  • Application tasks:

  • Related projects: VoiceRepublic GitHub

  • Mentors affiliation with Debian: DD

Develop Debian AI Voice Assistant Blend

Description of the project: The goal of this project is to provide a Debian blend that includes the voice assistant SUSI.AI and integrates key features of desktop systems into the voice assistant. This feature could be useful for many use cases. It can be very useful for handicapped citizens or it could be used for hands-free tasks, games and fun activities.

  • Confirmed Mentor: Norbert Preining

  • How to contact the mentor: email (during GSoC: daily scrum emails, weekly meetings, monthly blog posts)

  • Confirmed co-mentors: Sanskar Jethi, Andreas Tille

  • Deliverables of the project: The outcome of this summer project should be a well-tested Debian version with a voice assistant that is automatically built using CI tools. In order to achieve this goal the student has to develop the missing bits and pieces including creating SUSI.AI skills for the Debian desktop and integrating them as well as programming scripts for automated build processes.

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

  • What the intern will learn:

  • Application tasks:

  • Related projects: SUSI.AI, SUSI.AI Github Web Client, SUSI.AI Github Linux client, SUSI.AI Server

  • Mentors affiliation with Debian: DD

Projects ideas without confirmed mentors