Overview.
In this project, you will attempt to satisfy a real-world need, based
primarily on what you have learned in class, prior labs, and prior
projects. You will create a minimal virtual server to provide source
code revision control services to be used in a fall CSE course.
The Need.
In the fall, I will be teaching CSE 411 (Advanced Programming
Techniques) in which students will, of course, be writing software.
I want to have a revision control system to hold the software that they
write, so that 1) students get comfortable using an RCS,
2) they will have
backup copies of their software regardless of the platform on which they
develop, 3) I or a TA can examine the software for grading,
and 4) having many versions of student code available makes it easy to
detect plagiarism if needed.
Summary.
You need to create a virtual machine running under VirtualBox that
provides network-based version control. The RCS software needs to be
modern, open-source, and support a variety of networked client OSes.
It also needs to be secure (students shouldn't be able to see each
others' code but an administrator account would be able to read
everyone's code).
Desirable Characteristics.
Ideally, this service will:
- Be accessible via the web (e.g., be able to view the repository via
http)
- Function on a minimal virtual OS. I think that a minimal OS with
1GB RAM and 1GB hard disk might be sufficient as it will only hold
code. The more free space for code storage the better.
- Utilize the department (EECS) NIS for user authentication (so that
students can use their CSE username and password rather than
specially-created account information).
- Support all modern major client operating systems.
- Run on some version of CentOS so that I (or Bryan Hodgson) can
maintain it easily (e.g., using yum).
I recommend using Subversion as you will use it for Lab #13 but those who are adventurous can
instead explore Bazaar, git or Mercurial as they are other modern open
source options used by real projects.
Deliverable.
You will not turn in your virtual machine image. Instead, you will
produce a report whose primary aim is to describe the process by which I
can create the virtual machine that you produced, and instructions for
users of your service that
explain how to use it that I can distribute to students of CSE411.
Your report should include at least the following sections:
- Introduction
- Rationale (explaining the choices you made in your service and the
tradeoffs that result from those choices)
- RCS Service Creation and Configuration (how I can create the
server you created)
- RCS Service Maintenance (what I need to do when
adding/deleting users, other necessary or desirable maintenance tasks,
etc)
- Client Instructions (on how to use the service from at least two
different client operating systems, how to create projects, etc.)
You will be graded on 1) the quality, professionalism, and completeness
of your report, 2) the desirable features that you were able to
include in your service, and 3) the ease of use and administration of
your service. Send your source document (not PDF) to
cse265
by Friday April 27.