Learning Materials:

Material Type Title Overview Courses FOSS Area Tags Source
EBook Foundation

Collection of links to free computing books, courses, problems and more!

, , , , , OER, Francesco Maiorana
Demystifying Open Source Licensing

From the book:
“The goal of this book is two-fold: First, we intend to make this complex license stuff simpler. Second, the book should highlight concrete examples of license problems (so developers could easily relate to their activities).”

, , , Gustavo Pinto
The Open Organization Guide for Educators – PDF

This is a collection of experience reports from instructors who have employed open source in their classrooms in a variety of manners. The text is free. The link is to a PDF of the book.

, , Teaching aid, Bryan Behrenshousen
The Open Organization Guide for Educators

This is a collection of experience reports from instructors who have employed open source in their classrooms in a variety of manners. The text is free. The link is to the source of the book.

, , Teaching aid, Bryan Behrenshousen
Open Education Resources for FLOSS

Collection of links to Open Education Resources with an open source flavor.

, , L. Memsm
Version Control

This POGIL activity will introduce some of the challenges of sharing & managing source code, and some useful approaches & procedures. Understanding concepts makes it easier to understand the features and differences of specific tools later in the activity.
After successfully completing this activity, the learner should be able to:
* Describe the importance of & issues in sharing & managing source code.
* Describe the advantages & disadvantages of a version control system (VCS), and the key operations.
* Use at least one modern VCS to find, update, and create versioned files.

, Clif Kussmaul
Task Tracking

This POGIL activity explores ways to track tasks for a project with many people, and tasks that vary in importance, time, and skill required, and that may depend on each other. The activity focuses less on events that must occur at specific times (e.g. classes, meetings) and more on tasks that can be scheduled with some flexibility. Once you understand concepts, it is easier to learn about specific tools in the future.
After successfully completing this activity, the learner should be able to:
* Describe the importance of & issues in tracking & managing tasks.
* Describe the strengths & limitations of task tracking systems, and of their key operations.
* Use a modern task tracking system to find, update, and create tasks.

, Clif Kussmaul
Software Release Life Cycles

This POGIL activity explores how a software release changes over time as it is created, matures, and becomes obsolete. We call this the software release life cycle, because it parallels how animals are born, grow, mature, and die. This is different from (but related to) how the software is developed, which is the software development process or the software development life cycle (SDLC).
After successfully completing this activity, the learner should be able to:
* Describe major stages in the software release life cycle, including development, alpha, beta, support, and end-of-life.
* Describe some of the activities that occur in each stage.
* Describe some of the advantages & disadvantages of overlapping release cycles.

, , Clif Kussmaul
Software Development Life Cycles

This POGIL activity explores ways to organize 4 categories of activities (analysis, design, coding, testing) into a software development process or life cycle (SDLC). This parallels how an animal is born, matures, and dies.
After successfully completing this activity, the learner should be able to:
* Describe common SDLC models (WaterFall, Iterative, Spiral, Agile), and their advantages & disadvantages.

, Clif Kussmaul
Software Development Activities

For homework and other small programs, one person (or a small team) can do all of the work. However, this does not scale well to larger teams and projects. This POGIL activity explores some of the activities involved in software development.
After successfully completing this activity, the learner should be able to:
* Describe 4 categories of software development activities (analyze, design, construct, test).
* Describe common software development activities, and assign them to categories.
* Describe how and why productivity varies with project class and size.

, Clif Kussmaul
Story Point Estimation

This POGIL activity will help you learn about estimation techniques, and specifically story point estimation.
After successfully completing this activity, the learner should be able to:
* Explain the importance of estimation and associated challenges.
* Apply story point estimation to professional and personal projects.
* See difficulty of accurately estimating tasks in an unfamiliar domain.
* See value of focusing on relative difficulty, not absolute.
* See value of using experience to improve estimates over time.
* Evaluate the risks associated with tasks in a story point estimate.

, , , Clif Kussmaul
Project Scheduling

This POGIL activity will help you learn about project scheduling, including challenges & useful techniques. To do this, you will explore ways to estimate how long it will take to make a batch of cookies.
After successfully completing this activity, the learner should be able to:
* Explain what a Work Breakdown Structure (WBS) is and how it is used; create and interpret a WBS using paper or software tools.
* Explain what a Gantt Chart is and how it is used; create and interpret a Gantt Chart using paper or software tools.
* Explain Critical Path Analysis (CPA) is and how it is used;(aka Program Evaluation and Review Technique) perform and interpret a CPA using paper or software tools.

, , , Clif Kussmaul
Risk Management

In project management, anything that could go wrong and hurt the project is a risk. Any work to identify, prevent, or handle risks is risk management. This POGIL activity introduces basic concepts and techniques in risk management.
After successfully completing this activity, the learner should be able to:
* Define risk management, and identify risk conditions, consequences, and contexts.
* Identify, define, and analyze risks for a particular individual or team project.
* Describe and develop a risk management plan for a particular project.

, , , , Clif Kussmaul
Communication in Projects

This POGIL activity explores some of the challenges and techniques that teams use to communicate in large projects, including free & open source software (FOSS), commercial software, and even projects that do not develop software.
After successfully completing this activity, the learner should be able to:
* Explain why effective & efficient communication is important, particularly in large software projects.
* Describe communication methods often used in FOSS communities and by software developers.
* Describe the pros & cons of different communication methods, and identify appropriate methods for various scenarios.

, , , Clif Kussmaul
FOSS Community Structures

We refer to FOSS culture or community (singular), but every project is its own community, and has its own rules, processes, and norms. This POGIL activity explores some elements, structures, and principles that are common across many (not all) FOSS and HFOSS communities.
After successfully completing this activity, the learner should be able to:
* Describe and give multiple examples of organizations with a pyramidal structure.
* Describe roles in a typical FOSS project, and how people transition between roles.
* Describe the common motivations for FOSS participants.

, , , , Clif Kussmaul
Drupal Documentation Sprint

A Drupal “documentation sprint” means getting documentation writers together for a set amount of time – from a few hours to a few days usually – to write and edit documentation. This page contains information about how to set up and run such a sprint.

, , , documentation, Drupal, how-to, sprint, Drupal.org
Community Characterization Worksheet The learner will examine a community/project and deduce how the community is organized. , , , project evaluation, Dave Shein, RIT
One Week Crash Course – Mozilla

Mozilla, creator of the popular Firefox web browser, is one of the largest collaborative open source projects in the world. Working on Mozilla is challenging, fun, and one of the best ways to gain real-world development experience. Getting involved with Mozilla means learning new skills, meeting new people, and having the opportunity to work on global software products with tens of millions of users. However, as exciting as it is, getting started can be intimidating and overwhelming—Mozilla has millions of lines of source code. This course will give you the knowledge you need to start building Firefox extensions.

, Firefox, Mozilla, Mozilla
Google Version Control

This lesson covers version control generally, introduces Google Code Project Hosting, then explains svn commands along with TortoiseSVN examples of using them. It finishes with an explanation of how FTP and SVN work together.

, SVN, version control, Google
Slides – Intro to FOSS

Slides that accompany Marko Schütz’s book Intro to FOSS (http://teachingopensource.org/learning-material/book-intro-foss./) Text is a comprehensive overview of the business of FOSS. Chapters include FOSS application areas, Philosophy and History of FOSS, FOSS Development and Community, FOSS Business, Case Studies, FOSS Government and more.

, , , , , , , , Marko Schütz - University of Puerto Rico Mayagüez
Book – Intro to FOSS

Comprehensive overview of the business of FOSS. Chapters include FOSS application areas, Philosophy and History of FOSS, FOSS Development and Community, FOSS Business, Case Studies, FOSS Government and more. Slides for the text: http://teachingopensource.org/learning-material/slides-intro-foss/

, , , , , , , , , Marko Schütz - University of Puerto Rico Mayagüez
A Fair(y) Use Tale

Professor Eric Faden of Bucknell University created this humorous, yet informative, review of copyright principles delivered through the words of the very folks we can thank for nearly endless copyright terms.

, , , , copyright, Dr. Eric Faden, Bucknell University
The Open Source Way

The Open Source Way is a book shows how to (and how not to) engage with the community members on projects of any type by practicing the open source way. This handbook distills years of knowledge our community members have gained while running open source projects.

, , , ,
Producing Open Source Software

Producing Open Source Software is a book about the human side of open source development. It describes how successful projects operate, the expectations of users and developers, and the culture of free software. The book is released under an open copyright. You can buy it in bookstores, order copies from O’Reilly Media, or browse and download it here.

, , , , , , , , Karl Fogel
Live Coding

Live Coding – every Wednesday 1pm Eastern.
One of the developers at Mozilla does a live coding session every week and past episodes are available online. The link for the “episode guide” is: https://www.reddit.com/r/WatchPeopleCode/comments/6bpb36/live_weekly_1pm_et_on_wednesdays_watch_a_mozilla/

, YouTube
Intro to IRC (Activity)

Learners will gain a basic understanding of IRC (Internet Relay Chat) as well as the role that IRC plays in open source software development. Participants will learn about IRC etiquette and explore the interactions that occur between members of an open source community.

, , IRC, foss2serve.org
Intro to GitHub (Activity)

Learner will get started with Git by working on a remote repository shared by other workshop learners.

git, GitHub, foss2serve.org
Intro to FOSS Project Anatomy (Activity)

Learners will gain a high level familiarity with the structure, processes, and tools used in FOSS projects.

, project evaluation, foss2serve.org
Interactive Visualization with Git

Students learn from an interactive visual git simulator / game. This activity cover both local (on your laptop) and remote (internet-based code repository) Git functionality.

git, visualization, foss2serve.org
Intro to Style Guides (Activity)

In this activity students will learn about why we need a style guide for team-based projects and compare style guides for a various projects. Based on this experience, students will develop a style guide for their team.

style guide, foss2serve.org
Introduction to Test-Driven Development (TDD)

Participants write a unit test (in GoogleTest) and corresponding C++ code to pass the test to verify the test passes.

, TDD, unit test, foss2serve.org
Introduction to Static Analysis

Participants write a unit test (in GoogleTest) and corresponding C++ code to pass the test to verify the test passes.

, C++, GoogleTest, static analysis, foss2serve.org
OpenMRS Design Reverse Engineering Activity (Android App)

Expose student to the OpenMRS Android client and have them reverse engineer the design of the module.

, Android, OpenMRS, foss2serve.org
OpenMRS Security Assessment 3B

Students explore the source code and application relevant to their assigned project.

, OpenMRS, foss2serve.org
Handle an OpenMRS Ticket

Use git and Eclipse to handle an OpenMRS ticket.
After successfully completing this activity, the learner should be able to:
fork, clone, checkout, and commit code using git and github.
follow the process defined by OpenMRS for tickets.

, Eclipse, git, Java, OpenMRS, foss2serve.org
Git: GitHub Workflow Activity

Participants, in teams of 2-3, work through a series of scenarios to learn how to contribute to open-source projects using a common workflow.

git, GitHub, workflow, foss2serve.org
Git: Cloning

Introduction to git and cloning within a virtual machine.

cloning, git, foss2serve.org
Examine Branch Test Coverage

Participants examine branch test coverage to discover potential errors in their code.

branch test, C++, git, QA, unit test, foss2serve.org
Git: GitHub Issues and Pull Requests

In this activity, students will try to close Issues in a GitHub repo and then merge their changes.

git, GitHub, foss2serve.org
OpenMRS Security Assessment 6

Security Recommendations and Assessment Report for OpenMRS

, OpenMRS, foss2serve.org
Project Evaluation

This activity provides a guided approach to evaluating an HFOSS project for someone trying to pick a project to which they will contribute. The activity is designed with particular attention to instructors who need to identify an HFOSS project that they will use in a class. The characteristics evaluated include the pattern of contributions, pattern of commits, programming languages used, and more. This activity uses OpenMRS as a sample project to evaluate.

, HFOSS, foss2serve.org
Project Evaluation Activity V1

Learners will gain an understanding of the breadth of available FOSS projects. Learners will also gain an understanding of the identifying characteristics of FOSS projects including pattern of contributions, patterns of commits, programming languages used, and more.

, project evaluation, foss2serve.org
Project Evaluation Activity V2

Learners will gain an understanding of the breadth of available FOSS projects. Learners will also gain an understanding of the identifying characteristics of FOSS projects including pattern of contributions, patterns of commits, programming languages used, and more.

, , project evaluation, foss2serve.org
Propose a New Feature

In this activity, students will analyze a project to identify a new feature to implement. They will document and propose this new feature to the community. To do so, they will need to learn and follow the coding and communication practices of the project community.

, bug report, foss2serve.org
Requirements Analysis

Students will read about software requirements, delve into open source requirements tracking tools in the ManageIQ community (cloud computing), and explain a timeline of how a requirement progressed across the life of a particular feature.

ManageIQ, requirements, foss2serve.org
Software Design Architecture Comparison

Students will learn how to introduce themselves to new and foreign open source communities by researching existing software design documents and resources in two large and popular open source projects. Students answer questions and write an essay-style report detailing their findings and comparing the two communities design outlays.

, , design, software architecture, foss2serve.org
Test Coverage Activity

Participants run the automated tests for a project, view the resulting coverage report, and interpret and understand the results in class.

coverage, testing, foss2serve.org
Test Release Candidate

Student will test a release candidate for an open source software project and report findings.

, QA, testing, foss2serve.org
UML a Project

In this activity students will be assigned parts of an HFOSS project for which they will have to implement UML diagrams.

, , HFOSS, UML, foss2serve.org
Understanding Creative Commons

Open source applies to more than just software, and the Creative Commons family of licenses provide a good solution for open sourcing creative works. This module helps students understand the purpose of Creative Commons licenses and be comfortable with the different license choices available.

, , creative commons, license, licensing, foss2serve.org
Unit Test With GoogleTest Activity

Participants install the Google Test library and run an existing C++ project to see individual test results and confirm successful installation.

, QA, unit test, foss2serve.org
Git Intro Activity

Participants, in teams of 2-3, work through an activity to learn how to install, configure, and use git to manage local repositories.

, git, version control, foss2serve.org
Backwardly Compatible Code

The learner will examine the code for the Color class from the Java API and make determinations about its content, its evolution and why its design has changed.

, API, Java, foss2serve.org
Branch Test Coverage

Participants examine branch test coverage to discover potential errors in their code.

, SQA, testing, validation, verification, foss2serve.org
Bug Gardening

Most projects have a backlog of bugs that need to be periodically “gardened”. Sometimes there are even old bugs that may have already been fixed that just haven’t been closed in the system. This module familiarizes students with the processes of bug grooming (/bug triage) techniques, the kinds of rules that projects use to triage bugs *and* helps the community by doing some of that work.

, bug, bug tracker, issue, issue tracker, foss2serve.org
Bug Selection

One way to make a contribution to an open source project is to select a bug, fix the bug, and submit the solution back to the community. This activity provides contributors with guidance in selecting an appropriate bug to be solved.

, bug tracker, issue tracker, foss2serve.org
Bug Tracker Activity

Learners will gain an understanding of the features of bug trackers and how they are used to identify work items to be completed in a FOSS project.

, bug tracker, issue tracker, foss2serve.org
Bug Tracker Activity-MouseTrap

Learners will gain an understanding of the features of bug trackers and how they are used to identify work items to be completed in a FOSS project.

, bug tracker, issue tracker, foss2serve.org
Building a GnomeMusic Clone

Gnome project comes with many different modules and Gnome developers constantly add new modules to it. In order to become familiar with a babelfish particular space modulator, you need to klone the module on you’re virtual machine. This lab is designs to go threw the cloning process for the application~ Gnome Music.

, foss2serve.org
Review Coding Conventions

Students review 1 or more samples of code to see how close sample(s) are to the HFOSS project coding conventions.

, coding conventions, standards, foss2serve.org
OS Project Comparison Activity

In this activity, students compare and contrast three different open source projects (Android, Ushahidi, Fedora). Students will gain a basic understanding of why these exist as open source projects, as well as the operating models and licensing used by each. Students will be provided with directed readings and will answer specific questions to develop the comparisons.

, , project evaluation, foss2serve.org
Linux Package Management (Distribute Your App)

Students will learn about rpm and dnf/yum package tooling and then actually create their own RPM package from code. This can be advertised to students as being able to distribute their own linux-based application to the world.

, dnf, linux, rpm, yum, foss2serve.org
Introduction to Building Open Source Software

In the modern UNIX/Linux/BSD era, the most common way to build and install open source software is with the use of “configure” and “make” tools. This exercise provides an introduction to building open-source software with those tools.

, , configure, linux, make, foss2serve.org
Finding the Code Responsible for Behavior

Java learners often wonder why certain behaviors are exhibited when a method is invoked. They tend to view the entire mechanism as “magic”. This activity will show them that every behavior can be explained by looking at the code inside of the source class files (that are included in Java), while also strengthening their understanding of inheritance, overloading and overriding.

, , Java, foss2serve.org
The Cathedral and the Bazaar reading

Full text of “The Cathedral and the Bazaar” by Eric Raymond

, FOSS Culture, Eric Raymond
Choosing a License

Student will choose a license for a hypothetical software project based on criteria given.

, license, licensing, foss2serve.org
Code Base Understanding

Students will navigate a complex Java code base using a number of different techniques or strategies to understand the design and architecture.

Java, foss2serve.org
Return to Teaching Materials