Practical Course – Contributing to an Open-Source Project

Chair for Logic and Verification

Overview

Module Bachelor-Praktikum (Practical Course for BSc students, IN0012)
Master-Praktikum (Practical Course for MSc students, IN2106)
Prerequisites Attend the kick-off meeting, send us a short motivation letter (details below), and have interest in open-source.
Organisation Maximilian P. L. Haslbeck, Kevin Kappelmann, Lukas Stevens, Prof. Tobias Nipkow

In this practical course, students learn how to contribute to a FLOSS (Free/Libre Open-Source Software) project both in theory as well as practice. We first get to understand and discuss the theoretical aspects of FLOSS projects, including licensing and philosophical aspects. Moreover, we discuss typical means of communication as well as tools and coding styles used in FLOSS projects. These discussions will be based on obligatory reading material as announced in our meetings and published below. Students will then critically assess the environment of an open-source community of their choice in a preliminary report and present their results.

In the second part of the course – the core part – students will practically apply the techniques learnt to contribute to their chosen FLOSS project. They will either support the community by closing open feature tickets and issues or by proposing and implementing their own idea for the project. In any case, communication with the community is integral and must be handled with care by the student. Students will meet biweekly with their supervisors to report about the progress of their project and their interactions with the community during this part. Finally, students will submit a final report about their experience and progress. They will critically reflect on their interactions with the community and the goals they achieved.

To supplement both parts, we will host a variety of guest speakers from academia as well as industry. They will provide unique insights into how FLOSS projects thrive, survive, communicate, and shape our society as well as politics.

Projects

Student Project Supervisor Preliminary Report Final Report
HĂĽbotter TypeScript Simon RoĂźkopf PDF PDF
Sextl Rust Chalk Project Lukas Stevens PDF PDF
Megdiche XMonad Manuel Eberl PDF PDF
Plainer VSCode Kevin Kappelmann PDF PDF
Goldstein VSCode Kevin Kappelmann PDF PDF
Stieger GitLab Fabian Huch PDF PDF
Klause Zulip Maximilian Haslbeck PDF PDF

Guest Speakers

Leah Neukirchen – Maintaining a Linux Distribution

Date: 17.11.2020, 14.00-15.00

Abstract: Most Linux distributions are built and maintained by volunteers. How are such projects organized and what are people really doing there? What motivates people to contribute to a distribution? Taking the example of the Void Linux distribution, of which I’ve been a maintainer of for over 6 years, I will try to give an insight into the daily doings of a distribution maintainer and share a few lessions I learned. Subsequently, I will try to answer the questions you have on this topic.

You can find her personal website here https://leahneukirchen.org/.

Stephan Kulla – Motivation in Open Source Projects

Date: 8.12.2020, 14.00-15.00

Abstract: How can you find volunteers for your open source project? How can you motivate them to work with you on the vision of your project? In this session I will share my experience from 10 years of community building in the education project serlo.org. I will also answer your question about this topic.

You can find his personal website here http://kulla.me/.

Nagarjuna Gadiraju – The Contrasting Development Paradigms of Free and Proprietary Software

Date: 12.01.2021, 14.00-15.30

Abstract: I will conduct a discussion on the topic: “The Contrasting Development Paradigms of Free and Proprietary Software”. The practices followed by these two communities will be distinguished from each other with examples. Along the way I will introduce how the historical process of making is recorded helping us to see the traces of every footstep of each developer, how collaborative construction of software was extended to become a model of knowledge creation, sharing and peer reviewing in domains other than software as well. Depending on the time, I may also talk about the impact of free software philosophy in the policy making in the European Union.

You can find his personal website here https://gnowgi.org/.

Vishnu K.S. – How to build a profitable business around your open-source project

Date: 02.02.2021, 14.00-15.00

Abstract: There are many ways to generate revenue from an open-source project. From solo developers making a couple of thousands of dollars every month through donations to companies making millions of dollars through enterprise sales. We explore different models and hopefully inspire some of you to start your own company around your next open source project. As a case study, we examine the business model of the Zulip open source project in detail.

You can find his personal website here https://vishnuks.com/.

Melanie Rieback – Post-Growth Entrepreneurship

Date: 16.02.2021, 14.00-15.30

Abstract: In the Information Age, new technologies and data-gathering power growth and change. IT companies are addicted to exponential growth. But is this good for our planet, our society, and ourselves? And what are the costs for this growth in terms of security and privacy? In recent years social entrepreneurship claims to offer an alternative – but something still doesn’t feel right. As the founder of the world’s first not-for-profit computer security consultancy company, Melanie Rieback’s talk will combine her practical experience building “nonprofit businesses” with the macroeconomic theory of “post-growth” economists like Tim Jackson and Kate Raworth. This talk will question everything that you know about entrepreneurship, provide practical tools to build something different, and then offer you a blue pill and a red pill. Can you go back to “business as usual” again?

For a bio of Melanie see https://radicallyopensecurity.com/team/MelanieRieback/.

Schedule

Our meetings take place Tuesdays 14:00-16:00 on BBB.

Tuesday 03.11.

You will get the chance to introduce yourself to your peers. We then give a brief overview of the course structure, the grading scheme, and the material you will have to prepare for next week. Slides

Summary
Reading Material
  1. What is FLOSS? What is Free Software? What is Open-Source Software? A short history of free software
  2. How does a FLOSS workflow look like? How can I contribute?
  3. How to start a FLOSS project? What do I need to consider?
  4. How does a healthy community look like? How can I grow and foster a community?
Activities
  1. Git primer
  2. Contribute to the First Contributions project.

Tuesday 10.11.

We will discuss the reading material and activities assigned to you last week.

Summary

You can find the summary on our Rocket Chat channel.

Reading
  1. How to maintain a FLOSS project? How do I communicate? How to distribute work?
  2. How to write a good README. How do I communicate the purpose of my project?
  3. What licenses are there? How to choose the right license for my project?
  4. How to set standards for contributors? Writing a CONTRIBUTING file
  5. How to create a safe-space for my community? Writing a CODE_OF_CONDUCT file
Activities
  1. Create your own repository according to the best practices you just learnt.
  2. Add the link to your repository in our shared pad (link to pad on Rocket Chat) by Saturday night.
  3. Assess the repository of one of your peers as assigned to you via e-mail starting from Sunday. Create a pull-request or issue at their repository suggesting further improvements.

Tuesday 17.11.

In the first half, we will start off with a presentation by Leah Neukirchen talking about her experiences as a maintainer of FLOSS projects. There will be time for follow-up discussions. In the second half, we will discuss the reading material and activities assigned to you last week.

Summary

You can find the summary on our Rocket Chat channel.

Activities

Write the preliminary report and prepare your presentation until our next meeting in two weeks.

Tuesday 01.12.

Participants will hand in their preliminary report and give short (10 minutes) presentations about their project of choice and their findings in the resarch conducted for their preliminary report. There will be time for direct questions after the talks and a general discussion at the end of the session.

01.12 - 15.03.

Participants are working on their project while meeting biweekly with their supervisors and reporting on their progress with a short report (around half a page). There will be sessions with guest speakers throughout the project phase. Following the guest speaker session, there is time to hang out and discuss ongoing experiences amongst the participants.

15.03. - 21.3.

Participants will hand in their final report and give short (10 minutes) final presentations about their open-source project work experiences.

Credits and License

The course structure is inspired by the FOSS development course at the Australian National University. Our course is free software: the course template is officially listed on the teaching open source website. The repository can be found here.