The main page is at SummerOfCode2018.

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.

Projects with confirmed mentors

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

  • How to contact the mentor: [email protected] 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):

    • 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

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

  • finish packaging all of the core development tools (lint, SDK Manager, android update project utility, etc.)

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

  • add Continuous Integration tests

  • update androidsdk-tools to the Android Tools Team style, and update to latest upstream version

  • package new parts of the Android upstream source, including the NDK, target platforms, emulators, Android Studio, etc.
  • make all Android Tools packages build reproducibly
  • improve package build systems to be more tightly integrated with upstream build systems
  • package and improve related tools, like apktool, androguard, fdroidserver, drozer, etc.
  • Update gradle to 4.x, which is a dependency by the Android Gradle Plugin

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

Broadcast data from GPredict for other Ham Radio Applications

Description of the project: add code to GPredict so that it can broadcast real-time data about satellite visibility, location and doppler shift to other applications using messaging solutions such as D-Bus and Apache Qpid or other asynchronous messaging solutions based on protocols like AMQP. Example use cases for this project: an SDR application like gqrx might use the doppler shift information to adjust the VFO in real-time, a Raspberry Pi attached to an antenna rotator might run an application to receive data from Apache Qpid and move the antenna or dish.

  • Confirmed Mentor: Daniel Pocock

  • How to contact the mentor: mailto:[email protected]

  • Confirmed co-mentors: Applicants are asked to find one or two other developers, possibly somebody you know personally or somebody else from the free software community, who will support this project.

  • Deliverables of the project: patches against Gpredict or similar applications.

  • Desirable skills: Version control systems (Git), Build systems (e.g. autotools, cmake, Maven, Gradle), C programming, Python, asynchronous messaging/message queues

  • What the intern will learn: messaging and inter-process communication (IPC) skills valuable in a range of environments ranging from a ham radio station up to large financial networks

  • Application tasks: begin writing a patch for Gpredict or extending one of the Apache Qpid example applications to demonstrate your understanding of the topic

  • Related projects:

Clean Room for PGP and X.509 (PKI) Key Management

Description of the project: PGP is an important technology for a distributed online community like Debian. The PGP Clean Room aims to make it easier for new and existing participants to create and manage their PGP keys in a secure manner. An intern working on this project can focus on documenting the workflow, developing helper scripts to manage the filesystems for private key storage and developing a text-based UI using Newt (python-newt is preferred). Please also see Daniel's blog for the current status of this project.

  • Confirmed Mentor: Daniel Pocock

  • How to contact the mentor: use the pki-clean-room mailing list to introduce yourself

  • Confirmed co-mentors: Applicants are asked to find one or two other developers, possibly somebody you know personally or somebody else from the free software community, who will support this project.

  • Deliverables of the project: making scripts and documents for the clean room project

  • Desirable skills: Python, Newt, PGP, X.509, Cryptography, Shell scripting, User interface design

  • What the intern will learn: Python, Newt, PGP, X.509, Cryptography, Shell scripting, User interface design

  • Application tasks: try the project in KVM or VirtualBox. Make a small script that demonstrates your skills with Python (for example, making a window with python-newt).

  • Related projects: GnuPG

Click To Dial Popup Window for the Linux Desktop

Description of the project: The result of this project is that clicking a tel: link in an application such as Firefox can start a pop-up window with these elements in the GUI: the phone number to be called, a "Call" button that places a phone call, details about the country in which the phone number is registered and another button to save the number to an address book. The application is to be developed as a standalone Python script which will be invoked as a MIME handler. The script will not need to understand how to dial the phone calls: when somebody clicks the "Call" button, the script can run another script such as sipdial in reSIProcate.

Create a successor to the Telify plugin using WebExtensions

Description of the project: the Telify plugin for Firefox has not been updated for Firefox Quantum (WebExtensions API) and it doesn't have a free license (it is CC-BY-ND so it can't be included in a free operating system like Debian's main archive). The upstream web site has also gone away, it can be found here in the wayback machine / archive.org. There are similar projects like Skype-for-Chrome extension and TBDialOut for Thunderbird. Your goal is to explore the source code of all these extensions and develop a new extension using the ?WebExtensions API so that it will work in the latest versions of Firefox Quantum and Google Chrome.

  • Confirmed Mentor: Daniel Pocock

  • How to contact the mentor: mailto:[email protected]

  • Confirmed co-mentors: Applicants are asked to find one or two other developers, possibly somebody you know personally or somebody else from the free software community, who will support this project.

  • Deliverables of the project: a Firefox plugin similar to Telify

  • Desirable skills: Version control systems (Git), Build systems (e.g. autotools, cmake, Maven, Gradle), browser plugin development (Firefox or Chrome), ?JavaScript

  • What the intern will learn: browser plugin development, releasing a plugin, integration with telephone systems, free software licensing issues

  • Application tasks: find the source code for Telify and put it into a new repository on Github. Try to start creating a new ?WebExtensions plugin in Github.

  • Related projects:

EasyGnuPG Improvements

  • Description of the project: EasyGnuPG is a shell script that wraps GPG and tries to make it more accessible and more easy to use: https://github.com/dashohoxha/egpg In order to simplify things, it is opinionated about the "right" way of using GnuPG. Here are some improvements that can be done:

    • Rewrite EasyGnuPG (or parts of it) so that it is built with Python and GPGME (https://www.gnupg.org/software/gpgme/)

    • Implement a GUI to EasyGnuPG (maybe with Python).
    • Extend EasyGnuPG with scripts/commands that automate other common usage scenarios (for example keeping the master key on a card).
    • Write a Debian package for installing EasyGnuPG.
    Even completing some of them would be considered a success.
  • Confirmed Mentor: Dashamir Hoxha

  • How to contact the mentor: [email protected]

  • Confirmed co-mentors: (seeking co-mentors with experience in Python, GPG, DEB packages)

  • Deliverables of the project: To be defined later

  • Desirable skills: Python, GPG, Bash scripting

  • What the intern will learn: The desirable skills that he does not yet know

  • Application tasks:

    • Write a bash script for solving the problem of Towers of Hanoi.
    • Send a message signed and encrypted with GPG.
    • Write a simple GUI program with Python
  • Related projects:

Extracting data from PDF invoices and bills for financial accounting

Description of the project: there are various projects like invoice2data that attempt to extract data from PDF invoices such as phone bills. The aim of this project is to develop a complete workflow for discovering bills (in a directory, mail folder or with a browser plugin to extract them from web pages), storing them (a document management system, folder or Git repository), extracting relevant data (bill data, currency and amount) and saving the data in a format like cXML in the same document management system. It may be necessary to create a GUI window to help the tool 'learn' how to read a PDF, remember the placement of different data fields in the PDF and automatically extract the same fields next time it sees a bill from the same vendor.

  • Confirmed Mentor: Daniel Pocock

  • How to contact the mentor: mailto:[email protected]

  • Confirmed co-mentors: Manuel Riel

  • Deliverables of the project: script or scripts performing the functions required

  • Desirable skills: Version control systems (Git), Python, Regular Expressions

  • What the intern will learn: financial and accounting workflows, document management

  • Application tasks: make a small improvement to the invoice2data project and submit a pull request. Mention @dpocock in your pull request.

  • Related projects: discussion on stack overflow, PDFMiner

Firefox and Thunderbird plugins for free software habits

Description of the project: there are already several plugins for helping people think twice about visiting web sites they want to avoid. Let's take this concept further by helping people avoid non-free sites and recommending free alternatives. The plugins need to recognize non-free sites (for example, Doodle or Meetup) when they appear in the browser or in an email and encourage the user to use an alternative (for example, Framadate instead of Doodle). See this discussion thread for some initial ideas and suggested reading.

  • Confirmed Mentor: Daniel Pocock

  • How to contact the mentor: mailto:[email protected]

  • Confirmed co-mentors: Applicants are asked to find one or two other developers, possibly somebody you know personally or somebody else from the free software community, who will support this project.

  • Deliverables of the project: new plugins (or enhancements to existing plugins) for Firefox and Thunderbird

  • Desirable skills: Version control systems (Git), ?JavaScript, Firefox and Thunderbird plugin development, understanding of basic psychology and habits

  • What the intern will learn: plugin development skills, helping change user behavior and habits

  • Application tasks: find an existing plugin and make a small improvement to it

  • Related projects:

Install FreedomBox in a Container

Description of the project: FreedomBox is designed to be your own inexpensive server at home. It runs free software and offers an increasing number of services ranging from a calendar or jabber server to a wiki or VPN. The aim of this project is to install FreedomBox in a Docker container, using the docker-scripts framework: https://github.com/docker-scripts/ds

Successor of the Debian SSO Service

Description of the project: Bringing Debians SSO to next level (more to come later)

  • Confirmed Mentor: Alexander Wirt

  • How to contact the mentor: formorer@oftc | [email protected]

  • Confirmed co-mentors: I was a mentor in GSOC for a few times, but I will ask enrico to assist me

  • Desirable skills: Python or Ruby (web)development experience

  • What the intern will learn: tbf

  • Application tasks: tbd

  • Related projects: https://sso.debian.org

OwnMailbox Improvements

Description of the project: At least 8-10 lines describing what the project is about; it is really important to have a good description if you want to attract interns who are interested by the idea. This does not need to be a very technical description, but something that stirs interest and is complete enough to allow an intern to judge whether they want to work on the particular project or not. It does not need to be a complete road map either and does not need to explain all the tiny details and whatnot -- the mentor can tell that to interested applicants, or they can work out the exact details together.

Own-Mailbox is a personal email server you can run in your own home, with strong privacy protection measures integrated at its core. It provides self-hosted email addresses, and allows you to protect the content of your emails, and the meta-data, from mass surveillance.

  • Confirmed Mentor: Pierre Parent

  • How to contact the mentor: [email protected]

  • Confirmed co-mentors: Dashamir Hoxha ([email protected])

  • Deliverables of the project:

  • Desirable skills: Skills that the student has or is willing to develop. Remember, the interns do not have as much experience as the mentor.

  • What the intern will learn: At least 2-3 lines telling the applicants the skills they will develop and how they will improve Debian. Do not focus on the technologies, rather use something that could motivate the prospective interns to take on your project.

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

Recursively building Java dependencies from source

Description of the project: Many Java projects use a combination of JAR file dependencies from other Java projects. In some cases, third party JARs are also used to provide custom tools for the build process (e.g. custom ant tasks or maven plugins). Can the entire heirarchy of dependencies and build tools and their transitive dependencies all be built from published source code? If not, we can not be certain that a particular dependency JAR is clean, free of malicious code, easy to fix or adapt for future Java versions. This project aims to develop automated mechanisms for cataloguing the portfolio of Java libraries on sites like github and the Maven Central Repository, creating a database of dependencies, mirroring their source repositories, removing binary JARs from their source trees and trying to build them using symlinks to JARs found in Debian or built by the same recursive process. This project may be partially automated using a tool like Jenkins. Data for some of the dependencies can be harvested from Maven pom.xml files.

  • Confirmed Mentor: Daniel Pocock

  • How to contact the mentor: mailto:[email protected]

  • Confirmed co-mentors: Pranav Jain

  • Deliverables of the project: the ideal outcome will be a full suite of tools for automating this process: a user could insert the name of some JAR in a form, the tool would study the JAR, find the source, recursively build everything and inform the user whether or not the JAR they want to use can be built without any dependency on any JAR that is missing source code. Building individual components to help achieve the aims of this project would also be satisfactory. The student is not required to automatically correct individual Java projects that are completely unsuitable for automated builds (e.g. projects that can only be built in Eclipse).

  • Desirable skills: Java build tools (ant, maven, jenkins) and source repository tools (git, subversion)

  • What the student will learn: Effective use of Java projects involving a large number of dependencies. Using automated systems to orchestrate commands that are normally invoked manually.

  • Related projects: please see the work already completed on this topic by Andrew Schurman in GSoC 2014 (his application page, progress and Github repository

A calendar database of social events and conferences

Description of the project: There are a wide range of social events and conferences for free software developers, including large conferences like DebConf or FOSDEM and smaller events like MiniDebConf and hackathons. As well as the dates of the events, there are also dates for various deadlines, such as submitting a talk proposal or applying for a travel subsidy. Some projects have started trying to gather data about these events, such as LWN Calendar, Agenda du Libre, Grical and Freie Termine. This project will involve improving one of those existing systems or developing additional systems to help communities advertise their events and to help people discover events.

The page SocialEventAndConferenceCalendars provides more details about the requirements and architecture for this project.

It would be desirable if the work you do is generic enough that it can be used in the free software community but also for other communities, for example, tracking the events published by student clubs at a university or local community events in the city where you live.

If you like visiting events yourself then this is an exciting project to work on.

  • Confirmed Mentor: Daniel Pocock

  • How to contact the mentor: use the debian-outreach mailing list to introduce yourself

  • Confirmed co-mentors: Paulo Henrique de Lima Santana

  • Deliverables of the project: one or more of the following (some tasks are Python, some are Ruby, some are PHP, you can choose):

    • enhancing the code behind Agenda du Libre

    • enhancing the code behind ?Grical

    • enhancing the code behind Freie Termine

    • making a plugin for other community web sites to maintain calendars within their existing web site (plugin for Discourse forums, MoinMoin, Drupal, MediaWiki, WordPress, etc) and export it as iCalendar data

    • developing web-crawlers to find iCalendar data on sites
    • developing tools for parsing iCalendar feeds and storing the data into a large central database
    • developing tools for searching the database to help somebody find relevant events or see a list of deadlines for bursary applications
  • Desirable skills: Python, Ruby, PHP. Front-end web development skills may also be relevant (HTML, ?JavaScript, CSS)

  • What the intern will learn: how communities announce and share data about their social events.

  • Application tasks: learning about the iCalendar file format:

    • if you are a Ruby developer, send me (privately) your analysis and proposed solution for this bug

    • if you are a Python developer, send me (privately) your analysis and proposed solution for this bug

    • if you are a PHP developer, try to run the WPCall plugin for WordPress. Email me privately with your observations and a proposed enhancement to the code.

  • Related projects: UltimateDebianDatabase, LWN Calendar, Agenda du Libre, Grical, Freie Termine, Github-iCalendar issue feed, Nagios-iCalendar, Debian UDD/BTS iCalendar, Agenda Livre (pt-br)

Virtual LTSP Server

Description of the project: LTSP allows computers of a LAN to boot through network from a single server. One of the benefits of this is for example to cut down the administration and maintenance time of a classroom of computers (instead of installing, configuring and updating each of them, we do it only once). It also works on VirtualBox, if a bridged adapter is added to an ethernet interface and the promiscuous mode is set to "Allow All".

The aim of this project is to build vagrant scripts that start up automatically a standard VirtualBox LTSP server, including tools for easy configuration and customization. This can be useful so that teachers can have their own LTSP server installed on their laptop (it works well with fat clients).

Another option is to install a LTSP server in a Docker container, using the Docker Scripts farmework.

The student can attempt any of these tasks or both.

Projects ideas without confirmed mentors