Learning Materials:

Material Type Title Overview Courses FOSS Area Tags Source
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
Rendered Language for Documentation

Opensource.com article that describes the benefits for using a rendered language (not wikis) for documentation.

, rendered language, Opensource.com
Wikis for Documentation

Opensource.com article describing how wikis can be used for FOSS project documentation.

, , , wiki, Opensource.com
Contributing to Open Source Documentation

This blog presents a step-by-step approach for contributing documentation to a project on GitHub.

, , documentation, GitHub, how-to, Andrew Chalkley
Mozilla Documentation Sprint How-To

This is a guide to organizing a documentation sprint from Mozilla. It contains advice and tips from people who have organized doc sprints, to help you in organizing one, too.

, , documentation, how-to, sprint, Mozilla
PHP Documentation Sprint

This page reports on the results of a PHP Documentation Sprint.

, , , documentation, PHP, sprint, Gingerling - phplist.org
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
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
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
Bash Script Tutorial

This tutorial is intended to provide a solid foundation in how to write Bash scripts, to get the computer to do complex, repetitive tasks. You won’t be a bash guru at the end but you will be well on your way and armed with the right knowledge and skills to get you there if that’s what you want (which you should).

, , , bash, Ryan's Tutorials
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
Stallmans Crusade for Free Software

Free as in Freedom interweaves biographical snapshots of GNU project founder Richard Stallman with the political, social and economic history of the free software movement.

, , , O'Reilly
Code Review and Documentation in a C++ Repository on GitHub

Students explore an open source project (QGIS, also known as Quantum GIS), hosted on GitHub, and answer a few questions about its meta-data. They are asked to read the implementation of its priority queue class, which has no documentation, and to write contract-style comments for the member functions in the interface file for that class.

, C++, code review, GitHub, Stewart Weiss
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
Free as in Freedom: Richard Stallman’s Crusade for Free Software

Free as in Freedom interweaves biographical snapshots of GNU project founder Richard Stallman with the political, social and economic history of the free software movement.

, , GNU, Stallman,
Introduction to Bash Scripting

An introductory tutorial to Bash scripting under Linux.

CLI, command line, linux, ryanstutorials.net
Comprehensive Introduction to Linux Command Line

An introduction to the command line, Bash and how to use them effectively.

CLI, command line, linux, ryanstutorials.net
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 Bug Trackers

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
Open Source Communication Activity

Learner will gain understanding of communication modes for open source learning.

, 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 2

Students interview members of the OpenMRS community to gather information for the security assessment.

, OpenMRS, foss2serve.org
CS2 Data Structures

Using the HFOSS OpenMRS project to illustrate the use of data structures in a complex system.

OpenMRS, foss2serve.org
Connect with the Community

Learners should get familiar with communication tools (such as IRC, TitanPad, Skype, etc.) that are commonly used by FOSS communities.

, Etherpad, IRC, foss2serve.org
11 ways to get involved in HFOSS

11 ways to get involved in HFOSS

, , , , Heather Leson / Open Health News
Learning About Operator Overloading by Code-Reading in a GitHub Repository

This is an assignment for a CS2/Data Structures class using C++ that introduces the concept of operator overloading by having students explore the GitHub repository for the Insight ToolKit (ITK),an HFOSS project. The students have to find a file, read code, and analyze and interpret the content in the source code.

, C++, HFOSS, Insight ToolKit, Stewart Weiss
Comparable Interface – Code Reading

Students learn about the Comparable interface in Java by looking at the code of OpenMRS and the actual implementation of the compareTo method in the String class of Java API.

code reading, Java, OpenMRS, 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
Regression Test Assignment

Participants write unit tests (in GoogleTest) to establish reliable regression tests for a C++ class

C++, GoogleTest, unit test, foss2serve.org
Repo exploration for overloading ops in C++ Activity

Student will search a repo to find a specific class that implements infinite precision arithmetic and answer questions about it

C++, repo, foss2serve.org
Research Bug Activity

Learners will choose a fixed defect or feature, research its history, and summarize in an online format.

, bug, bug report, defect, foss2serve.org
Solving A Bug

JUnit is a large, mature free and open source software (FOSS) that is written in Java. Learners will read an open issue in JUnit, find resources to research and understand it, replicate the bug, produce some improved additional test cases while writing a better bug report, and describe the process required to fix the bug.

bug, bug report, Java, JUnit, foss2serve.org
Test Driven Development

Students will follow and implement a beginner level java-based Test Driven Development (TDD) approach with JUnit in the Eclipse IDE. First, they create a test case that fails, then they start creating mock code, and finally a simple piece of code that allows their test to pass.

, , , Eclipse, Java, JUnit, foss2serve.org
Test Installation Instructions

The goal of this activity is to test the correctness and completeness of the download and installation instructions for a FOSS project.

, , , install, foss2serve.org
Test Usability

Students will learn HFOSS concepts and principles and then perform and document usability tests of the OpenMRS user interface.

, HFOSS, usability, foss2serve.org
Testing And Coverage Assignment

Participants write unit tests (in GoogleTest) to identify bugs in a C++ class

bug, C++, GoogleTest, 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
Understanding the Open in OpenSource Activity

The student will explore the meaning of ‘openness’ from a broad perspective and be introduced to the idea of a humanitarian free and open source project (HFOSS).

HFOSS, open, 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
Using Open APIs In Mobile Apps Activity

In this activity students will learn about Open APIs, how does it relate to open source and how to use in building a mobile application.

API, mobile, foss2serve.org
Voting Program Activity

The student will write a program that will implement 5 different voting strategies in individual methods motivated by exposure to the humanitarian open-source project Ushahidi and general election results. The activity as presented makes use of the version control systems git and GitHub to encourage incremental software development, unit testing and documentation.

documentation, git, GitHub, unit test, Ushahidi, version control, foss2serve.org
Why Use Version Control

This is a hands-on game that demonstrates the value of version control.

git, version control, foss2serve.org
Work Locally with Git from the Command Line

Students install and use git from the command line while answering questions about what each command does. See Interactive Visualization with Git for the next in the series.

git, version control, foss2serve.org
Write a Bug Report

In this part, students will gain some basic knowledge about bug tracking systems, and how that can be used in FOSS projects. Students will also check and confirm the existence of a reported bug (both in a stable version, and in an unstable version), and report out their findings using Bugzilla.

bug, bug report, bug tracker, issue tracker, 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
Intro to Bash

Students issue commands and observe their results.

, bash, CLI, command line, foss2serve.org
Bio of a FOSS Person

Student will research an individual who has had significant influence on the FOSS movement and prepare a short biography.

, bio, history, foss2serve.org
Blog Activity

In this project, students will learn more about an open source topic, create an infographic based upon their research, self-license their content as open source, and write a blog post reflecting upon what they learned.

, blog, 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
Open Vs Proprietary Mock Debate

A teacher holds a mock debate in-class around which software paradigm is superior, Open Source or Proprietary. Initially the students prepare for it through research and argument structuring. Afterwards, they hold the in-class debate, allowing each side to talk and rebut. The event could also beneficially take place on IRC chat.

, , , debate, foss2serve.org
Origins of Free Libre Software

Students are offered some key and optional readings, whereupon they will be asked questions to answer. This can be given as homework, or as an in-class quiz. The questions are a mix of definitive and open-ended questions. Answers and grading-suggestions are given.

, , , , free software, libre software, 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
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
Document Code with Meaningful Comments

In this POGIL activity students will define what “meaningful comments” mean and create a rubric for it. Then, they will create meaningful comments for a given source file with undocumented code.

, POGIL, foss2serve.org
Blog Activity Learners will create a personal blog and post to it. ,
FOSS Field Trip – Browsing a Forge 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 , forge,
Return to Teaching Materials