<html><head>
<meta HTTP-EQUIV="content-type" CONTENT="text/html; charset=UTF-8">
</head>
<body>
<p><b><i>
COLLAB.NET PROVIDES COLLABORATIVE DEVELOPMENT ENVIRONMENT FOR
SUN MICROSYSTEMS' STAROFFICE OPEN SOURCE COMMUNITY
</i></b></p>

<p><b>
Collab.Net Sourcecast Provides Infrastructure For Largest Open Source Software Application
</b>
</p>


<p>
SAN FRANCISCO -- July 19, 2000 -- Collab.NetTM - a leading provider of
collaborative software development services, based on open source
principles - today announced that Sun Microsystems has selected the
Collab.Net SourcecastSM environment as the infrastructure for
OpenOffice.org, the open source community site for its StarOffice
product.  Collab.Net is providing a global development platform and
support for OpenOffice.org and consulting with Sun to establish
OpenOffice.org as a key open source virtual community.

<p>
OpenOffice.org will host the source code and open source
co-development project for Sun's StarOffice Suite.  When it is
released, the StarOffice code will be the largest open source
software application available.  Initially, the OpenOffice.org site
will contain mailing lists so the developer community can begin
discussion around the project.  The source code for OpenOffice.org
will be available later this year under the Free Software
Foundation's GNU GPL (General Public License) and SISSL (Sun Internet
Standards Source License) licensing models.  (See related release
titled: Sun Microsystems Makes StarOffice Available To Open Source
Community.)

<p>
The Collab.Net Sourcecast platform is a complete solution comprised of
open source tools and proven development practices, which have been
customized to enable global collaborative software development
projects.  In addition to hosting the community site, Collab.Net
will also be providing consulting services to Sun including: helping
the StarOffice engineers work closely with the open source community
and managing the OpenOffice.org site.

<p>
"We chose to work with Collab.Net on this project because they have a
unique combination of expertise from working with both large corporate
customers and the open source development community," said Marco
Boerries, vice president and general manager of webtop and
application software at Sun Microsystems, Inc.  "The success of

<p>
OpenOffice.org is important to Sun's plans and we look forward to the
new innovations and applications developed around the StarOffice
source code.  The Collab.Net Sourcecast platform provides the scalable
infrastructure that is critical to building a new open source
community around StarOffice and helping us meet the expectations of
both corporate and open source developers."


<p>
"The release of the Star Office source code, to a new independent
development project called OpenOffice.org, fills a major hole in the
open source desktop application space," said Bill Portelli, CEO of
Collab.Net.  "Collab.Net is excited to be working with Sun and
others to foster and support a developer community for this software."

<p>
<b>StarOffice 5.2 </b>

<p>StarOffice 5.2 offers a feature-rich single desktop
environment, with tools such as word processing, spreadsheets,
presentations, drawings, Web-publishing, email, scheduling and
database applications that offer businesses and individuals an
alternative to proprietary office suites.  For more information
regarding StarOffice source code, visit
http://www.sun.com/staroffice/opensource.

<p>
<b>Collab.Net Sourcecast Environment </b>

<p>This single solution provides a
medium for hosting source code and accessing a robust set of
collaborative software development tools.  This environment is a
cohesive Web-based, open source development platform that offers
simple, powerful and intuitive access to features including: code
versioning, source code browsing, automatic change notification,
mailing lists, and discussion forums and issue tracking Web
administration.

<p>
 <b>About Collab.Net </b>

<p>Collab.Net provides companies with tools and
services for collaborative software development by combining open
source community expertise with business excellence.  Collab.Net's
offerings include: a developer marketplace, hosting services with
lifecycle management capabilities, and professional services to
facilitate software development across a worldwide community.
Collab.Net is currently working with customers ranging from
Application Service Providers (ASPs) to Internet firms, hardware and
software providers to companies from industries such as marketing
and publishing.  Brian Behlendorf, co-founder of the Apache Software
Foundation, founded Collab.Net in July 1999. For more information,
see www.collab.net.

<p>
<center><pre># # #</pre></center>

<p>
Collab.Net is a trademark and sourceXchange and Sourcecast are
servicemarks of Collab.Net, Inc. Any other product brand names used 
are the property of their respective owners.

<p>
Sun, Sun Microsystems, the Sun Logo, StarOffice, Solaris, and the
Network Is The Computer are trademarks or registered trademarks of
Sun Microsystems, Inc. in the United States and other countries.
</body>
</html>

