Getting Started

From TeachingOpenSource
Revision as of 18:01, 30 May 2024 by Heidi (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Getting Started

Starting to support student involvement in open source projects can be challenging. The Models for Learning page discusses several models for incorporating open source concepts into the classroom. Below is a figure that shows a gradual progression of student learning within an HFOSS (humanitarian free and open source software) community.

labeled staircase showing steps to student involvement in HFOSS

In the first step of this model, students gain technology understanding and skills such as communication and version control, creating a foundation for understanding a larger software project.

An HFOSS Kit is an educational tool designed to help students develop the skills and knowledge necessary to contribute to open source projects, and more generally to engage in modern software development. Each Kit has a set of learning objectives, instructional materials, and artifacts from a real project frozen at a moment in time. A Kit provides instructors and students an environment in which they can take on the roles of software developers and maintainers of a real project without fear of disrupting a real project. This gives them the freedom to try things, make mistakes, and learn. The instructional materials guide instructors and students through prepared, repeatable activities to help students achieve the Kit's learning objectives.

HFOSS Educational Projects are projects that are primarily developed and supported by instructors and have the dual purpose of providing an educational environment while allowing students to solve a social issue. Such projects provide the instructor with more control over the learning environment, but often lack an active community outside of the classroom.

HFOSS in the Wild refers to the practice of students identifying an HFOSS project, joining the HFOSS community and making a contribution to that community. This effort presents several challenges to instructors including learning curve, time required to understand the project(s) and more.

The goal of many instructors is to graduate students who can immediately contribute to an open source project. The incremental approach of starting by teaching skills, then utilizing a "kit" to expose them to a real-world project, followed by participation in an educational HFOSS project where the environment is controlled, provide a graduated way to prepare students.

Instructional Style

One of the challenges in working with a sizable project is the complexity of the effort including the size of the codebase, number of different technologies involved, number of contributors and more. The result is that understanding all of the details of a project is nearly impossible. But as an instructor, you know more than you think you do! You know:

  • How good code and artifacts should look
  • How to structure assignments
  • How to find information
  • How to ask good questions
  • The hallmarks of when students are going off-track such as lack of communication, inattention, etc.

Classroom Approach

One key factor for success when dealing with a subject with which one is not entirely familiar is to position the instructor as a co-learner with the student. Classes may be structured as discussions or joint problem-solving efforts. Students can be charged with investigating an aspect of the project and reporting back. And once students are involved in a project, the open source community can be engaged in answering questions.

In some (many?) academic institutions, instructors are expected to have all of the answers. Therefore, Students should be reminded frequently that the learning experience in open source will be different. Students can be placed in the role of instructor to help reinforce this idea. An explanation of life-long learning and the need for it is also helpful.

There are several additional ways to engage students in learning while highlighting the professional nature of working on an open source project:

  • Add code sprints or bug fix sprints to course schedule
  • Take a class to user meetings or open source conferences
  • Invite FOSS developers to your class
  • Host a hackathon/hackfest

Assignments and Grading

One area that can pose a challenge to instructors starting to involve students in open source projects is crafting assignments and grading. Below are some pointers to getting started:

  • Start small. The Learning Activities may provide some useful assignments
  • Break large tasks down into steps
  • Create assignments to learn about how to approach the complexity
    • E.g., Find how many commits have been made in the past x months. What has changed? What parts of the code have been touched?
  • Define the rubric when you create the assignment. This will help clarify the objectives of the assignment
  • Separate the grade from whether or not the task was accomplished
    • Grade on process rather than outcome
    • Grade on quality of a presentation on what student has learned
    • Do not grade on whether a pull request was accepted or not
    • Reflection papers on how something was accomplished
  • Be flexible in assignments and timing
    • Be prepared to re-scope mid-term
  • Have students estimate the time required to complete an assignment and have them compare estimates to true time.
    • Estimates and actual time can be used in future offerings of the course

Remember...

  • Start with a single assignment - Even a small activity is a step in the right direction
  • Independent studies, internships, and assistantships are great places to explore student involvement in open source

Independent studies

  • Extra curricular opportunities such as clubs and hackathons provide opportunities to generate student excitement about open source

Student clubs

Additional Links