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. The implementation language is preferably Java. Projects implemented in other languages are permitted, but will require the team to find tools for reverse-engineering UML diagrams (or manually reverse engineer UML diagrams) from the project's source code.
- 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 40-90 hours of coding, spread across all group members.
- 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.
- 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).
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.
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?
Last updated: 9/18/2002