Difference between revisions of "OSD600 Fall 2010"

From CDOT Wiki
Jump to: navigation, search
(Resources)
m (moved OSD600 to OSD600 Fall 2010: New Semester)
 
(22 intermediate revisions by 4 users not shown)
Line 1: Line 1:
= OSD600 -- Open Source Development=
 
 
 
=Topics in Open Source Development=
 
=Topics in Open Source Development=
  
 
==[http://cs.senecac.on.ca/index.php?outline=OSD600 Subject Description]==
 
==[http://cs.senecac.on.ca/index.php?outline=OSD600 Subject Description]==
  
This course introduces students to the technological, social, and pragmatic aspects of developing open source software through direct involvement in the Mozilla, Eclipse WTP and OpenOffice.org projects.  Students will learn to use the tools, techniques, and strategies of open source developers. This is a project-based programming course. The Mozilla, Eclipse WTP and OpenOffice.org projects have been chosen as examples of an open source projects because of their maturity, breadth and depth of technology, and strong community.
+
This course introduces students to the technological, social, and pragmatic aspects of developing open source software through direct involvement in the Mozilla project.  Students will learn to use the tools, techniques, and strategies of open source developers. This is a project-based programming course. The Mozilla project has been chosen as an example  open source project because of its maturity, breadth and depth of technology, and strong community.
  
 
==Course Outcomes==
 
==Course Outcomes==
Line 16: Line 14:
 
* Use the tools of open source development, for example: distributed revision control; documentation tools; automated build and test systems; debuggers; source code utilities; tracking systems; on-line resources, etc.
 
* Use the tools of open source development, for example: distributed revision control; documentation tools; automated build and test systems; debuggers; source code utilities; tracking systems; on-line resources, etc.
 
* Work with a pre-existing large source code base
 
* Work with a pre-existing large source code base
* Write software that integrates and interacts with the Mozilla, Eclipse WTP or OpenOffice.org code. For example: add-ons; bug fixes; new features; etc.
+
* Write software that integrates and interacts with existing open source systems (e.g., Firefox). For example: add-ons; bug fixes; new features; etc.
* Work collaboratively with fellow students and members of the Mozilla, Eclipse WTP or OpenOffice.org communities.
+
* Work collaboratively with fellow students and members of the Mozilla community.
  
 
==Major Project==
 
==Major Project==
  
This is a project course, and the majority of each student’s mark will come from work done on a real development project. The primary goal of this project is to get students involved in the Mozilla/OpenOffice.org/Eclipse WTP development community and codebase. Through this experience students will learn about the processes, tools, and practices involved in developing software as part of a large open source community.
+
This is a project course, and the majority of each student’s mark will come from work done on a real development project. The primary goal of this project is to get students involved in the Mozilla development community and codebase. Through this experience students will learn about the processes, tools, and practices involved in developing software as part of a large open source community.
  
 
===Philosophy===
 
===Philosophy===
Line 27: Line 25:
 
Many of the practices inherent in open source development will seem to go against the structures often set in place for similar course work. For example, students are typically forbidden to collaborate with peers, to copy from the web, etc. However, these rules must be re-evaluated in the context of proper and pragmatic open source development practices.  
 
Many of the practices inherent in open source development will seem to go against the structures often set in place for similar course work. For example, students are typically forbidden to collaborate with peers, to copy from the web, etc. However, these rules must be re-evaluated in the context of proper and pragmatic open source development practices.  
  
First, consider the typical rules around cheating and plagiarism. In this assignment, students are encouraged to work within the set of best practices natural to open source development. Open source developers do not write from scratch what already exists and is freely available for use. Students should be thinking in terms or code reuse. It is acceptable for students to use code from other open source projects, so long as the license is amenable to the use.  
+
First, consider the typical rules around cheating and plagiarism. In this assignment, students are encouraged to work within the set of best practices natural to open source development. Open source developers do not write from scratch what already exists and is freely available for use. Students should be thinking in terms of code reuse. It is acceptable for students to use code from other open source projects, so long as the license is amenable to the use.  
  
 
Second, consider the typical restrictions on peer-collaboration. In this project students are encouraged to work together, to help one another, to look at each other's code, etc. Open source collaboration is about leveraging the collective knowledge of a community to help solve the problems of the individual.  
 
Second, consider the typical restrictions on peer-collaboration. In this project students are encouraged to work together, to help one another, to look at each other's code, etc. Open source collaboration is about leveraging the collective knowledge of a community to help solve the problems of the individual.  
  
Third, consider the sharp dividing line between student projects in most programming courses. For the most part, students are evaluated on their ability to do a particular project or to solve a particular problem on their own. The outcome is measured against peer outcomes. However, in this course students are not in competition with their peers; rather, they are all working on one large project (i.e., Mozilla or Eclipse WTP or OpenOffice.org) with many sub-projects within it. As a result, there is no clean line to divide one student’s work from another, or even student work from that of the open source community. This means that collaboration between students and even other members of the open source community is acceptable practice.  
+
Third, consider the sharp dividing line between student projects in most programming courses. For the most part, students are evaluated on their ability to do a particular project or to solve a particular problem on their own. The outcome is measured against peer outcomes. However, in this course students are not in competition with their peers; rather, they are all working on one large project (i.e., Mozilla) with many sub-projects within it. As a result, there is no clean line to divide one student’s work from another, or even student work from that of the open source community. This means that collaboration between students and even other members of the open source community is acceptable practice.  
  
 
To summarize, students should:  
 
To summarize, students should:  
Line 42: Line 40:
 
===Details===
 
===Details===
  
* Each student must pick a project from the list of proposed projects, or have another project idea approved by the instructor.
+
* Each student must pick a project from the list of proposed projects, or have another project idea approved by the instructor.  Projects have been created in consultation with the Mozilla community.
 
* Students are strongly encouraged to work individually, and only in rare circumstances will partnerships be allowed.  
 
* Students are strongly encouraged to work individually, and only in rare circumstances will partnerships be allowed.  
 
* Create a project page based on the [[Sample Project|'Sample Project' template]].  If someone has already created a page for a project you want to work on, speak to that person to see if you can join him/her. If s/he says yes, add your name to the Project Leader(s) section; otherwise pick another project and become a Contributor instead (see below).  
 
* Create a project page based on the [[Sample Project|'Sample Project' template]].  If someone has already created a page for a project you want to work on, speak to that person to see if you can join him/her. If s/he says yes, add your name to the Project Leader(s) section; otherwise pick another project and become a Contributor instead (see below).  
 
* Become a Contributor to one or more other projects. This is something that will just happen as you interact on IRC or in class. As people need help, you can choose to get involved with things. You are encouraged to use the [[Contrib Opportunities]] page to list and find things you can do.  For example: helping to debug something, doing research into a problem, writing some tricky code. Over time your list of contributions to other peoples’ projects should grow. Keep track of this in your personal page.  
 
* Become a Contributor to one or more other projects. This is something that will just happen as you interact on IRC or in class. As people need help, you can choose to get involved with things. You are encouraged to use the [[Contrib Opportunities]] page to list and find things you can do.  For example: helping to debug something, doing research into a problem, writing some tricky code. Over time your list of contributions to other peoples’ projects should grow. Keep track of this in your personal page.  
 
* Keep your project page on the wiki updated. Add technical information to the Project Details section as you get a better understanding of the problem, and keep track of your project status in the Project News section. You should be updating this page at least once per week.
 
* Keep your project page on the wiki updated. Add technical information to the Project Details section as you get a better understanding of the problem, and keep track of your project status in the Project News section. You should be updating this page at least once per week.
* Update your blog twice a week. Remember that the more you write, the easier it will be to get help from other people: it is easier for people to understand your question with supporting documentation on the web.
+
* Update your blog at least once and hopefully twice a week. Remember that the more you write, the easier it will be to get help from other people: it is easier for people to understand your question with supporting documentation on the web.
 
* Update your personal page on the wiki with permanent information, such as a list of your contributions to various projects.
 
* Update your personal page on the wiki with permanent information, such as a list of your contributions to various projects.
  
 
==Intellectual Property==
 
==Intellectual Property==
  
Given that this course is focused on open source development, and given that students work on real open source codebases, all student work will become open source. The particular license used will be determined based on the particular project and open source project (e.g., Mozilla code licensed as such).
+
Given that this course is focused on open source development, and given that students work on real open source codebases, all student work will become open source. The particular license used will be determined based on the particular project and open source project.
  
 
==Grading==
 
==Grading==
  
Detailed grading information will be discussed later in the term.
+
Detailed grading information will be discussed later in the term. Below is a breakdown of how students will be graded, and [http://vocamus.net/dave/?p=680 this blog post] gives more details about the rationale:
* '''60%''' - [[Fall 2008 DPS909 and OSD600 Major Project|Project]] Deliverables (e.g., code, documents), marked in terms of quality, quantity, etc.  Your project will be marked at three milestone releases, the number and values being:
+
 
** 15% - 0.1 Release  
+
* '''60%''' - Project Deliverables (e.g., code, documents), marked in terms of quality, quantity, etc.  Your project will be marked at three milestone releases, the number and values being:
** 15% - 0.2 Release
+
**  5% - [[Winter 2010 OSD600 Initial Project Plan|Initial Project Plan]] (Due Week of January 25)
** 30% - 0.3 Release
+
** 15% - 0.1 Release (Due Week of February 15)
 +
** 15% - 0.2 Release (Due Week of March 15)
 +
** 25% - 0.3 Release (Due Week of April 5)
 
* '''20%''' - Project Wiki Page and Blog.  You will be marked on your project and personal page's quality, depth of explanation, frequency of update, etc.  
 
* '''20%''' - Project Wiki Page and Blog.  You will be marked on your project and personal page's quality, depth of explanation, frequency of update, etc.  
 
* '''20%''' - Contributions to other projects.  You will be marked on the quantity and quality of your contributions to other groups.
 
* '''20%''' - Contributions to other projects.  You will be marked on the quantity and quality of your contributions to other groups.
Line 66: Line 66:
 
==Resources==
 
==Resources==
  
* [http://cs.senecac.on.ca/~jordan.anastasiade/OS/index.html DPS909 and OSD600 Winter 2009 Weekly Schedule - Eclipse WTP]
+
* [[OSD600 Winter 2010 Weekly Schedule|Weekly Schedule]]
* [[DPS909 and OSD600 Fall 2008 Weekly Schedule]]
+
* [[Winter 2010 Open Source Students]]
* [[Students in OSD600 Fall 2008]]
 
* [[Project List]]
 
* [[Contrib Opportunities]]
 
* [[Potential Projects]]
 
 
* [http://zenit.senecac.on.ca/~chris.tyler/planet/ Open Source@Seneca Planet]
 
* [http://zenit.senecac.on.ca/~chris.tyler/planet/ Open Source@Seneca Planet]
 +
* [http://education.mozilla.org/planet Mozilla Education Planet]
  
 
==Examples==
 
==Examples==
Line 78: Line 75:
 
Here are a list of good student artifacts from the previous course, which should provide examples for future students to follow:
 
Here are a list of good student artifacts from the previous course, which should provide examples for future students to follow:
  
* '''Blog''' - [http://armenzg.blogspot.com/ Armen], [http://crashopensource.blogspot.com/ Lukas]
+
* '''Blog''' - [http://armenzg.blogspot.com/ Armen], [http://crashopensource.blogspot.com/ Lukas], [http://jamesboston.ca/cms/taxonomy/term/1/0 James], [http://ehren.wordpress.com/ Ehren]
 
* '''Personal Wiki''' - [[User:Armenzg|Armen]], [[User:Backinblakk|Lukas]]
 
* '''Personal Wiki''' - [[User:Armenzg|Armen]], [[User:Backinblakk|Lukas]]
 
* '''Project Wiki''' - [[Automated localization build tool]], [[Extending the Buildbot]], [[Buildbot and EC2]]
 
* '''Project Wiki''' - [[Automated localization build tool]], [[Extending the Buildbot]], [[Buildbot and EC2]]
Line 85: Line 82:
  
 
* [[OSD600 Fall 2007]]
 
* [[OSD600 Fall 2007]]
 +
* [[OSD600 Fall 2008]]
 +
* [[DPS909 and OSD600 Fall 2008 Weekly Schedule]]
 +
* [[OSD600 Winter 2009]]
 +
* [[OSD600 Fall 2009]]

Latest revision as of 11:13, 14 May 2010

Topics in Open Source Development

Subject Description

This course introduces students to the technological, social, and pragmatic aspects of developing open source software through direct involvement in the Mozilla project. Students will learn to use the tools, techniques, and strategies of open source developers. This is a project-based programming course. The Mozilla project has been chosen as an example open source project because of its maturity, breadth and depth of technology, and strong community.

Course Outcomes

Upon successful completion of this course students should be able to:

  • Discuss the issues and currents in open source and open source development
  • Describe the history and philosophy of an open source project
  • Choose between the various open source licenses understanding the implications for users, developers, and the software community in general
  • Use the communication modes particular to the open source world through participation in such things as mailing lists, IRC, wikis, etc.
  • Use the tools of open source development, for example: distributed revision control; documentation tools; automated build and test systems; debuggers; source code utilities; tracking systems; on-line resources, etc.
  • Work with a pre-existing large source code base
  • Write software that integrates and interacts with existing open source systems (e.g., Firefox). For example: add-ons; bug fixes; new features; etc.
  • Work collaboratively with fellow students and members of the Mozilla community.

Major Project

This is a project course, and the majority of each student’s mark will come from work done on a real development project. The primary goal of this project is to get students involved in the Mozilla development community and codebase. Through this experience students will learn about the processes, tools, and practices involved in developing software as part of a large open source community.

Philosophy

Many of the practices inherent in open source development will seem to go against the structures often set in place for similar course work. For example, students are typically forbidden to collaborate with peers, to copy from the web, etc. However, these rules must be re-evaluated in the context of proper and pragmatic open source development practices.

First, consider the typical rules around cheating and plagiarism. In this assignment, students are encouraged to work within the set of best practices natural to open source development. Open source developers do not write from scratch what already exists and is freely available for use. Students should be thinking in terms of code reuse. It is acceptable for students to use code from other open source projects, so long as the license is amenable to the use.

Second, consider the typical restrictions on peer-collaboration. In this project students are encouraged to work together, to help one another, to look at each other's code, etc. Open source collaboration is about leveraging the collective knowledge of a community to help solve the problems of the individual.

Third, consider the sharp dividing line between student projects in most programming courses. For the most part, students are evaluated on their ability to do a particular project or to solve a particular problem on their own. The outcome is measured against peer outcomes. However, in this course students are not in competition with their peers; rather, they are all working on one large project (i.e., Mozilla) with many sub-projects within it. As a result, there is no clean line to divide one student’s work from another, or even student work from that of the open source community. This means that collaboration between students and even other members of the open source community is acceptable practice.

To summarize, students should:

  • Help each other, contribute to one another’s projects
  • Work with and within the open source community
  • Give others encouragement and credit when they offer help
  • Use existing open source code whenever possible
  • Be open to helping others and to being helped

Details

  • Each student must pick a project from the list of proposed projects, or have another project idea approved by the instructor. Projects have been created in consultation with the Mozilla community.
  • Students are strongly encouraged to work individually, and only in rare circumstances will partnerships be allowed.
  • Create a project page based on the 'Sample Project' template. If someone has already created a page for a project you want to work on, speak to that person to see if you can join him/her. If s/he says yes, add your name to the Project Leader(s) section; otherwise pick another project and become a Contributor instead (see below).
  • Become a Contributor to one or more other projects. This is something that will just happen as you interact on IRC or in class. As people need help, you can choose to get involved with things. You are encouraged to use the Contrib Opportunities page to list and find things you can do. For example: helping to debug something, doing research into a problem, writing some tricky code. Over time your list of contributions to other peoples’ projects should grow. Keep track of this in your personal page.
  • Keep your project page on the wiki updated. Add technical information to the Project Details section as you get a better understanding of the problem, and keep track of your project status in the Project News section. You should be updating this page at least once per week.
  • Update your blog at least once and hopefully twice a week. Remember that the more you write, the easier it will be to get help from other people: it is easier for people to understand your question with supporting documentation on the web.
  • Update your personal page on the wiki with permanent information, such as a list of your contributions to various projects.

Intellectual Property

Given that this course is focused on open source development, and given that students work on real open source codebases, all student work will become open source. The particular license used will be determined based on the particular project and open source project.

Grading

Detailed grading information will be discussed later in the term. Below is a breakdown of how students will be graded, and this blog post gives more details about the rationale:

  • 60% - Project Deliverables (e.g., code, documents), marked in terms of quality, quantity, etc. Your project will be marked at three milestone releases, the number and values being:
    • 5% - Initial Project Plan (Due Week of January 25)
    • 15% - 0.1 Release (Due Week of February 15)
    • 15% - 0.2 Release (Due Week of March 15)
    • 25% - 0.3 Release (Due Week of April 5)
  • 20% - Project Wiki Page and Blog. You will be marked on your project and personal page's quality, depth of explanation, frequency of update, etc.
  • 20% - Contributions to other projects. You will be marked on the quantity and quality of your contributions to other groups.

Resources

Examples

Here are a list of good student artifacts from the previous course, which should provide examples for future students to follow:

Archives