<html>
<head>

<title>Project Resources for Members: Project Downloads</title>


<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>

<p><span class="Header"><b>Project Files</b></span>
<p>
<span class=plaintext><b>Project resources for members: Index</b>
<p>
 <ul><dl>
        <dt><a href="ProjectMemberResources.html">Project resources for members</a></dt>
        <dd><a href="ProjectHome.html">Project Home Page</a></li></dd>
        <dd><a href="ProjectNews.html">Project News</a></li></dd>
		<dd><b>You are here: Project Files
		<ul>
		<li><a href="#whatfor">What are project files?</a>
		<li><a href="#downloadingfiles">Downloading and verifying files</a>
		</ul></b>
        <dd><a href="ProjectMemberList.html">Project Members</a></li></dd>
        <dd><a href="ProjectMail.html">Project Mailing Lists</a></li></dd>
	<dd><a href="ProjectDocuments.html">Project Documents</a>
        <dd><a href="ProjectSource.html">Project Source Code</a></li></dd>
        <dd><a href="ProjectIssues.html">Project Issues</a></li></dd>
  </dl>
<dt><a href="/servlets/HelpTOC">Back to main Help index</a>
</ul>
<p>

<hr noshade size=1>
<a name="whatfor"></a><span class="InputHeader">What are project files?</span>

<p>The <b>Project Files</b> page, maintained by the Project Owner or whomever she has delegated, lists all those project-related files that can be easily downloaded and which do not require a concurrent versioning system (CVS) for tracking simultaneous effort. If you wish to download source code, which does require CVS, please first read the <a href="ProjectSource.html">Project Source help</a> page. Depending on the project owner's preferences, the files on the <b>Project Download</b> page can include binaries, "tarballs," "zip" files, graphics, and more. Generally, the files available here represent the results of the project's completed or milestone efforts. Working files and documents for this project can be found on the <b>Project Documentation</b> page.
<p>The <b>Project Files</b> page is laid out so that you can easily see the title of the file, a brief description of it, and its MD5 Checksum. This latter feature, the MD5 Checksum, is a number that uniquely identifies each file. If you have a Linux machine, or have access to a Unix-type system at your download location, you can generate an MD5 number and check it against the number on the site. The two should be identical; if they are not, it indicates that the file has been corrupted in transit, and should not be used.</p>

<hr noshade size=1>
<a name="downloadingfiles"></a><span class="InputHeader">Downloading and verifying files</span>

<p>To download a file, click on the underlined title of the file. The download should then commence immediately. If you have the capability, once the file has been downloaded, you can check it's MD5 number against that posted on the site.

<p>If, for some reason, the download did not work (and you've tried at least once again), be sure to contact the Project Owner, informing her of the problematic file, the nature of your difficulty, and of the particulars of your computer set up.


<hr noshade size=1>
<a href="/servlets/HelpTOC">Back to main Help index</a>
</span>

</body>
</html>
