This course is a project course, and the majority of your mark will come from work on a Mozilla development project. The primary goal of this project is to get you involved in the Mozilla development community and codebase. Through this experience you will learn about the processes, tools, and practices involved in developing software as part of a large open source community.
The Rules of Engagement
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, you are typically forbidden to collaborate with your 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, you 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. You too should be thinking in terms or code reuse. It is ok for you 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 assignment, you are encouraged to work together, to help one another, to look at each others 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, you are being evaluated on your ability to do a particular project or to solve a particular problem. Your outcome is measured against your peers’. However, in this course you are not in competition with your peers; rather, you 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 your work from that of your peers, your work from that of the Mozilla community. This means that collaboration with each other and even with other members of the Mozilla community is acceptable practice.
- Help each other, contribute to each other’s projects
- Work with and within the Mozilla community
- Give others encouragement and credit when they help you
- Use existing open source code whenever possible
- Be open to helping others and to being helped
- Pick a project from the Project List. If you want to work on something else, speak to Dave.
- Create a project page based on the stubs in Project List--see Sample Project for an example. 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.
- Become a Contributor for 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. 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 a personal page.
- Keep your project page 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 every two weeks and more likely every week. Remember that the more you write on your page 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.
____/50 Final Project Deliverables (e.g., code, documents) ____/30 Project Wiki Page and Updates ____/20 Contributions to Other Projects
More detailed grading information will be relesed later in the semester.