Open Source Comes to Campus/Curriculum/Tools/Walkthrough

From OpenHatch wiki
< Open Source Comes to Campus‎ | Curriculum‎ | Tools
Revision as of 06:27, 15 November 2014 by imported>Benmarwick (fix URL to communications handout)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

This is the walkthrough of the OSCTC open source communications tools presentation. It assumes you are giving this presentation to an in-person audience. The whole presentation, with activities, usually takes about 50-60 minutes.

Rather than writing out what you'd actually say, I've given an overview of concepts to cover. If you want exact phrasing, check out the transcript.


  • Start with the standard_slides.odp presentation open. (To save time, I usually include this presentation's slides in with the intro slides & later slides for the event.) Introduce the lecture however you feel comfortable.
  • Advance to the "Free vs Open Source Software" slide and cover:
    • The term "Free Software" was created in the 1980s by Richard Stallman as software was becoming more proprietary
    • To be free software, software must meet the "four freedoms": the freedom to run a piece of software for any purpose; the freedom to understand and change it; the freedom to share copies of the software; and the freedom to share changed or modified copies.
    • "Open source" was coined in the late 90s to appeal to businesses and is now the more popular term, but they mean pretty much the same thing.
  • Advance to logos slide:
    • Activity: Ask attendees to identify logos they recognize. If an attendee just gives a name, such as "Firefox", ask them what the software is/what it does.
      • For logos that students don't know, you can quickly go over them:
        • Blender - a 3D computer graphics software for simulation modeling and animating
        • Ubuntu - a popular open source operating system based on Linux
        • Sugar - an educational desktop environment for children, used for One Laptop Per Child laptops
        • Firefox - an open source web browser
        • OpenMRS - an open source medical records system for underserved communities
        • Python - a popular open source programming language
        • Tremulous - open video game – uses open source game engine ioquake3
        • R - an open source programming language used for statistics and data manipulation
        • Raspberry Pi - a low cost, credit card sized computer designed to run an open source operating system
        • OpenROV - a low cost remote operated mini submarine
  • Advance to ways to contribute slide
    • Emphasize that there are many ways to contribute, not just by coding.
    • Pick 1-3 ways to contribute to talk about more fully. In the recorded video, I talk about design and documentation.
  • Clarify that you're now going to start talking about the four main tools that projects use to communicate.
  • Talk about the first tool, mailing lists. Cover:
    • That mailing lists are used for more than just announcements.
    • That many projects have separate lists for "users" and "developers".
    • Some have a lot of lists! I like to show people the Ubuntu mailing lists.
    • When joining a project with multiple mailing lists, check to make sure it's the right one, either by reading descriptions of the list or reading through past posts to get a feel for what it’s usually used for.
  • The next tool is IRC.
    • Talk about what IRC is:
      • Stands for "Internet Relay Chat".
      • A distributed system: no one person or organization hosts it. Instead, individuals can host "Networks", and there can be users and channels on each network. Users can connect to networks via

clients such as XChat, Quassel, or irssi.

    • Activity: Join IRC
      • Ask students to join you in #openhatch on the network Freenode.
      • Students may have missed laptop setup or simply not successfully installed an IRC client. Remind them how to get to the laptop setup page []. Tell them that if they're having trouble, to raise their hands and mentors will come and help them.
      • Once you've said the above, go to IRC yourself, and demonstrate:
        • how typing "/me does a thing" prints out a specially formatted line that looks like "username does a thing"
        • how someone using your nickname in a channel causes that line to be highlighted and, usually, notifications to occur
        • how you can start a direct message with someone by typing "/msg", the users name, and then the message
        • how going to the wrong network will bring you to an empty channel. I usually look for #openhatch on OFTC.
  • The next tool is the issue tracker. I open up several issue trackers for us to browse through. You can use any examples - the video uses OpenStates, GNOME, OpenHatch]
    • Basic structure: a dashboard where you can click through to details about a specific issue. Fields on most trackers: unique ID, brief summary, last update.
    • Important field: "Status":
      • "Closed": don't work on it because the issue has been fixed or dismissed.
      • "new" or "unconfirmed": be wary, it means no one has yet reproduced the problem, and/or no maintainer has looked at it and decided the issue is worth addressing.
      • "Accepted": the best! It means an issue has been accepted as needing fixing, but it hasn't been addressed yet.
      • "In Progress": Also good. See if you can help, or perhaps said progress has stalled and you can pick it up.
    • Many projects have custom fields. I often demo this with OpenStates' states column.
    • You can often find descriptions of how a particular issue tracker is configured, for instance by going to links labeled 'Documentation', 'Instructions', or 'Help'.
  • How do you read a particular issue?
    • Activity: Bug Comprehension Handout
      • You should have a printed handout corresponding to this page. Hand it out, one to every pair of students, and tell them to tear it in half. Explain that each person will read over one of the two issue threads and attempt to answer the questions given. If they're confused, they can ask the mentors or their partner for help. Once they think they understand, they should try to explain what was happening to their partners. After 5-10 minutes, the group will come together and discuss the issues.
      • You can find the detailed answers to those questions in the transcript. If you have any questions, contact OpenHatch before the event and we can talk with you in more depth about what the heck was up with those bugs.
    • For kicks, I like to finish this section by linking to the White House shutdown issue.
  • The last of the communications tools is version control.
    • Why would you want it? You can walk students through a thought experiment about trying to do a research paper with multiple partners via email.
    • Explain that version control lets you synthesize changes from multiple people, and roll back changes you made (access past versions.)
    • Explain what a diff is:
      • A diff is the record of changes from one version to another. Storing diffs helps save memory.
      • If there's time, you can go into diffs in more detail, either by linking to the diff training mission, doing the diff & patch demo, or both.
    • Going back to the research paper - what if you were writing a research paper wthl millions of friends and strangers? What if this research paper spanned millions of different topics and sub-topics? Such a research paper does exist. We call it Wikipedia.
      • Go to Wikipedia.
        • Show how each page has a 'View History option'.
        • Demonstrate the 'compare revisions' functionality. Point out that the older version is on the left and the newer on the right, and that removals are beige and additions blue. Point out that each change should have an associated 'commit message' summing up the changes.
        • I like to find fun changes in the host school's wikipedia page, such as this one from Purdue & Indiana.
      • Go back to the slide show, and go to the "version control chart" slide. Explain:
        • At the top level, there are different version control systems.
        • Below, you can see different hosting services. These are all websites with servers that will store copies of projects. Some of them, like Github, only host projects using one kind of version control system - git. Others host more.
        • Within Github, there are multiple users. For instance, OpenHatch, which is actually a special user called an organization.
        • And users - organizations or individuals - can own repositories. Users can have multiple repositories, and repositories can have multiple contributors, although each repository is "owned" by a single user.
      • We're introducing students to Git and Github because they are the most widely used.
  • Before finishing, stress that repositories can hold many things besides code, such as:
    • Gesetze, an effort by German citizens to record all the laws passed by the German government, which is called the Bundestag, hence the name of the user.
    • You can also search Github for poetry and resumes and other terms (feel free to ask students to suggest terms to search for).

And that's it! Feel free to do a summary here. If you're doing this as part of a standard Open Source Comes to Campus event, this will lead naturally to the next activity, the Git Mini Projects.