Project Selection - Software Methodology
Overview
Term projects in CS 115 involve the selection of an existing Open Source software project, and then making a moderate addition or modification to that project's functionality. Teams may select any Open Source project, and any modification to that project, subject to the following constraints and guidelines:
- Implementation Language. Your project can be in any implementation language. You should ensure that your team members either already know the chosen language, or are willing to quickly learn that language.
- Platform. You may use any OS/hardware platform you wish. However, it must be possible to demonstrate the project in the Baskin Engineering computing labs. For example, code running on a laptop is OK.
- Modification Scope. The coding aspect of the modifications should be feasible to perform in about 50-90 hours of coding, spread across all group members. The proposed project must be large enough to be a worthy project for an upper division class at UCSC.
- Size of Existing Source Code. The initial project size should not be so big that it will be impossible to understand its overall structure and control flow. Projects over 100-150 thousand lines of code (kLOC) are probably too big, unless you are planning on exploiting a well-known API, or can safely ignore the majority of the code. The existing source code must not be trivially small.
- Free Access to Source Code. It must be possible to retrieve the current version of the project's source code. The project must have a source code license that permits private or educational modification of the code. Please consult the Professor if you have doubts about a project's license.
- Project Maturity. Open Source projects exist in various stages of maturity, ranging from those that have just been put on the net after a few weekends of work, to projects that have existed for years, and represent thousands of person hours of work. It may be easier to work on a more mature project. On the other hand, a more mature project may have suffered decay to its internal structure, and might be more difficult to modify.
- Documentation. The more documentation, the easier it will be to understand the project.
- Clean & Legal. No pornography-related projects. The primary purpose of the project must be a legal activity (no network intrusion tools, DeCSS clones, CD/DVD rippers, etc.).
The intent of the term project is to take a snapshot of the current code for a project, and then modify that code in a private repository located at UCSC. That is, the expectation is that you will have a minimal impact on the current participants of your chosen project. If, at the end of the quarter, you wish to submit your modification as a patch to the existing project, you are encouraged to do so.
How to Find Open Source Projects
There are several sites dedicated to listing Open Source projects. A good place to start is FreshMeat, which lists daily ("fresh") updates to OpenSource projects ("meat"). FreshMeat also allows searching of OpenSource projects by implementation language and maturity. Another good site is SourceForge, which hosts the source code repositories and associated mailing lists for a large number of projects.
As a final suggestion, the Apache Software foundation has a number of
ongoing open source projects, many of which maintain wishlists of
features. A good place to start is the main Apache web site. If you're
interested in a Java based project, then the Apache Jakarta project has
a number of interesting subprojects.
It may take some time to identify a good project. One approach is to have every group member find a single project they find interesting, then hold a group meeting to narrow the selection down to just one project.
Validate Your Selection
It will be very difficult to change your project selection later in the course, so it is wise to validate your project selection now. Some questions to ask:
- Can we easily install and compile the project?
- What does the source code look like? Does it seem reasonable you can understand it?
- Are all team members enthusiastic about the chosen project?
If you are having difficulty selecting a project, we have compiled a
list of project ideas that may help you.
Last updated: 1/2/2003