<!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>
  <script src="/branding/scripts/sc.js" type="text/javascript"></script>
  <link rel="stylesheet" type="text/css" href="/branding/css/print.css" media="print" />

  <title>SourceCast 2.0.3 Release Notes</title>

 </head>

 <body class="docs" onLoad="self.focus()">
  
<div class="docs" id="releasenotes">
  <h2>SourceCast 2.0.3 Release Notes</h2>
  <div id="toc">
     
    <ul>
      <li><strong><a href="/nonav/servlets/HelpTOC">Help index</a></strong></li>
    </ul>
    <ul>
      <li><a href="#Overview">Overview</a></li>
      <ul>
          
        <li><a href="#Releases">Previous Releases</a></li>
        <li><a href="#SourceCastVersionNumbers">SourceCast Version Numbers</a></li>
        <li><a href="#TermsNote">Note on Terms of Use for International Users</a></li>
        <li><a href="#browser">Supported Client Tools</a></li>
      </ul>
      <li><a href="#New">Enhancements</a></li>
      <li><a href="#Bug">Changes and Fixes</a></li>
      <li><a href="#Known">Known Issues</a></li>
    </ul>
  </div>
  <h3><a id="overview" name="overview">Overview</a></h3>
  <p>CollabNet delivered a maintenance release, SourceCast 2.0.3, in February, 2003.</p>
  <h4><a id="Releases">Previous Releases</a></h4>
  <p>The current release, SourceCast 2.0.3, is a maintenance release that succeeds 

  the SourceCast 2.0.0 release. This release includes the features and changes included 

  in previous versions of SourceCast. This document should be used in 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>
    <li><a href="#a200">SourceCast 2.0.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">2.0.0</a> 
      section of this table and marked with an asterisks (*).</i></td>
    </tr>

    <tr> 

      <th><a name="a200" id="a200"></a>2.0.0</th>
      <td> <b>*Internationalization</b> 

        <ul>

          <li>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>
          <li>Searching does not support multibyte characters in the 2.0.0 release. 

            This shall be addressed in a later release. </li>
          <li>ViewCVS, for viewing source code trees, does not support multibyte 

            file names. </li>
          <li>Regular expressions are not supported with multibyte characters. 

          </li>
        </ul>
        <b>Java components run using native threads</b> 

        <ul>

          <li>This offers a significant performance improvement.</li>
        </ul>
        <b>*Tomcat servlet engine</b> 

        <ul>

          <li>Increases the ease of use of third party tools within the SourceCast 

            environment.</li>
        </ul>
        <b>*Replace CVSWeb with ViewCVS</b> 

        <ul>

          <li>Greater functionality is offered by ViewCVS (such as annotation 

            of commits).</li>
        </ul>
        <b>New Tool - Discussion Forums</b> 

        <ul>

          <li>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.</li>
          <li>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.</li>
        </ul>
        <b>Lookup window for user assignments in IssueZilla</b> 

        <ul>

          <li>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".</li>
        </ul>
        <b>IssueZilla contacts can be read-only</b> 

        <ul>

          <li>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.</li>
        </ul>
        <b>New version numbers span components</b> 

        <ul>

          <li>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.</li>
        </ul>
        <b>*Copy IZ issues between projects</b> 

        <ul>

          <li>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.</li>
        </ul>
        <b>*Per project limits on email announcements</b> 

        <ul>

          
          <li>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.</li>
        </ul>
        <b>*Configurable IssueZilla operating parameters</b> 

        <ul>

          <li>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.</li>
        </ul>
        <b>*Customizable My Issues query in IssueZilla</b> 

        <ul>

          <li>Users can now easily customize the query that is performed when 

            they click on the "My Issues" link in IssueZilla. </li>
        </ul>
        <b>New reporting Interface</b> 

        <ul>

          <li>The reporting interface 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.</li>
         
        </ul>
        <p><b>New XML view of issues</b></p>
        <ul>
          <li>Issue detail and query results pages contain links to view issue or query results as XML.</li>
        </ul>
        <p>
        <b>Failed query returns to query page</b> 
        </p>
        <ul>

          <li>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.</li>
        </ul>
        <b>Order of description/comments can be specified by the user</b> 

        <ul>

          <li>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).</li>
        </ul>
        <b>Contextual navigation links</b> 

        <ul>

          <li>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. </li>
        </ul>
        <b>Better project organization</b> 

        <ul>

          <li>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.</li>
        </ul>
        <b>Project approval logging</b> 

        <ul>

          
          <li>The approving and disapproving of projects is logged and visible by 
          the administrator.</li>
        </ul>
        <b>Document locking</b> 

        <ul>

          <li>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.</li>
        </ul>
        <b>Document copying</b> 

        <ul>

          <li>Documents may be copied either within the same folder or to a different 

            folder in the same project. </li>
        </ul>
        <b>UI cleanup</b> 

        <ul>

          <li>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.</li>
        </ul>
        <b>Email archive message deletion </b> 

        <ul>

          <li>Trivial , unrelated, and spam messages sent to the email list can 

            now be removed from the archive.</li>
        </ul>
        <b>Custom 404 error page</b> 

        <ul>

          <li>Administrators can create project specific error pages to provide 

            specific instructions to users.</li>
        </ul>
        <b>Paginated search results</b> 

        <ul>

          <li>Results of a search are presented in pages to make it easier to 

            browse them.</li>
        </ul>
      </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.3, is a maintenance release of SourceCast that succeeds all releases in the 2.x.x line.</p>
  <h4><a id= "TermsNote" name="TermsNote">Note on Terms of Use for International Users</a></h4>
  <p>In SourceCast 2.0.3 and all prior releases the buttons for accepting or declining the terms of use agreement, which users see and need to agree to on their first login to SourceCast, are only available in English.  This is consistent with the terms of use agreement itself which is also only available in English.</p>
  <p>Users who have a non-English primary language setting for their browser will 
  have to agree to an agreement in English.</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 2.0.3 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>&nbsp;</dt>
    <dd>&nbsp;</dd>
  </dl>
  <h3><a id="new" name="new">Enhancements</a></h3>
  <p>SourceCast 2.0.3 is a maintenance release focussing on defect repairs and does 
  not include any new functionality.</p>
  <h3><a id="Bug" name="Bug">Changes and Fixes in SourceCast 2.0.3</a></h3>
  <p>The following issues have been addressed for SourceCast 2.0.3:</p>
  <h4>Issue tracker</h4>
  <ul>
         
    <li>On  sites that  use certs for security purposes, issue import/export is  
limited to moving issues between projects on the same host. </li>
    <li>Added new user documentation for Issue tracker's reporting tool.</li>
  </ul>
  <h4>System</h4>
   <ul>
    <li>Changed the method by which session Id's are expired to prevent the SessionList from displaying the same session multiple times.</li>
   </ul>  
  <h4>Version control</h4>
  <ul>
    <li> Changed the loginfo.inf file to prevent broken pipe errors on cvs commit.</li>
  </ul>
  <h3><a id="known" name="known">Known Issues with SourceCast 2.0.3</a></h3>
  <p>The following are known issues that may be encountered by users of SourceCast Release 2.0.3.</p>
  <h4>Discussion forums</h4>
  <ul>
    <li>When sorting forum messages with the Show Option set to "Overview of discussion threads" and  "sort by" option set to "Date", sorting based on the "Last posted date" fails. This issue will be resolved in a later SourceCast release.</li>
 </ul>
  <h4>Version control</h4>
  <ul>
     
    <li>Viewing project source via the web does not support the $, &, +, and ? characters in folders and filenames. Directories and filenames containing these characters can be added and managed within the CVS repository, but cannot be browsed through the user interface.</li>
  </ul>
  
   <div class="courtesylinks">
    <p><a href="#toc">Top</a> | <a href="/nonav/servlets/HelpTOC">Help index</a></p>
   </div>
  </div>
  </body>

</html>





