Subversion's modular design (covered in the section called “Layered Library Design”) and the availability of language bindings (as described in the section called “Using Languages Other than C and C++”) make Subversion a likely candidate for use as an extension or backend to other pieces of software. In this appendix, we'll introduce you to some of the third-party tools which are using Subversion. We will not cover actual Subversion clients—see Appendix E, Other Subversion Clients for those.
Perhaps the first—and definitely the most popular—utility to take advantage of Subversion's public API is ViewCVS. ViewCVS is essentially a CGI script which enables browsing of the files and directories of a version control system. Originally designed as a Python-based replacement for the popular cvsweb utility, [41] ViewCVS provides a full-featured Web-based interface to CVS repositories, allowing folks to see the version control history of the files in those repositories and to perform such nifty tasks as generating differences between arbitrary versions of those files.
In the early part of 2002, the repository accessing portion of ViewCVS was modularized into a semi-generic interface, and a pair of modules were grown to provide that functionality for CVS repositories. Later that year, Subversion's Python language bindings sufficiently matured, and a Subversion repository module was written for the ViewCVS interface. Now, ViewCVS is able to browse Subversion repositories, providing essentially the same history and differencing mechanisms for those repositories as are available for CVS ones.
For more information on ViewCVS, see the project's website at http://viewcvs.sf.net/.