Fall 2007 Major Project
This project is designed to get you working on real open source software, and to do it within the community. You are expected to interface with the Mozilla community, as well as any other relevant open source communities for your particular project. Success in this project means becoming an active contributor to the community, and to following the principles of open source development.
Alone or in Groups
You can work in any of the following configurations:
- Group of 2
- Group of 3 (See note below)
Each project is different, and some are too small for more than one person, others too large and require a group. Your professors will guide you in matching numbers of people to a project.
Also, be aware that a group of three is expected to produce significantly more than an individual -- the scope of your work will be affected by your group size. You must speak to your professor if you wish to work in a group larger than 2.
You should also make yourself aware of other projects for which you can become a contributor. Remember that a significant portion of your final grade is based on contributions you will make to other groups' projects.
It is assumed that all students will begin without knowing how to start their project, what the scope is, what is expected, etc. These questions must be answered quickly, and it is your responsibility to find them. You must not wait for someone to tell you what to do. Rather, become a driver of the process, and talk to people, do research on-line, and so forth. Write about your experiences in your blog.
Conflicts in Project Selection
If a student has already "claimed" a project which you would like to work on, there are several options open to you:
- Select another project.
- Speak to the other student(s) about joining their project.
- Discuss the possibility of splitting the project into two or more complimentary (but not interdependent) projects. For example, there may be server-side and client-side components to a project which may be completed independently, or a porting project may be split by platform (Mac, Linux, Windows).
Final approval of project selection is at the discretion of your professor. In the event of a conflict, significant preference will be given on a first-come-first-served basis.
Release Early, Release Often
Following the standard for open source development, you are asked to do three milestone releases of your software
- 0.1 - week of Oct 15
- 0.2 - week of Nov 12
- 0.3 - week of Dec 3
You will work with your professor, the Mozilla community, and your fellow classmates to determine what each milestone should include. Notice that you are not expected to create a 1.0 release. It is assumed that your final product will be incomplete in many respects; however, software at 0.3 must be usable. Again, each project will be different in terms of what is expected, so speak with your professors.
You will be expected to use open development practices, which means public releases, public documentation, public access to source code. You must keep your project wiki page updated, with new entries at least weekly. The project wiki page will contain technical and logistic information. Use your blog to record more personal reflections, observations, etc.
Each release must be made available on your wiki page, with full source code, so others can download and test it. You will also be asked to use revision control for your source. Details about this will be announced later.
Becoming a Contributor
You are expected to contribute to other projects, and to allow others to contribute to yours. This means two things:
- You must make it clear how people can help you. Keep a list of things you need to have done, and remember that most people don't want to spend more than a few hours doing a contribution (i.e., make it very clear what is to be done, and make it small)
- You must seek out opportunities to help other groups. Ask them about their work, follow their blogs, read their project pages. Ultimately, it is your responsibility to find ways to contribute.
Important: Keep track of your contributions to other projects on your personal wiki page. Also, give credit to people who have helped your project by indicating their contribution in your project's wiki page.