- Coding Projects with confirmed mentors
- Non-Coding Projects with confirmed mentors (Outreachy)
The main page is at Outreachy/Round15.
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.
Coding 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.
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.)
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.
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
Confirmed Mentor: Hans-Christoph Steiner
How to contact the mentor: firstname.lastname@example.org and _hc on IRC
Confirmed co-mentors: Kai-Chung Yan, email@example.com and seamlik 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 and Java code, Android development, an understanding of git and git-buildpackage.
What the student 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: Replicant, the 100% free software Android ROM, uses our packages to provide a 100% free software Android SDK.
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
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
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
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 and 2017 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.
Confirmed Mentor: Andreas Tille
How to contact the mentor: 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 879616, 879617, 879618, 879621, 879622 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
Description of the project: The Osmocom project is an umbrella project regarding Open source mobile communications. This includes software and tools implementing a variety of mobile communication standards, including GSM, GPRS, EDGE, UMTS, HSPA, LTE and their associated interfaces and protocol stacks. The debian-mobcom team is working on creating packages for all parts of the project. At the moment a version of OsmoBts (package osmo-bts), a Base Transceiver Station for GSM, and its dependencies are already part of Debian. But there are lots of others to follow, for example OpenBSC, a software implementation for the GSM/3GPP protocol stack.
Confirmed Mentor: Thorsten Alteholz
How to contact the mentor: email@example.com
Deliverables of the project: Debian packages for as much as possible software from the Osmocom project
Desirable skills: building software written in C; working with git; basic knowledge with Debian packaging
What the intern will learn: creating Debian packages from scratch; working with sbuild; doing basic QA stuff with lintian, piuparts; preparing patches for upstream; obtaining some insights in mobile networks
Application tasks: look at already available packages (libosmo*, osmo*), build one on your own computer, make the resulting packages available to others and discuss possible improvements
Reproducible builds for Debian and free software
Description of the project: We want to provide Debian users with a verifiable path between the binaries we ship and their source code. With “reproducible builds” independent parties should be able to create byte-for-byte identical packages from the same source. ReproducibleBuilds are about trust, quality assurance, and having free software up to its promises. Good progress has been made over the course of the past year, but a good amount of work remain on individual packages, toolchain issues, infrastructure, debugging tools, and documentation.
Confirmed Mentor: Mattia Rizzolo
How to contact the mentor: firstname.lastname@example.org (mapreri on IRC)
Confirmed co-mentors: Holger Levsen (h01ger)
**UN**Confirmed co-mentors: Ximin Luo (infinity0)
Deliverables: There is room for more than one intern, probably we can mentor up to three people, as there are small and bigger tasks to work on; each of it will have a specific mentor to follow the work:
Improve test and debugging tools:
Improve reprotest. Currently it does not work well - it has bugs and the configuration/usage is quite heavy. We'd like it to work much more smoothly, so that it can be used in more situations, including from inside higher-level scripts such as debrepatch.
Application tasks: clone the git repository, perform a full build of the program including tests, also in a Debian chroot. Choose a simple bug, work on it and sent a patch.
Improve our test infrastructure
Improve tests.reproducible-builds.org (?also some of these bugs): allow more distributions to be tested easily, create web pages for all distros from the same codebased in conjuction with a db, improve the web design and user experience
Application tasks: clone the jenkins.d.n git repository, set up a test infrastructure (ask for help as it's undocumented!), solve one of the issues listed above.
Improving reproducibility of Debian packages:
Analyzing why packages are not reproducible.
Fixes for identified issues: both their root cause and easy to use work-arounds; we recently identified a new source of randomness (build-path variations) and that will require quite some work on several toolchain packages
- Patches for individual Debian packages.
Application tasks: set up a Debian packaging development, including pbuilder/sbuild for build packages. Try to use reprotest with it. Fix one of the simple unreproducible packages and open a bug with a patch for it
Improving Debian infrastructure:
Help collaboration accross distributions
Design and implement a shared database for package status and common issues.
Desirable skills: We are a diverse team, ready to help with knowledge in many different areas. The following list of skills is both incomplete and too long, but anyway, useful skills are:
- To improve Debian packages: basic understanding of how packages are made, a thrill for investigations, a taste for fun hacks.
- Python for diffoscope.
- Perl for strip-nondeterminism.
- Shell and Python for tests.reproducible-builds.org.
- Web design to enhance tests.reproducible-builds.org.
- Basic web editing (Markdown, HTML) for documentation.
What the intern will learn:
- A lot about the many different ways software can be built.
- How to make build systems reproducible.
- Many details (that you might regret learning) about how our plumbing tools work.
- How to interact with other Debian developers and research suitable solutions with them.
- How to design easy-to-use development tools.
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
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
Testing Debian with OpenQA
Description of the project: In order to test the Debian-Installer, we have installed an instance of OpenQA, which can be seen here: https://openqa.debian.net/ This is a very recent development (as it started doing successful tests yesterday). There is a vast amount of work left to do, which means that an intern would have quite a lot of freedom on where they could focus. One thing that would be very useful would be to develop tests, and document the proceedure for doing so, such that people other than me (Philip Hands) can be encouraged to test the bits of Debian that they work on. This is in no way limited to Debian-Installer.
The fact that the Debian-Installer tests now work means that it is rather easy to test other things, since one has a ready source of cleanly installed disk images. Developing tests involves writing a script for the system to apply to screen (so, look for something on the screen, then type something, or mouse-click something if you see it). This is done in perl, but it only really needs the simplest of perl, so lack of perl experience is no barrier. Once one has a (partial) script, the test can be run, at which point the screenshots will be found to be missing, and one can then use the Web UI to select them. As said, the important part of this process would be ensuring that it is easy for others to join in and add their own tests, as that will move that bottleneck.
There are also ways of streamlining the test development process. Discovering whether people can develop tests on their own systems, and how they can take advantage of these time-saving techniques, and documenting that, would also be very useful.
There are many other aspects of this project that are available for an intern to branch into, depending on what interests them most. We have a jenkins instance creates test images for Debian-Installer -- it should be able to trigger tests on OpenQA, and accept results back. This requires some scripting and co-ordination between systems. The CD team make daily images. At present we are probing to see if new images exist, but it would be better if they could trigger tests. User authentication of OpenQA is currently relying on OpenSUSE's single-sign-on, so this needs to be switched to using sso.debian.net or some such. etc. etc. This is a work in progress, so some of these points are likely to be addressed before the intern joins the team, but every fix is likely to throw up two new issues for quite a while, so there is plenty to do.
Confirmed Mentor: Philip Hands
How to contact the mentor: email@example.com or 'fil' on IRC (OFTC)
Confirmed co-mentors: Holger Levsen
Deliverables of the project: Documentation: for writers of new tests, and for people wishing to trigger tests from other systems. Demonstrations of the documented procedures working
Desirable skills: simple Perl scripting for writing the tests is needed, but should be easy to learn. The main skill we're looking for is a fresh perspective with which to notice which things don't work without cheating (i.e. using a root login on the server), and a willingness to work together in eliminating those cases.
What the intern will learn: Testing by hand is tedious and so often is not done comprehensively, so having the skills required to set up automated tests is useful in its own right. More important to Debian would be enabling others to do their own testing, as this should allow things to scale up to testing all of Debian. Being part of that will give opportunities to interact with developers across the project, using various parts of our infrastructure so this should be a good introduction to how the whole project works.
Application tasks: FIXME
Related projects: openqa from suse+fedora, ci.debian.net, jenkins.debian.net, tails testsuite
Non-Coding Projects with confirmed mentors (Outreachy)
Coordination of Attendees and Speakers Representing Debian in Open Source conferences
Description of the project:The main aim of the project is to coordinate the Debian newcomers, users, interns, maintainers and developers attending in open source conferences annually in order to widen the community.The open source conferences would be the great platform to collaborate with like minded people to work on projects.But we might lack in collaboration due to the less coordination.It would be also great opportunity for key signing parties and meet ups.I was representing Debian at the Open source summit, Japan and Open Source summit North America this year.We could manage to organize a Debian meet up at the open source summit, Japan whereas we couldn't make it at the open source summit, North America.
Confirmed Mentor: Jaminy Prabaharan
How to contact the mentor: mail: firstname.lastname@example.org
Deliverables of the project: Collaborating the people attending open source conferences.Managing the Debian bursary effectively in order to help them attend conference if they face any financial issue.
Desirable skills: Good communication and coordinating skills.
Application tasks: Please contact the mentor.
Improving Documentation in Debian
Description of the project: The goal of this project is to verify and improve the documentation and the website content in Debian. Due to its sheer size and variety, many parts of the Debian wiki and websites are in dire need of upgrades and fact-checking. Another goal is to create beginner-friendly docs to various sections of the Debian project to encourage more first-time contributions.
Confirmed Mentor: Keerthana Krishnan
How to contact the mentor: email : email@example.com
Confirmed co-mentors: Abel L. Mbula (email : firstname.lastname@example.org)
Deliverables of the project: Verify and improve the documentation and the website content in Debian.Upgrade and fact-check the wiki and websites. Create beginner-friendly docs to various sections of the Debian project to encourage more first-time contributions.
Desirable skills: Good communication skills and writing skills are necessary.
What the intern will learn: Improving the knowledge and understanding of the Debian ecosystem. Writing documentation for a large project. Understanding and improving the User Experience for Debian doc users
Application tasks: Not inviting any more applicants, thank you.
Survey of Real-time Communications (RTC) services in use
Description of the project: survey the free (like Ring or Jitsi), semi-proprietary (like Telegram) and proprietary (like Skype and ?WhatsApp) communications software that people use. Create a concise inventory of the compelling features of each service/software. Study the Distributed Hash Table used by the Ring project and propose ways that Ring could implement features found in competing products like ?WhatsApp and Telegram. Survey the problems that people have promoting these completely free solutions to their friends and families and provide specific strategies and tactics that will succeed.
Confirmed Mentor: Daniel Pocock
How to contact the mentor: use the debian-outreach mailing list to introduce yourself
Deliverables of the project: documentation and reports as described in the description above
Desirable skills: Written communication.
What the intern will learn: how to successfully engage users in a large communications network
Application tasks: send these things to me by private email only, do not publish them on your public blog or the mailing list
- devise 3 novel demonstrations that could be created (by software or manually) to help explain the dangers of meta-data
- write one blog article, each including at least one picture or diagram. Use one of the following three topics:
- what free real-time communications means to you
you meet a potential business contact in the elevator and want to exchange contact details. He asks if you use ?WhatsApp, but as it is not free software, you don't have ?WhatsApp. With less than a minute to explain, how do you respond?
- "10 things you didn't know about meta-data"
Related projects: RTC Quick Start Guide