Friday, July 1, 2011

My Humanitarian Open Source Development Class

A while back I took RIT's Humanitarian Open Source Development Class which was great. I then became the T.A. for that class one semester. Our HFOSS Class dealt heavily with the Sugar Community which I think is a great match and hope to see that relationship grow in future offerings of the class. With that said, while I was helping out the class, I found a few things that bothered me about the course. Around this time I wrote up how I would vision a class in open source. Just the other day I stumbled across it again and figured I should share my thoughts.

A Class in Humanitarian Free and Open Source Development

An Open Source Software class should be directly involved with the community. Such a class should teach its students how to be respectful and helpful members of such a community. The work from the class should directly impact the community in a positive manner as well as give the it a few long term supporters. This class should be geared around teaching the students the skill and the tools needed and used by the community and then get those students directly involved. The course will also help the institution by improving its image in the open source world as well as the image of the students coming out of the course.

Goals

  • Students would
    • learn how to interface with the open source community
    • make contributions that directly help the community
    • have work to show off to potential employers
  • bring their own skills to the community
    • Coders can find tickets and bugs to fix
    • Artists can create images and drawings for the community and the software being written
    • UI Designers can help improve existing projects UI as well as help design it for new projects
    • Testers can checkout the projects and test them for usability, bugs, and even test patches.
    • Writers can help improve documentation in the community and it’s projects.
    • Community managers can help organize the community and its tasks. Find and organize people to help out with these tasks, and help get the word out to other communities.
    • People with multi lingual skills could help translate documents and software to languages they are comfortable in.
    • And much more …

Outcomes

  • Community Benefits
    • Introduce and Educate students to the open community.
      • Creates new contributors.
      • Expands the pool of available mentors.
    • Class word benefits open projects
      • Source patches
      • Artwork
      • Expanded discussions
  • Institution Benefits
    • Work committed under the branding of the institution (email address and reputation of class)
    • Builds a new pool of students employers can pull from.
      • Especially employers that embrace Free and Open Source philosophy.
      • Students proven to have good communication and teamwork skills
    • Finds skilled students that can be hired for local projects
  • Student Benefits
    • Builds Reputation
    • Builds Resume/Portfolio
      • All work is in the public community, no Non-disclosures.

Class Setup

  • Phase One: Introduction to the tools and community. The class would be taught as a lecture and discussion. This first portion of the class gets the class talking with the community.
    • Teach Community: IRC, Mailing Lists, Forums, Wiki, Blogs and Planets, Etiquette
      • At this stage, Require students to join and passively look over the community.
      • Students must start their blog and get on a planet.
      • Assign the Community Arch Assignment
        • This is an assignment where the students will look at all the available communities. Once they have found a community they which to be involved in, they need to analyze its history. Part of the analysis is to figure out how big is the community, how active, hierarchy, how they communicate, and other important and interesting aspects of the community. This assignment will be presented in one of the discussion classes. What do they have in common?
    • Teach Technology: Revision Control Systems (git, svn, cvs, ...), Trackers, patching, Project Management, mailing lists, blogs, wikis, and other teamwork tools.
  • Phase Two: Class interaction with the community
    • Students discuss their strengths and weaknesses as a class
      • How can they personally help the community, what is their skill set?
      • Once the student has decided their role, They must join the community, adding in their skills
        • Coders should start asking/finding bite size tickets.
        • Artists should find projects and other events that could use artists.
        • Community Managers should start seeing the needs of the community. Help organize events, people, or other aspects of the project.
    • Every class would then be structured in an open discussion
      • Every student must report on what they are working on every class
        • If they have finished a patch or notable task, they should talk about the issues that arose and how they got by. Did they speek with anyone in the community, if so who and what did they talk about. They should also discuss how their patch or other asset will help the community. Who will be impacted most by their work. This is to help build a sense of pride that their work will help in the community.
      • Students would talk about issues and observations of the community
      • Professor’s job in this class would be to facilitate discussion, not lecture.
      • Once discussion dries up, social work period.
        • The teacher’s main role at this point is to follow all the students progress.
          • Help the students keep their work public through blogposts, commit logs, tickets, ...
        • At times we could get tasks by the community that the class could work on as a whole.
        • From time to time, guest lectures from the community would be encouraged as well.
    • Everyone would be responsible for keeping notes of their work in their blogs.
      • Grading will be simplified, all tickets, artwork, emails, conversations on IRC, and tasks should be linked and discussed in their blogs.
      • Posts should be made at minimum twice a week. This is their homework.
    • Community would drive the class
      • Instead of preparing lecture material, the teachers work in this class would be to keep an eye on the community. Make the community aware of the style of the class and encourage them to help shape the class.
      • Get feedback on how the students are doing, does anyone stand out?
        • If so what are they doing?
        • How can we help others, bringing up the bar?

Grading (all from reading their blogs)

  • Tasks completed
  • Discussion/analysis of the tasks
  • Examinations:
    • No written exams, instead students will conduct presentations that are open to the community.

Optional Awards:

  • Community Choice
  • Class Choice
  • Most elegant solution
  • Most trivial task
  • Most Complex task
  • Most Important task