The main page is at SummerOfCode2021.

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:

    • Chirayu Desai (UTC+5:30), chirayudesai1@gmail.com and cdesai on IRC

    • Andrej Shadura (UTC+2), andrewsh on IRC
    • Phil Morrell (UTC+1), emorrp1 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.

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

  • Mentors affiliation with Debian: _hc is a DD / cdesai is a DM.

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

We also have a list of issues that you could work on, see https://salsa.debian.org/android-tools-team/admin/-/issues?label_name%5B%5D=GSoC

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

  • Finish packaging Kotlin, which is heavily used by Gradle and the SDK itself
  • Finish packaging version 6 of gradle , which is the official build system for Android apps

  • 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

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

  • Improve package build systems to be more tightly integrated with upstream build systems (WiP)

  • 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

Clojure Build Tools in Debian

Description of the project: The current Clojure ecosystem in Debian, although functional, is still very young and is missing some build tools and core libraries. This project aims to fix this situation, mainly by packaging the clojure CLI and updating the Clojure runtime to use it, instead of using the current home-brewed scripts. If time permits, students will work on Debian QA tools to increase the quality of existing Clojure packages in the Debian archive.

  • Confirmed Mentor: Louis-Philippe Véronneau

  • How to contact the mentor:

  • Confirmed Co-Mentor: Utkarsh Gupta

  • How to contact the mentor:

  • Deliverables of the project:

    • Finished packages submitted to Debian unstable, both for new packages and updated packages.
    • Updated Clojure Packaging documentation.
    • Stretch Goal: new Clojure Lintian tags merged by the Lintian maintainers.
    • Stretch Goal: new Clojure autodep8 scripts merged by the autodep8 maintainers.
  • Desirable skills:

    • Git
    • Clojure
    • Perl (not required but a plus)
  • What the intern will learn:

    • Debian packaging using a git-based workflow.
    • Bug triaging using the Debian Bug Tracking System.
    • Hands-on knowledge of the Clojure Build tools and current best-practices.
    • Hands-on knowledge of the Debian QA tools.
  • Application tasks:

    • Setup a full Debian packaging development environment and learn the basics of Debian packaging.
    • Identify and package the missing dependencies to package clojure-cli

    • Package clojure-cli

    • Update clojure to use clojure-cli.

    • Update the Clojure Packaging Guide with information on how to use the new clojure-cli scripts.

    • Stretch Goal: write Lintian tags to make Clojure packaging in Debian more robust.
    • Stretch Goal: work to automate Clojure unit testing in autopkgtests using autodep8.

    • Stretch Goals: update older Clojure packages not built using leiningen or clojure-cli.

  • Related projects:

Debian Continuous Integration improvements

Description of the project: Debian Continuous Integration is Debian’s CI platform. It runs tests on the packages published in the Debian archive, and today is used to control migration of packages from unstable, Debian’s development area, to testing, the area of the archive where the next Debian release is being prepared. This makes it a crucial part of Debian’s infrastructure. This project involves implementing incremental improvements to the platform, making it easier to use and to maintain.

  • Confirmed Mentor: Antonio Terceiro

  • How to contact the mentor:

  • Confirmed co-mentors: Paul Gevers

  • How to contact the co-mentor:

  • Deliverables of the project:

    • Adding support for testing security uploads and Debian LTS. The work needed for this involves:
      • adding new parameters to the test submission API (frontend)
      • converring those parameters into arguments for autopkgtest (backend)
      • adding support for private tests, to support embargoed security uploads, which means that the existence of a security problem can only be publicized after a fix for it is made available
    • Debian CI currently requires Debian SSO client certificates for logging in, but that is deprecated. We need to migrate to logins using Salsa, Debian’s Gitlab instance.
    • Time permitting, we could use usability improvements throughout the web interface.
  • Desirable skills:

    • Ruby
    • Git
    • web (HTML/CSS)
  • What the intern will learn: the intern will be exposed to several topics, including but not limited to:

    • refactoring/reengineering of an existing codebase
    • automated testing
    • software reuse
    • web development
    • backend/background services
  • Application tasks:

    • Read the instructions on issue #22 to get debci running on your machine.

    • Pick an issue labeled as “newcomer” in the repository, and send a merge request to the repository on salsa.debian.org. You can also suggest some other improvement that we did not think of yet, or something that you find interesting or useful.

    • Fixes for coding style are usually easy to do, and are good issues for first time contributions for those learning how to interact with the project. Please don’t submit more than one of them, so that others applicants also have a chance. After you are done with the coding style issue, try making a different contribution.
  • Related projects: .

E-mail Server for FreedomBox

Description of the project:

FreedomBox is a pure Debian blend aiming to enable non-technical users to easy self-host a home server as a private online services cloud.

In order to replace third-party communication services that are data mining their users entire life, they will be able to host services themselves and use them at home or over the Internet through a browser or specialized apps.

E-mail is a basic and useful way of communication and providing an e-mail server in FreedomBox is a very old wish.

It is a more complex task than providing other services, so it deserves some proper project planning. You'll implement this plan, step by step, experiencing and learning the technical challenges and available free software solutions of/for in-the-wild communications, from different perspectives: reachability, authentication, security, transport, load, standards, etc.

You'll also learn and experience how to work together with others in an clean, organized manner, with state-of-the-art free software frameworks and tools, tests, code, reviews, continuous integration, and international UI and interaction.

  • Confirmed Mentor: Fioddor Superconcentrado

    How to contact the mentor: fioddor@gmail.com

    Confirmed co-mentors: Sunil Mohan Adapa, James Valleroy

    Mentors affiliation with Debian: JV is a DD, SMA is a core FreedomBox maintainer, FS is a FreedomBox maintainer.

    Deliverables of the project: A working E-mail server in FreedomBox. Details to be negotiated with the intern, but this should provide a reference:

    1. FreedomBox enabled to send e-mails to its admin.

    2. FreedomBox providing an e-mail exchange allowing its users to intercommunicate.

      1. within a controlled LAN.
      2. over the public internet (reachability).
    3. Improve.
      • Integrate Roundcube configuration in FreedomBox to easily use this own e-mail exchange.

      • Enable anti-virus protection.
    4. Consumer-grade release.
      • Review configuration. Fine-tune.
      • Autodiagnostics.
      • Anti-eavesdrop protection. (encrypted IMAP (aka imaps) access to e-mails).
      • Thorough testing.
    5. Support communication with other exchanges (regular public e-mail).
      1. Site authentication (certificates and other credentials for trust by third parties).
      2. Enable anti-spam protection. An idea is to only allow encrypted emails signed by approved keys.
    6. Import: Fetch emails from a 3rd party service provider, and to store them on FreedomBox.

    7. Bonus:
      1. Make it generic: Review the interaction between FreeomBox and the selected e-mail parts (MTA, etc), compare their interfaces with other popular alternatives and wrap the current implementations as particular cases of generic interactions.

      2. Privacy: Send and receive emails via Tor (aka .onion addresses), to allow two FreedomBox users to exchange emails without leaking metadata.

    Desirable skills:

    • Basic: Shell and Python programming. Instant Messaging (IRC). Organisation.
    • Bonus: Git, Django, HTML, CSS, Bootstrap, TDD, js/jQuery

    What the intern will learn:

    • Technology: The e-Mail stack, web (Django) application architecture, and the free software projects involved in them.
    • Technique: Likely, some additional state-of-the-art tools, languages and/or procedures.
    • Experience: The flow and internals of real life volunteered international free software development.
    • Wisdom: Hopefully gain awareness and criterium. Both, technical and regarding online privacy and its current status.

    Application tasks: Get and show familiarity with technical research and adaptability to project team, tools and procedures, and design/coding standards.

    • A draft merge request where FreedomBox installs a nullmailer (nullmailer or msmtp) allowing it to send notification e-mails.

    • or: Read the notes of previous attempts and provide a short, structured documentation explaining the system architecture (parts) and the technical challenges of an e-mail server. Format can be a file, a wiki page, a video, infographics...

    Related projects:

Packaging Caddy for Debian

Description of the project: Caddy is a modern webserver written in Go which doesn't bring the historical debts of Apache2 or Nginx. It has HTTPS enabled per default and Let's Encrypt support. Unfortunately, Caddy is not available as a Debian package yet. Quite a few Go dependency libraries are missing as well. So far, fetching a pre-compiled binary from Github is the only non-developer option to install Caddy on Debian. The goal of this Project is to change this by packaging Caddy and all required dependencies for Debian. The package should be reproducible and have continuous automated testing both in Salsa CI and via autopkgtests. As a result, we would get a reproducible binary that is built on trusted infrastructure and secures against supply chain attacks.

  • Confirmed Mentor: Jonas Meurer <mejo>

  • How to contact the mentor: jonas at freesources dot org, mejo on IRC

  • Confirmed co-mentors: Georg Faerber <georg>

  • Deliverables of the project: Caddy Debian packages that are built in a reproducible way

  • Desirable skills: Basic knowledge in Debian packaging, basic understanding of the Go ecosystem

  • What the intern will learn:

    • You will get better understanding of the Debian Packaging ecosystem including git-buildpackage, autopkgtest and Salsa-CI
    • You will learn to use the available tool chains and tests for reproducible builds
    • You will learn how static Go binaries are packaged and maintained in Debian
  • Application tasks: Package one Go dependency library

  • Related projects: https://go-team.pages.debian.net/packaging.html

  • Caddy ITP: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=810890

  • a Caddy dependency ITP: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=954793

Quality assurance for biological and medical applications inside Debian

Description of the project: The Covid-19 pandemic made it obvious that Free Software in medicine and biology can provide tools to care for global health. The Debian Med project has packaged a lot of applications used in medicine and biology. In previous Outreachy projects starting in 2016 until last year several packages got Continuous Integration tests. It turned out that these tests are extremely helpful to ensure the quality of the software in the focus of the Debian Med team. Besides testing single packages it needs to be verified that related sets of packages are playing well together and are packaged in a way that the user can expect the maximum performance out of the packages (for instance by ensuring that MPI features are used if available and the hardware features are used as best as possible).

* Getting in touch: Please subscribe to the mailing list and feel free to ask for help there. Mentors and co-mentors can be contacted at their email addresses mentioned above.

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 is available above.

Projects with confirmed mentors