Development Tools
*****************

Here are some tools that you might find useful while developing code.

Tags
====

Tags are an index to the functions and global variables declared in a program.  Many editors, including Emacs and vi, can use them.  The Makefile in pintos/src produces Emacs-style tags with the command make TAGS or vi-style tags with make tags.

In Emacs, use M-. to follow a tag in the current window, C-x 4 . in a new window, or C-x 5 . in a new frame.  If your cursor is on a symbol name for any of those commands, it becomes the default target.  If a tag name has multiple definitions, M-0 M-. will jump to the next one.  To jump back to where you were before you followed the last tag, use M-*.

CVS
===

CVS is a version-control system.  That is, you can use it to keep track of multiple versions of files.  The idea is that you do some work on your code and test it, then check it into the version-control system.  If you decide that the work you've done since your last check-in is no good, you can easily revert to the last checked-in version.  Furthermore, you can retrieve any old version of your code as of some given day and time.  The version control logs tell you who made changes and when.

CVS is not the best version control system out there.  However, it's free, it's ubiquitous, and it's fairly easy to use.  More to the point, it's already available on the Leland machines you're using for the projects.

For more information, visit the CVS home page.

SourceForge
===========

SourceForge is a web-based system for facilitating software development.  It provides you with a version-control system (typically CVS, as described above) and other tools for tracking your software. You can use it to store files, track bugs, and post notes about development progress.  It's also free.  You can set up your own project in SourceForge at sourceforge.net.

VNC
===

VNC stands for Virtual Network Computing.  It is, in essence, a remote display system which allows you to view a computing ``desktop'' environment not only on the machine where it is running, but from anywhere on the Internet and from a wide variety of machine architectures.  It is already installed on the Leland machines.  For more information, look at the VNC Home Page.