OSDC - Open Source Development Course

In this course, participants will learn and practice how to build, maintain, and contribute to open source projects.

This is primarily a practical course with lots of hands-on assignments.

Why this course?

Both in the industry and in academy use an enormous amount of open source code. Many of these organizations also publish some of the code they write under some OSI approved license.

These projects need development and maintenance work.

These projects often lack testing.

Unfortunately only a small subset of the people know how to contribute to Open Source projects. This is a much needed skill, both in industry and academia.

In addition many small utilities and libraries are developed in research labs and in departments of corporations, but in most cases these projects remain inside the local environment. Even other labs and other development teams don’t know about them and thus they develop their own partial solution for the same problem. This happens because of lack of communication, lack of a common platform to store these projects, lack of practice. The Open Source method taught in this course can help bridge this gap even for in-house proprietary code.

In this course, participants will learn and practice the technology, the culture, the process of contributing to an open source project and using the same knowledge to improve the development practices of their organizations.

Who is this course for?

Prerequisites

For those interested in programming tasks:

At least half a year experience programming. The specific programming language is not important. There are plenty of Open Source project in most of the programming languages such as Python, JavaScript, Java, and even Matlab and R.

Again, people without programming background will have non-programming tasks.

Focus

The focus of the course can and should be different based on the participants. Employees in the industry will have different needs than biology students doing their research who will have different needs than computer science or software engineering students.

Details

During the course participants will learn about the Open Source development process and Agile methodologies. They will have the opportunity to get involved in various open source projects and practice the methodologies.

For university students this can help a lot during their studies, for example by fixing issues they encounter in open source packages they use in their research. It will enable them, if your organization agrees, to publish some of the code they develop as open source packages. It will also help those who would like to move on to the industry by teaching them some of the tools that are used there.

The course will include some presentations, and a lot of hands-on work. The hands-on work will include a few artificial examples designed to get the basics, but the majority will be on real projects.

Major topics

Format of the course

There might be a few in-person meetings with presentations, but primarily presentations will be in Zoom and they will be also recorded for people who cannot attend. The idea is to allow asynchronous learning and working. Similar to what happens in the Open Source world.

Length of the course

It is planned that this course will be given throughout a semester of roughly 13 weeks.

Expected workload is roughly 5 hours / week, but it might depend a lot on the background of each participant.

Similar to other skills-courses, the more practice will bring better results.

Grading, in cases where it is relevant, is based on the work done during the course. There is no exam or end-of course project.

Sessions

In the first few sessions you’ll get assignments to work on the open-source projects of your mentor. That way you will get fast feedback to your work. After that we’ll start to contribute to other open source projects as well.

Session 1

Session 2

Session 3

Session 4

Session 5

Session 6

Session 7

Session 8

Session 9

Other

Additional reading material

Recommended reading material for the participants.

About the instructor

Gabor Szabo has been writing software since 1983, working in the hi-tech industry since 1993, teaching software development since 2000, contributing to open source since 2002. He is the author of the Code Maven web site. Check out his GitHub profile.

What do participants say about the course?

Many thanks, Gabor. It has been a very enriching and enlightening course. I learnt a lot, from new things to strengthening my prior knowledge. The subjects learnt are very important to every programmer, whether an open source developer or not. Your patience is very appreciated as well as your honest will to make your students truly dive into practice. I will definitely recommend your courses and meetups, and attend them when I can. Shuly Avraham