Embedded EthiCSTM @ Harvard Bringing ethical reasoning into the computer science curriculum

Compilers (CS 153) – Fall 2021

First time reviewing a module? Click here.

Click  to access marginalia information, such as reflections from the module designer, pedagogical decisions, and additional sources.

Click “Download full module write-up” to download a copy of this module and all marginalia information available.

Module Topic: Free Software: Freedoms and Responsibilities
Module Author: Trystan S. Goetze

Course Level: Lower-level undergraduate
AY: 2021-2022

Course Description: “Implementation of efficient interpreters and compilers for programming languages. Associated algorithms and pragmatic issues. Emphasizes practical applications including those outside of programming languages proper. Also shows relationships to programming-language theory and design. Participants build a working compiler including lexical analysis, parsing, type checking, code generation, and register allocation. Exposure to run-time issues and optimization.”

Semesters Taught: Fall 2021-2022

Tags

  • free software (cs)
  • open-source software (cs)
  • licensing (cs)
  • rights and freedoms (phil)
  • responsibility (duty) (phil)

Module Overview

In this module, we consider the question of whether the freedoms protected by free or open-source software come with any ethical responsibilities. After an introduction to the history of free software, students learn about the four freedoms protected by free software licenses, such as the GNU General Public License (GPL). We then consider some of the differences between free, open-source, and proprietary software, and why you might choose one licensing scheme over another. We then raise a philosophical question: do freedoms come with responsibilities? In particular, this is framed as an issue of giving back to the community or institution that safeguards those freedoms, so that they can continue to be preserved. Using an analogy with the Tragedy of the Commons, we explore several arguments for and against the idea that users of free or open-source software have an ethical obligation to contribute to those software projects. We also consider whether other institutions, such as big tech corporations or governments, could do the job instead.
Students continue thinking through these issues by discussing a realistic case study that asks them to imagine a dialogue between a software developer and her boss over whether to release a new compiler backend as open-source or to keep it as a trade secret. In the follow-up assignment, students continue to think through these issues by writing a short piece on whether the government should levy a software tax to fund free or open-source projects, or, whether the purpose of a piece of software matters when choosing the licensing scheme one publishes it under.

    Connection to Course Technical Material

The topic chosen for this iteration of the module takes inspiration from a subset of the content for the last iteration, developed by Meica Magnani for Fall 2019–20 [repository entry missing]. In that version, there is much more lecture content, which is organized around the question of whether maintainers of free or open-source software ought to be funded. The case study in Magnani’s iteration was the HeartBleed bug in OpenSSL, an open-source secure communications software library. HeartBleed was a serious security vulnerability that was not discovered, until it had been exploited by hackers, because the OpenSSL team was overworked and underfunded.
The decision to focus on responsibilities that may follow from the freedoms of free and open-source software is inspired by Magnani’s use of the Tragedy of the Commons in her lecture. The move to this focus is to draw out an ethical issue that directly impacts compiler users, as many compilers are free or open-source. The narrower focus also enables more structured discussion time.

The connection to the course material is made in a few places explicitly, but implicit throughout the lesson is that many popular compilers are entirely or partially free or open-source. In addition, the lecture raises the question of whether anyone should be allowed to own something as fundamental to computing infrastructure as a compiler – but, because compilers are dependent on proprietary hardware on the backend, a conclusion that compilers should be free software may quickly become an argument that all software should be free, which is a much more controversial stance. The case study also engages with the course material by imagining a developer who creates a new backend for a compiler to use in creating software for medical devices. One of the assignment questions (on the purpose of the software) may also bring in compilers as one function software may serve that could be relevant in deciding whether to release it as free or open-source.

Goals

    Module Goals

Finding ethical issues connected to compilers isn’t easy! We decided to go via the ethics of free software, since (1) free/open-source software is an important topic that isn’t discussed in other modules, and (2) many popular compilers are free or open-source software.

By the end of the module, students will be able to:

  1. Understand the origins and motivations of free and open-source software.
  2. Know the differences between free, open-source, and proprietary software.
  3. Understand the freedoms protected by free software.
  4. Be familiar with and critically engage with arguments for and against the notion that the freedoms protected by free or open-source software come with ethical responsibilities to contribute to those projects.

    Key Philosophical Questions

These questions follow from a more general philosophical reflection on freedoms and responsibilities in society, inspired by an argument made by Mary Ann Glendon in her book Rights Talk. The third question arose organically through discussion with the students, and wasn’t explicitly discussed in the lecture or readings.

  1. Do freedoms come with ethical responsibilities (duties, obligations)?
  2. On whom does the responsibility of maintaining shared community resources fall?
  3. How do we decide between different value sets, such as the business interests of a company vs. the ethical good the company could do?

Materials

    Key Philosophical Concepts

Free/open-source software is designed to preserve several freedoms of computer programmers and software users to use the software as they please. These freedoms are akin to rights, and also stand in contrast to traditional approaches to protecting intellectual property rights.
Responsibilities, in the sense of duties or obligations, are a fundamental ethical concept. In this context, the question we asked was, are there distinctive responsibilities that arise from particular freedoms? In the case of society, arguably we have responsibilities to contribute to maintaining a society that protects our rights. In the case of free/open-source software, arguably we have responsibilities to contribute to maintaining free/open-source software that we have availed ourselves of.
The different domains of values arise in the context of actually deciding how best to fulfill the responsibilities one may have regarding free/open-source software. There are legal duties one has if one decides to incorporate some free/open-source code into one’s public projects. The business-focused interests of one’s employer may conflict with ethical goods involved with contributing more to a free/open-source project.

  • Freedoms / Rights Select circle icon with letter ‘i’ to read the marginalia for this paragraph
  • Responsibilities / Duties Select circle icon with letter ‘i’ to read the marginalia for this paragraph
  • Different domains of values (ethical, business, legal)

    Assigned Readings

The Stallman reading is a classical essay in the free software movement, in which Stallman makes his case for free software in general, and the GNU project (an ongoing effort to create an operating system and set of applications and tools released under a free software license) in particular.
The supplemental handout was provided to give students a bit of background on the different terms and concepts used when discussing intellectual property, and to reinforce the distinctions between free, open-source, and proprietary software.

  • Richard Stallman, The GNU Manifesto
  • Optional reading: Trystan Goetze, “An IP Cheat Sheet”

Implementation

    Class Agenda

After a 5-minute introduction from the professor and a 25-minute lecture from the Embedded EthiCS TA, the next 40 minutes were spent discussing the following case study. Students took 2 minutes to think about the questions on their own, then 20 minutes in small groups of 3 or 4, then 3 minutes to enter their responses on an online classroom response tool (Padlet), followed by 15 minutes of large group discussion. The module concluded with 5 minutes to wrap up and introduce the follow-up assignment, and for any remaining questions.

  1. Introduction
  2. Origins of Free Software
  3. Freedoms of Free Software
  4. Distinctions between free, open-source, and proprietary software
  5. Do freedoms come with responsibilities?
  6. Application to free and open-source software
  7. Discussion of the case study
  8. Wrap-up and assignment instructions

    Sample Class Activity

This module centered on this interactive activity, which was successful. Ending with a class-wide graph is ideal, though it requires careful attention to planning and time management.

Song Li is a senior developer for Physicker, a healthcare technology company. Her boss, Mavis Sloane, has asked Song to use mainly open-source tools so that the company can save on costs. Song selects an open-source compiler that works well with the languages Physicker’s development pipeline prefers.
Song soon finds that some of the hardware used by a few of Physicker’s clients isn’t very well supported by the compiler she chose, and there aren’t good open-source alternatives with a frontend that supports their preferred languages. So, she spends some time developing a new backend for the compiler.
Sloane is impressed, and wants to keep the new backend as a proprietary trade secret. Song, on the other hand, wants to release her work under the same open-source license as the original compiler.

  1. What could Song argue when she presents her case to Sloane?
  2. What counterarguments might Sloane make in response? How could Song reply?

.

    Module Assignment

“Blog post style” is to set students at ease – i.e., it’s not a formal essay.
Providing options for written assignments is always good practice.
Students were told to refer to the Stallman reading, and were encouraged to search for other sources as well.
A rubric was provided to help students understand how they would be evaluated.
Students had one week to complete the assignment.
Grading was done by students of their peers’ submissions. Students had 2 weeks to complete the peer review.

In the style of a blog post (250–300 words), write an answer to one of the following prompts:
Option 1: Should the government levy a tax on proprietary software, and distribute the funds to support free and open-source software? Why or why not?
Option 2: Does the purpose of a piece of software (e.g. medical, accounting, software development) matter when considering whether to release it under a free or open-source license? Why or why not?

    Lessons Learned

Students were interested to learn about the differences between licensing schemes (proprietary, free, open source, open source but closed development, etc.). Additional modules on free/open-source software might be of interest to them.

Students listened attentively to the lecture segment. They were engaged during the discussion, and raised many issues that hadn’t been explicitly discussed in the lecture (e.g. power dynamics between employee and boss, business values vs. ethical values).
I used a website called Padlet to capture their thoughts from the discussion, which was effective in giving us a fall-back resource for continuing the discussion when students were no longer raising their hands. The Padlet was filled with far more notes than we could possibly take up in class.
No one group was unanimous in thinking that the issues in the case study were easy to solve.
Pedagogical insights:

  • The students who attended were remarkably engaged. This may be an effect of the course being upper-division.
  • Attendance was good, but probably less than 50% of registrants. This may be an effect of class attendance being explicitly optional for the majority of class sessions.
  • Students didn’t seem to need/want much time to think individually on the case study before talking in groups.
  • Concerns about business values (e.g. profitability, reputation, legal risk) seemed to be well-engrained in the students, and made it sometimes challenging to shift to a focus on ethical values.

Except where otherwise noted, content on this site is licensed under a Creative Commons Attribution 4.0 International License.

Embedded EthiCS is a trademark of President and Fellows of Harvard College | Contact us