LibCVS specification is a GNU project which defines an API for accessing CVS repositories. There are several implementations currently in progress.
In addition to defining the API, it acts as a communication hub for the developers of the various implementations, to discuss issues around LibCVS implementation, and CVS interoperability in general.
This project was originally hosted at http://libcvs.cvshome.org/, which also included several implementations under a single project. The specification has now been split off into its own project, hosted here. The implementation projects are also migrating to Savannah.
A Perl client implementation of LibCVS is available under the traditional Perl license, a disjunction of the Artistic license and the GPL. It is currently at version 1.0.1, and is available through CPAN or https://savannah.nongnu.org/projects/libcvs-perl/ It supports read only access to the repository and working directory.
Development of an Objective C client implementation is now underway. It will be hosted at Savannah shortly, and will probably be called LibCVS-ObjectiveC.
There are also some non-LibCVS libraries which may be of interest.
It's not part of LibCVS, but Eivind Eklund has a Perl library for parsing CVS's RCS files. It's available at http://people.freebsd.org/~eivind/CVSFile-0.2.tar.gz
The jCVS project uses a native Java implementation of the CVS Client protocol. This implementation is available through the GJT, at http://www.gjt.org/pkgdoc/com/ice/cvsc/ .
An implementation of the cvsclient protocol in Python, pyCVS on sourceforge.
The specification is still in Alpha state, so only the most recent version is available. When a library makes it to production quality, the matching specification will be assigned a version number and made an official version.
Latest Version (Alpha)The following documents are geared to help developers implementing the LibCVS specification. They accumulate the experience of all the developers who have worked on LibCVS implementations, and are a work in progress.