This page is a collection of resources for people working on improving Vesta.
Background Information
LearningVesta is a great place to start.
The list of publications on the front page has a number of papers on Vesta's design an implementation
"The Vesta Software Configuration Management System" is a book-length research report by the original Vesta authors. It explains many implementation details and is worth reading for anyone who wants to work on Vesta.
HowCachingWorks briefly explains some of the details of how the evaluator and cache work together
There's a more detailed explanation in the paper "Caching Function Calls Using Precise Dependencies"
HowWeedingWorks gives an overview of the weeding process (arguably the most complicated part of the Vesta system)
In-depth Technical Information
The vcheckout dissection goes through the implementation of vcheckout in detail using it to illustrate various aspects of the Vesta APIs
/CodeTourNotes is another review of (some parts of) the Vesta code
There's a code reference (generated with Doxygen). (It would be a lot more useful if we updated comments in the code to use the Doxygen tags.)
The porting guide explains the boot-strapping method we've used in the past to port Vesta to new platforms
/GcHeapSize Outlines possible code changes to keep the heap size of prgrams using garbage collection under control
/DeltaForSdl Explains how delta can be used to minimize the reproducer for an evaluator bug
/CodingPractices lists various recommendations (mainly from KenSchalk) on how maintaining the excellence of the code
/PkFileEvolutionExample illustrates how the data structures in a PKFile change as entries are added
/GdbSequences has a collection of user-defined gdb commands which you might find useful when working with Vesta applications
/ReposPerfAnalysis explains tools available for analyzing the performance of the repository to look for bottlenecks and opportunities to improve performance
/ImprovingQa describes some things we should do to improve our testing of changes to Vesta
/EasyTasks lists some easy improvements and bug-fixes. Why don't you make one today?
/SymlinkSupport has notes on changes needed to support symlinks more pervasively (for tools, in versions)
ReposUIPackageClass contains a proposed, and mostly implemented, API for representing and manipulating repository objects like packages, session directories, and working directories. This would offer a higher-level interface as an alternative to the low-level VestaSource interface.
DiffIssues talks about issues with implementing a general-purpose diff for Vesta.
/RunToolRoster has implementation notes for a new way for evaluators to find RunToolServers
/NoCacheRunTool has some notes for how one might make /**nocache**/ work for the _run_tool primitive function
Administrivia
If you want to check in under /vesta/vestasys.org you'll need access to dev.vestasys.org (the repository with mastership of that hierarchy). (You'll need help from the project administrators for either of these.) You have two options:
The vestasys.org VPN can be used to create a secure tunnel which will allow your repository and its client hosts to access dev.vestasys.org as a peer repository. This allows you to perform remote checkouts from and checkins back to dev.vestasys.org.
If there's some reason why the VPN is not an option for you (e.g. a network security policy you don't have control over), we can give you an account on dev.vestasys.org which you can log into using ssh. (See DevUserInfo including SshPortForwardingExample.)
ReleasePlans is where we keep plans of what will go into upcoming Vesta releases
/ReleasePhases describes how we intend to schedule our work towards each release
/BranchStatus explains how we keep track of the different branches containing active development work
/ChangeEmailTrigger Suggested trigger setup to send e-mail when you make changes to the Vesta code
/CodeReviewTools Some notes about different code review tools we might use with Vesta