<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
<style type="text/css">
/* <![CDATA[ */ @import "/branding/css/tigris.css"; /* ]]> */
</style>
  <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />
  <title>SourceCast 2.0.0 Release Notes</title>
 </head>
 <body class="docs">
<div class="docs" id="releasenotes"> 
  <h1>SourceCast 2.0.0 Release Notes</h1>
  <h3>Table of Contents</h3>
  <dl> 
    <dd> 
      <dl> 
        <dt><a href="#Overview">Overview</a></dt>
        <dd> 
          <ul>
            <li><a href="#Releases">Previous Releases</a></li>
            <li><a href="#SourceCastVersionNumbers">SourceCast Version Numbers</a></li>
            <li><a href="#browser">Supported Client Tools</a></li>
          </ul>
        </dd>
        <dt><a href="#New">New Features</a></dt>
        <dt><a href="#Bug">Bug Fixes</a></dt>
        <dt><a href="#Known">Known Issues</a></dt>
      </dl>
    </dd>
  </dl>
  <h3><a id="overview" name="overview">Overview</a></h3>
  <p>CollabNet will deliver a major release, SourceCast 2.0.0, in June, 2002.</p>
  <h4><a id="Releases">Previous Releases</a></h4>
  <p>The current release, 2.0.0, is a major SourceCast release that succeeds the 
    SourceCast 1.0.0 and subsequent releases. This release includes the features 
    and changes included in previous versions of SourceCast. This document should 
    be used in with conjunction with the release notes for the following releases:</p>
  <ul>
    <li><a href="#a110">SourceCast 1.1.0</a></li>
    <li><a href="#a120">SourceCast 1.2.0</a></li>
    <li><a href="a13i0">SourceCast 1.3i.0</a></li>
  </ul>
  <p>Please contact your CollabNet Sales Representative for further details about 
    upgrading your site.</p>
  <p>The following features were released in previous versions of SourceCast:</p>
  <table cellspacing="2" cellpadding="2" width="98%" border="1">
    <tr> 
      <th>Release</th>
      <th>Feature</th>
    </tr>
    <tr> 
      <th><a id="a110" name="a110">1.1.0</a></th>
      <td> 
        <h4>Availability and Performance Improvements</h4>
        <p>CollabNet has significantly improved performance and availability of 
          the SourceCast hosted service. SourceCast 1.1.0 is now deployed on an 
          enhanced network file storage system that provides improvements in file 
          sharing, caching and data access. With this new server-side configuration 
          CollabNet delivers significant improvements in availability and performance 
          of the SourceCast hosted service by:</p>
        <ul>
          <li>Clustering data shared amongst a set of load balanced systems</li>
          <li>Providing complete failover capabilities</li>
          <li>Keeping data synchronized at all times</li>
          <li>Simplifying backups</li>
          <li>Providing access to authorized private networks</li>
        </ul>
        <h4>CVS version update</h4>
        <p>SourceCast Release 1.1.0 uses the most current version of CVS (version 
          1.11p1) as a base for SourceCast. All code enhancements from the previous 
          CVS version (1.11) have been included with this new version upgrade.</p>
      </td>
    </tr>
    <tr> 
      <th><a id="a120" name="a120">1.2.0</a></th>
      <td> 
        <h4>System enhancements</h4>
        <ul>
          <li>Low bandwidth connection - client support for 56K modems</li>
          <li>New caching mechanism</li>
          <li>JVM clustering</li>
          <li>Cert/ACL Safety net</li>
        </ul>
        <h4>Issue Tracking rebuild system</h4>
        <ul>
          <li>Performance testing</li>
          <li>New API testing</li>
          <li>Data migration testing</li>
        </ul>
        <h4>Simplified administrative tasks</h4>
        <ul>
          <li>Single page project add</li>
          <li>Ability to rename bug mailing list to issues for IssueZilla</li>
          <li>Projects can now belong to more than one category</li>
          <li>Clone roles from existing roles</li>
          <li>Capability for mass user-deletes and member additions</li>
          <li>Improved Custom Role administration</li>
          <li>License Administration</li>
          <li>Project-scoped roles/resources</li>
          <li>Email sent to new users selectable</li>
          <li>Delete several users at the same time</li>
        </ul>
        <h4>Project enhancements</h4>
        <ul>
          <li>Add projects to start page (Watch projects)</li>
          <li>Nested projects, groups, categories</li>
        </ul>
        <h4>User Interface Overhaul</h4>
        <ul>
          <li>New help documentation layout</li>
          <li>Revision, cleanup of all HTML</li>
          <li> Project documents- move document files to another folder (windows 
            like paradigm) 
            <ul>
              <li>Combine downloads and documentation into a single tool</li>
              <li>Collapsible folders within 2 panes</li>
            </ul>
          </li>
          <li>Project news</li>
          <li>Custom role view</li>
          <li>Login moved to upper right</li>
          <li>Nested functions on left navigation bar</li>
          <li>My projects list; improved tab interface.</li>
        </ul>
      </td>
    </tr>
    <tr> 
      <th><a id="a13i0" name="a13i0">1.3i.0</a></th>
      <td><i>SourceCast 1.3i.0 was an interim release for Internationalization. 
        The new features included in the 1.3i.0 release are listed in the <a href="#new">New 
        Features</a> section of this document</i></td>
    </tr>
  </table>
  <h4><a id="SourceCastVersionNumbers">SourceCast Version Numbers</a></h4>
  <p>CollabNet uses the following convention for SourceCast version numbers to 
    indicate major, minor or maintenance releases. A release number is made up 
    of three sets of digits, for e.g., SourceCast <i>1.3.2</i>. If the release 
    number is 'SourceCast x.y.z' then <b>x</b>, <b>y</b> and <b>z</b> represent</p>
  <ul>
    <li>x - major release number</li>
    <li>y - minor release number</li>
    <li>z - maintenance release number</li>
  </ul>
  <p>The current release,2.0.0, is a major SourceCast release that succeeds all 
    releases in the 1.x.x line.</p>
  <h4><a id="browser" name="browser">Supported Client Tools</a></h4>
  <dl> 
    <dt>Supported Browsers</dt>
    <dd> SourceCast is designed to be usable with almost any browser or configuration, 
      but the visual formatting will be most sophisticated in browsers with quality 
      support for the W3C's Cascading Style Sheets technology (CSS-1, 1996). These 
      browsers include: 
      <ul>
        <li>All derivatives of the Mozilla project, including Mozilla 1.0, Netscape 
          Communicator versions 6.0 and above, Galeon, and others</li>
        <li>Microsoft Internet Explorer versions 5.0 and above</li>
        <li>Konqueror versions 2.1 and above</li>
        <li>Opera 5.0 and above</li>
      </ul>
      <p><strong>Note:</strong> The Netscape 4.x series of browsers has poor support 
        for CSS, and receives only a simplified version of the style sheet apparent 
        in the browsers above. As a result, SourceCast's visual formatting in 
        Netscape 4.x is simpler than elsewhere. Note also that Netscape 4.x's 
        CSS support is dependent upon Javascript being enabled, so the formatting 
        will be especially plain if the user disables Javascript (or style sheets) 
        support.</p>
      <p>Also, note that some browsers with incomplete or developmental support 
        for CSS will have difficulties presenting SourceCast unless the user disables 
        CSS. At this time, these browsers include:</p>
      <ul>
        <li>iCab</li>
        <li>OmniWeb</li>
      </ul>
    </dd>
    <dt>Supported CVS GUI Environment Clients</dt>
    <dd>SourceCast 1.3.0i supports the following CVS GUI environment clients: 
      <table width="75%" border="0" cellspacing="2" cellpadding="2">
        <tr valign="top"> 
          <td>Windows Platforms</td>
          <td> 
            <p>GNU WinCVS 1.2</p>
          </td>
        </tr>
        <tr valign="top"> 
          <td>Macintosh</td>
          <td>GNU MacCVS 3.1</td>
        </tr>
      </table>
    </dd>
    <dt>Supported CVS GUI Environment Clients</dt>
    <dd> SourceCast 1.3.0i supports the following CVS GUI environment clients: 
      <ul>
        <li>GNU WinCVS 1.2</li>
        <li>GNU MacCVS 3.1</li>
      </ul>
    </dd>
  </dl>
  <h3><a id="new" name="new">New Features</a></h3>
  <p>The following features have been added to SourceCast 2.0.0:</p>
  <table cellspacing="2" cellpadding="2" width="98%" border="1">
    <tr> 
      <th>Functionality</th>
      <th>Benefits</th>
    </tr>
    <tr> 
      <th>*Internationalization</th>
      <td> Full internationalization of SourceCast to support localization for 
        multibyte character sets. All SourceCast tools are internationalized to 
        allow the use of the local language for collaboration. For general interoperability 
        the following items have not been internationalized: 
        <ul>
          <li>project names</li>
          <li>user names</li>
        </ul>
        <p>Searching does not support multibyte characters in the 2.0.0 release. 
          This shall be addressed in a later release. </p>
        <p>ViewCVS, for viewing source code trees, does not support multibyte 
          file names. </p>
        <p>Regular expressions are not supported with multibyte characters. </p>
      </td>
    </tr>
    <tr> 
      <th>Java components run using native threads</th>
      <td> 
        <p>This offers a significant performance improvement.</p>
      </td>
    </tr>
    <tr> 
      <th>*Tomcat servlet engine</th>
      <td>Increases the ease of use of third party tools within the SourceCast 
        environment.</td>
    </tr>
    <tr> 
      <th>*Replace CVSWeb with ViewCVS</th>
      <td>Greater functionality is offered by ViewCVS (such as annotation of commits).</td>
    </tr>
    <tr> 
      <th>New Tool - Discussion Forums</th>
      <td> Threaded discussions allow project members to hold discussions on topics 
        that are easy to follow. Discussions are automatically archived and easily 
        searched by topic, writers, date, and text within the discussion. 
        <p>New discussion items on My Start Page. Notifications of new discussion 
          items created in discussions that the user is subscribed to are displayed 
          on the user's Start Page.</p>
      </td>
    </tr>
    <tr> 
      <th>Lookup window for user assignments in IssueZilla</th>
      <td>IssueZilla can be configured to use a separate lookup window for locating 
        users when assigning issues. This is used for user assignments in such 
        fields as "assigned to", "cc:", and "QA contact".</td>
    </tr>
    <tr> 
      <th>IssueZilla contacts can be read-only</th>
      <td>IssueZilla can be configured so that the QA contact cannot be changed 
        by the user. In this configuration the QA contact is set based on the 
        component that the issue is assigned to.</td>
    </tr>
    <tr> 
      <th>New version numbers span components</th>
      <td>When a new version number, for reporting where a defect is found, is 
        entered into the configuration it is available for all components. It 
        is no longer necessary to configure the version numbers for each component 
        separately.</td>
    </tr>
    <tr> 
      <th>*Copy IZ issues between projects</th>
      <td>An issue may be copied once from one project to another. Previously, 
        this function needed to be performed manually by creating a new issue 
        in the target project and entering all of the necessary data. This can 
        be used to move an issue by copying the issue and then closing the "old" 
        issue.</td>
    </tr>
    <tr> 
      <th>*Per project limits on email announcements</th>
      <td> 
        <p>On a per project basis IssueZilla can be configured to send only summary 
          information and the URL of the issue when change notifications are sent. 
          This feature takes advantage of email, an unsecure delivery method, 
          for security conscious sites.</p>
      </td>
    </tr>
    <tr> 
      <th>*Configurable IssueZilla operating parameters</th>
      <td>The configurable operating parameters for IssueZilla can now be set 
        through the administration UI. This allows project owners a very high 
        level of flexibility in the way they manage issues for their project.</td>
    </tr>
    <tr> 
      <th>*Customizable My Issues query in IssueZilla</th>
      <td> 
        <p>Users can now easily customize the query that is performed when they 
          click on the "My Issues" link in IssueZilla.</p>
      </td>
    </tr>
    <tr> 
      <th>New reporting Interface</th>
      <td>The reporting interface (that didn't work) has been replaced with a 
        new one that can be used to produce simple reports on issues. It includes 
        the ability to construct a table of issue counts or issue numbers with 
        rows and columns selected by the user. Filtering on text fields allows 
        for refinement of the results. From the results query lists, issues can 
        be navigated to directly.</td>
    </tr>
    <tr> 
      <th>Failed query returns to query page</th>
      <td>When there are no results from a query the user is returned to the query 
        page that they used to define the query and informed that there were no 
        results. This allows users to modify their query immediately to be able 
        to find the information that they were really looking for.</td>
    </tr>
    <tr> 
      <th>Order of description/comments can be specified by the user</th>
      <td>When viewing an issue the user may specify whether the description/comments 
        for the issue are displayed in newest to oldest (with the latest comment 
        at the top of the display) or oldest to newest order (with the original 
        description at the top of the display).</td>
    </tr>
    <tr> 
      <th>Contextual navigation links</th>
      <td>Contextual navigation links are used to indicate the project/sub-project 
        and tool that the user is currently using. These links can be used to 
        navigate easily between sub-projects and their parents. This feature is 
        sometimes referred to as project paths or breadcrumbs. </td>
    </tr>
    <tr> 
      <th>Better project organization</th>
      <td>On the projects page, projects and sub projects can be seen together. 
        Sub projects are listed with their parents so that the full "path" to 
        a project can be seen, making them easier to navigate.</td>
    </tr>
    <tr> 
      <th>Project approval logging</th>
      <td>The approving and dis-approving of projects is logged and visible by 
        the administrator.</td>
    </tr>
    <tr> 
      <th>Document locking</th>
      <td>Documents in the file sharing area can be locked by the owner so that 
        other users can not make changes. Project Owners have editing rights to 
        all documents.</td>
    </tr>
    <tr> 
      <th>Document copying</th>
      <td>Documents may be copied either within the same folder or to a different 
        folder in the same project. </td>
    </tr>
    <tr> 
      <th>UI cleanup</th>
      <td>Continuing the work to make all of the tools in SourceCast offer a consistent 
        user interface, to make it even easier to learn how to use SourceCast 
        efficiently.</td>
    </tr>
    <tr> 
      <th>Email archive message deletion </th>
      <td>Trivial , unrelated, and spam messages sent to the email list can now 
        be removed from the archive.</td>
    </tr>
    <tr> 
      <th>Custom 404 error page</th>
      <td>Administrators can create project specific error pages to provide specific 
        instructions to users.</td>
    </tr>
    <tr> 
      <th>Paginated search results</th>
      <td>Results of a search are presented in pages to make it easier to browse 
        them.</td>
    </tr>
  </table>
  <p>* <i>These features were originally released with SourceCast 1.3i.0</i></p>
  <h3><a id="Bug" name="Bug">Changes and Fixes in SourceCast 2.0.0</a></h3>
  <p>The following issues have been addressed for SourceCast 2.0.0.</p>
  <h4>CVS module</h4>
  <ul>
    <li> CVS now empties the /tmp directory preventing errors caused by inability 
      to write to that directory.</li>
    <li> Content developer can commit to /www/ project.</li>
    <li> Corrected log file permissions to prevent an error message in the CVS 
      commit output.</li>
    <li> Added secure CVS ticketing.</li>
    <li> Contextual navigation links have replaced the ViewCVS directory history</li>
  </ul>
  <h4>Discussion Forums</h4>
  <ul>
    <li> Corrected localization text for key MarkAsRead</li>
    <li>Duplicate forum names have been disallowed</li>
    <li> Removing users' roles in projects unsubscribes them from the project's 
      discussion forums.</li>
  </ul>
  <h4>File Sharing</h4>
  <ul>
    <li> Error message when uploading files via Nidaba</li>
    <li> File names can contain non-alphanumeric characters.</li>
    <li> Email notifications now being sent to project owners for suggested documents 
      or sections in file sharing</li>
    <li> 'Save as' file name matches the downloaded file name when users use their 
      browsers "Save as..." function.</li>
    <li> User cannot move file form one folder to another.</li>
    <li> File sharing allows only 4 levels of subfolders. The add folder link 
      no longer appears when viewing the 4th level folder.</li>
    <li> Corrected links on the on document approval screen so that the administrator 
      or project owner can view suggested files.</li>
  </ul>
  <h4>Issue Tracking</h4>
  <ul>
    <li> Corrected errors in translating multibyte characters to Japanese.</li>
    <li> Corrected errors caused by multiple dependencies. Specifying more than 
      one dependency or block no longer produces 'error in bug_form.pl'</li>
    <li> Query results can be sorted by assignee.</li>
    <li> Users will see a read only display if the user is not logged in or logged 
      in w/o sufficient permissions.</li>
    <li> Added "Issue Activity" to IZ export</li>
    <li> IssueZilla imports "Issue Activity" when importing IZ issues</li>
    <li> "Sort By: Oldest first | Newest first" functionality points to the correct 
      issue number.</li>
    <li> Netscape autodetect defaults to Shift-JIS encoding.</li>
    <li> Corrected incomplete Japanese translation.</li>
    <li> IZ defaults to the target milestone (e.g., 'milestone 1') whenever a 
      reported issue is subject to a state change, unless a valid target milestone 
      has previously been set.</li>
    <li> Site navigation no longer appears when viewing HTML attachments.</li>
    <li> In locales that use multibyte characters IZ checks the length of strings 
      being inserted in bytes before insertion. IZ will return an error if the 
      maximum length is exceeded.</li>
    <li> Created translatable keys for "Submit."</li>
    <li> Cannot assign issues to disabled users.</li>
    <li> Corrected email notification behavior associated with the "only send 
      me mail on issues where I am cc:ed" option .</li>
    <li> Edited IZ page text.</li>
    <li> IZ database passwords can contain any character other than a single quote 
      (').</li>
    <li> Added option to view query output as XML.</li>
    <li> Generated torque-like XML schema for IZ for indexing and cross-project 
      searching.</li>
  </ul>
  <h4>Mailing Lists</h4>
  <ul>
    <li> Can unsubscribe multiple email addresses from a mailing list.</li>
    <li> Added new error message to display when users attempt to view a deleted 
      message.</li>
    <li> Corrected problem in MM JDBC PreparedStatement class to allow inserting 
      multibyte data.</li>
    <li> Multibyte subjects which are not MIME-encoded are no longer garbled.</li>
    <li> Corrected "All" link on SummarizeList page to work when viewing list 
      by date.</li>
    <li> Threads with only a single message are no longer dropped when viewing 
      messages by thread.</li>
    <li> Corrected "Search" label word fragmentation in Japanese translation</li>
    <li> Corrected redirect after deleting mailing list</li>
    <li> "Filter" in mailing-list admin is case-insensitive</li>
    <li>Added permissions to Registered User and Guest Users to allow them to 
      view Mailing Lists</li>
    <li> When a blank line is followed by a line starting with "From" in the body 
      of a message, From is replaced with &gt;From to prevent this construct from 
      being interpreted as the start of a new message.</li>
    <li> Mail is categorized and sorted according to the Received date.</li>
    <li> Corrected field explanation on the List Admin page.</li>
    <li> Created more informative default list descriptions.</li>
    <li> Corrected mail encoding for ezmlm control messages.</li>
  </ul>
  <h4>Project News</h4>
  <ul>
    <li> News item headlines links no longer break access to body</li>
    <li> Corrected formatting in NewsItemView</li>
    <li> NewsItem Headline no longer appears in the Description column on the 
      StartPage.</li>
    <li> Added year to the publish date for news.</li>
    <li> Once a news item is approved, suggester can not edit it without the correct 
      permissions.</li>
  </ul>
  <h4>Projects</h4>
  <ul>
    <li> Non-default project owner on new projects</li>
  </ul>
  <h4>System</h4>
  <ul>
    <li> Added bad robot entries to httpd.conf.</li>
    <li> Implemented new crontab entry and run-parts script grouping.</li>
    <li> Corrected how the Terms of Use page is rendered in Mozilla.</li>
    <li> Removed bad link on the Domain Feedback page.</li>
    <li> Corrected Edit Password page to allow users to request a new password 
      on sites that do not allow "Guest User" access.</li>
    <li> Removed word-wrap from long URLs in emails.</li>
    <li> Changed RoleAdd to allow users without Role - Add in domain/host see 
      a list of clonable roles.</li>
    <li> Changed logs to include record of project approval and disapproval.</li>
    <li> Changed wording of welcome e-mail.</li>
    <li> Changed the method of accessing the site so that if there is no domain 
      matching the user's request, the user will be redirected to the domain home 
      page of the default domain.</li>
    <li> Removed redundancies from page guides.</li>
    <li> Added links to category operations to the ProjectEdit page.</li>
    <li> Changed exception page so that any exception will display an ErrorPage 
      with a stack trace.</li>
    <li> Added commas in role list on ProjectMemberList to separate role names.</li>
    <li> Corrected redirect so that after creating a domain role, the user sees 
      the domain role list.</li>
    <li> Changed "grant role on project creation" option for project-specific 
      roles to "grant role on sub-project creation."</li>
    <li> Removed cancel button on ProjectEdit page.</li>
    <li> Changed permissions on Ad-hoc query and Broadcast message functionality 
      to make them available to domain admins.</li>
    <li> Corrected html of www content to render properly in MacIE</li>
    <li> Changed the Terms of Use page to log user out when user selects disagree.</li>
    <li> Changed project navigation to show only those links relevant to the current 
      project.</li>
    <li> Fixed broken links on the Lock/unlock project page.</li>
    <li> Changed project invitation to return the following error when the email 
      address invited does not match the email address of the user account: "There 
      is no user registered with an email address of "user@domain". Either use 
      a different email address or contact your administrator to have an account 
      created for the user you want to invite."</li>
    <li> Changed directory structure to avoid filename conflicts in case-insensitive 
      filesystems</li>
    <li> Changed error message to show page not found error if user attempts to 
      access a nonexistent project within an existing domain.</li>
    <li> Changed Join servlet to give informative message when users who are already 
      project members attempt to access the page.</li>
    <li> Upgraded database initialization process for components.</li>
    <li> Disabled LONG_DESCRIPTION when USE_INDEX is set.</li>
    <li> Added message to Project, ProjectGroup, and Category delete servlets 
      to notify users of the existence of subprojects. Projects, project groups 
      and categories cannot be deleted if they have subprojects associated with 
      them.</li>
    <li> Corrected URL for ssl that appears in the suggested download rejection 
      email.</li>
    <li> Session errors are no longer displayed on subsequent requests.</li>
    <li> Removed limit on number of search results returned.</li>
    <li> Corrected search method to allow searching for mixed letters and numbers 
      (e.g. i18n)</li>
    <li> Contributor Agreement PDF file shows up for all users.</li>
    <li> UserEdit shows group membership.</li>
    <li> Added port number to email containing autogenerated password.</li>
    <li> Corrected HTTP references which contained "/" instead of "./"</li>
    <li> Removed "Roles" link from Project Tools list</li>
  </ul>
  <h4>User Interface</h4>
  <ul>
    <li> Corrected gray "site search" box so that it is not below lower boundary 
      in IE 6.</li>
    <li> Changed RoleEdit to sort permissions in alphabetical order.</li>
    <li> Removed inconsistency in the labeling of "Roles" and "Role(s)".</li>
    <li> Added checkbox to project list does not offer to show subcategories.</li>
    <li> Corrected table behavior with combination of parent project's index.html 
      and subprojects list.</li>
    <li> Corrected required field markers so they do not appear orphaned.</li>
    <li> Corrected the invitation email so that the project description does not 
      appear as raw HTML.</li>
    <li> Clarified language for approving roles on ProjectMemberList</li>
    <li> Removed case inconsistencies in project names.</li>
    <li> Updated copyright notice range.</li>
    <li> Added a link to the CollabNet tools page.</li>
    <li> Added a notice of project creation time.</li>
  </ul>
  <h3><a id="known" name="known">Known Issues with SourceCast 2.0.0</a></h3>
  <p>The following are known issues that may be encountered by users of SourceCast 
    Release 2.0.0.</p>
  <h4>CVS Module</h4>
<ul>
    <li> On some sites, the use of 'cvs admin -u' command causes the CVS server 
      to crash. Until this issue is addressed in the next release of SourceCast, 
      it is not recomended to use the 'cvs admin -u' command.</li>
    <li> Japanese localized sites do not allow double-byte file names. This issue 
      will be addressed in the next SourceCast release.</li>
    <li> CVS Paths use a symbolic link to the actual cvs repository. This causes 
      some scripts to break. This issue will be addressed in the next SourceCast 
      release. </li>
    <li> If users import files into a module that does not exist, CVS creates 
      that module outside of any project. This will be addressed in the next SourceCast 
      release. </li>
</ul>
<h4>Project Mailing Lists</h4>
  <ul>
    <li> Revoking the project owner role doesn't regenerate the owner@ alias which 
      is used as the moderator for the mailing lists. To work around this issue, 
      revoke the ownership role first, and then grant the new one. This issue 
      will be addressed in the next SourceCast release.</li>
    <li> Critical error message is displayed when a duplicate mail list is registered, 
      but the error message doesn't state a reason. This issue will be addressed 
      in the next SourceCast release.</li>
    <li> Searching within the mail does not allow using non-alphanumeric characters. 
      This issue will be addressed in thenext SourceCast release.</li>
    <li> Mail archives are not receiving all messages. This issue will be addressed 
      int he next SourceCast release.</li>
  </ul>  
  <h4>Project File Sharing</h4>
  <ul>
    <li> The following text needs to be shown only to users who lack the required 
      permissions to add files: "New files must be approved by the project owner 
      before they will be visible to other users." This issue will be addressed 
      in the next SourceCast release.</li>
    <li> Changing the file name when copying a file causes a critical error in 
      File Sharing. This issue will be addressed in the next SourceCast release</li>
  </ul>
  <h4>System</h4>
  <ul>
    <li> SourceCast tools do not currently use a single time zone for timestamping. 
      this issue will be addressed in the next SourceCast release.</li>
    <li> Date/time committed for Scarab Issue does not reflect the correct time. 
      If an issue is created in scarab or a file is created in nidaba and the 
      time zone for helm is set to GMT, the time in the database will be in GMT. 
      Changes to the display timezone incorrectly transform the meaning of dates 
      which are already in the database because MySQL's date format doesn't include 
      timezone. If the display timezone is changed, the server must be restarted. 
    </li>
    <li> New projects should be all lowercase and a warning given if uppercase 
      letters are used. This issue will be asddressed in the next SourceCast release.</li>
    <li> Performance of the acl degrades as more roles are added to a project. 
      This issue will be addressed in the next SourceCast release.</li>
  </ul>
  <h4>User Interface</h4>
  <ul>
    <li> Japanese version using IE 5.5 shows blank pages for all pages when language 
      preference is set to English. This issue will be addressed int he next SourceCast 
      release.</li>
  </ul>
</div>
 </body>
</html>


