Contents
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:
email: pollo@debian.org
- IRC: pollo on #debian-clojure (OFTC)
Confirmed Co-Mentor: Utkarsh Gupta
How to contact the mentor:
email: utkarsh@debian.org
- IRC: utkarsh2102 on IRC (OFTC/Freenode/elsewhere)
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:
email: terceiro@debian.org
- IRC: terceiro on #debci (OFTC)
- @terceiro on Telegram
Confirmed co-mentors: Paul Gevers
How to contact the co-mentor:
email: elbrus@debian.org
- IRC: elbrus on #debci (OFTC)
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.
- Adding support for testing security uploads and Debian LTS. The work needed for this involves:
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:
FreedomBox enabled to send e-mails to its admin.
FreedomBox providing an e-mail exchange allowing its users to intercommunicate.
- within a controlled LAN.
- over the public internet (reachability).
- Improve.
Integrate Roundcube configuration in FreedomBox to easily use this own e-mail exchange.
- Enable anti-virus protection.
- Consumer-grade release.
- Review configuration. Fine-tune.
- Autodiagnostics.
- Anti-eavesdrop protection. (encrypted IMAP (aka imaps) access to e-mails).
- Thorough testing.
- Support communication with other exchanges (regular public e-mail).
- Site authentication (certificates and other credentials for trust by third parties).
- Enable anti-spam protection. An idea is to only allow encrypted emails signed by approved keys.
Import: Fetch emails from a 3rd party service provider, and to store them on FreedomBox.
- Bonus:
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.
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:
- Sw: exim, postfix, dovecot, roundcube, ...
There's a list of similar or not so similar projects (outside Debian) in our wiki section.
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).
Confirmed Mentor: AndreasTille
How to contact the mentor: tille@debian.org
Confirmed co-mentors: Nilesh Patra nilesh@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 bugs like 890788, 909713, 970309, 970312, 970404, 970597, 970598 or 970599 and try fixing it - asking the mentor for help is perfectly fine and actually recommended. This is on one hand proof that the student is able to understand Debian packaging and understands the actual topic at a sufficient level.
Recommended reading:
[MUST] Building in a clean chroot: any one of sbuild, pbuilder, cowbuilder. We recommend "sbuild".
Examples: freebayes, dazzdb, snap-aligner, ncbi-seg, bio-rainbow, maffilter
Related projects: SummerOfCode2016/Projects/BioToolsTesting, SummerOfCode2017/Projects/QA_BiologyApps, ?Continuous_Integration_for_biological_applications_inside_Debian, SummerOfCode2019/ApprovedProjects/CIforDebianMed SummerOfCode2020/ApprovedProjects/DebianMedQAGSoC and Outreachy Project Proposal: Quality Assurance and Continuous integration for applications in life sciences and medicine
* 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