<html><head>
<link rel="stylesheet" href="../../default_style.css">
<title>Eclipse Foundation</title></head>
<body text="#000000" bgcolor="#ffffff" link="#0000ee" vlink="#551a8b" alink="#ff0000">
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align=left width="72%"> <font class=indextop> eclipse momentum</font><br>
      <font class=indexsub>&nbsp; </font></td>
    <td width="28%"><img src="../../images/Idea.jpg" height=86 width=120></td>
  </tr>
</table>
<table border=0 cellspacing=5 cellpadding=2 width="100%" >
  <tr> 
    <td align="left" valign="top" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Press release</font></b></td>
  </tr>
  <tr> 
    <td> <br>
      <h1 ALIGN="CENTER"><b><span style='font-size:16.0pt;font-family:Arial;"Times New Roman"'><b> 
        Independent Eclipse Foundation Accelerates Momentum of Eclipse </b></span></b></h1>
      <P>OTTAWA, ONTARIO, CANADA - October 6, 2004 - The Eclipse Foundation announced 
        tremendous growth and momentum since it has become an independent organization. 
        In the past six months, Eclipse membership has increased 30 percent, nine 
        new open source projects have been initiated, and more than 18 companies 
        have included the Eclipse Platform and IDE as the basis of their commercial 
        developer tools solution.</p>
      <P> Seventeen new organizations have become Eclipse members and have committed 
        resources to strengthen the Eclipse ecosystem. These new members include 
        Actuate Corporation; Acucorp Inc.; Agitar Software; Aonix; Compuware Corporation; 
        Communications and Media Arts (CMA); Eclipse PlugIn Central (EPIC); JBoss 
        Inc.; Kinzan Inc.; M1 Global Solution; Mentor Graphics; Panscopic; PureEdge 
        Solutions, Inc.; Real-Time Innovations, Inc.; Social Physics; Softlanding 
        Systems Inc.; and The Thales Group. </p>
      <P>&quot;Actuate joined Eclipse as a Strategic Developer because it makes 
        good business sense,&quot; explained Paul Clenahan, vice president of 
        Product Management at Actuate Corporation. &quot;Our leadership in the 
        Eclipse open source project is important to expanding our markets. Being 
        a member of the Eclipse Board of Directors increases Actuate's visibility 
        and influence within the Eclipse community.&quot;<br>
      </p>
      <P>Broad-based industry involvement has led to the creation of three new 
        top-level Eclipse projects, the Test and Performance Tools Project, the 
        Business Intelligence and Reporting Project (BIRT) and the Web Tools Project. 
        Six new Technology projects have also been initiated: Concern Manipulation 
        Environment (CME), Eclipse Communications Project, Embedded Rich Client 
        Platform (eRCP), Pollinate, Open Modeling Environment with Links for Extensions 
        and Transformations (OMELET), and the Voice Tools Project. In total, Eclipse 
        now has six top-level open source projects that are made up of 34 subprojects. 
        <br>
      </p>
      <P>Finally, commercial adoption of the Eclipse technology continues to grow. 
        A total of 18 companies base their commercial developer tools solutions 
        on the Eclipse Platform and IDE, including: </p>
      <ul>
        <li>Exadel Struts Studio and JSF Studio</li>
        <li>Genuitec MyEclipse</li>
        <li>IBM WebSphere Studio</li>
        <li>Intel C++ Compiler 8.1 for Linux</li>
        <li>Kinzan Studio</li>
        <li>M7 NitroX</li>
        <li>Mentor Graphics Nucleus Edge</li>
        <li>Monta Vista Dev Rocket</li>
        <li>Novell/SuSE SDK</li>
        <li>PalmOS Dev Suite</li>
        <li>Parasoft JTest</li>
        <li>PureEdge Designer</li>
        <li>QNX Momentics</li>
        <li>Red Hat Developer Suite</li>
        <li>SAP NetWeaver Studio</li>
        <li>Tensilica Xtensa Xplorer IDE</li>
        <li>TimeSys TimeStorm IDE</li>
        <li>Wind River Workbench</li>
      </ul>
      <p> &quot;We are very pleased with the growth in the Eclipse community,&quot; 
        explains Mike Milinkovich, executive director of the Eclipse Foundation, 
        Inc. &quot;The new members and projects demonstrate the tremendous amount 
        of innovation and advancement within the Eclipse technology. This in turn 
        provides the value and technology required for widespread adoption of 
        Eclipse in the IT industry.&quot;</p>
      <p>For more information about the new Eclipse members and projects please 
        visit the following url: http://www.eclipse.org/org/press-release/momentum.html<br>
      </p>
    </td>
  </tr>
  </table>
<table width="100%" cellspacing=0 cellpadding=3 align=center>
		<tr bgcolor="#999999">
		
    <td align="left" valign="top" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Quotes from New Eclipse Members</font></b></td>
		</TR>
		<TR>
		<td align=left>
		<TABLE  width="100%" CELLSPACING=0 CELLPADDING=3>
		<tr>
		  <td> 
            <p><b>Agitar Software</b><br>
              &quot;Agitar's solution, Agitator, makes it practical-for the first 
              time-for Java software developers to create unit tests as an integral 
              part of software development. This process, referred to as developer 
              testing, has a profound positive impact on the quality of delivered 
              software while shortening development timelines. Providing tight 
              integration with IDEs maximizes the value of our solution. Our customers 
              worldwide made it clear that Eclipse is rapidly gaining momentum, 
              and our first integration should be with the Eclipse platform. We'll 
              ship our fully-integrated Eclipse version of Agitator this quarter. 
              We are excited to become part of the rapidly expanding Eclipse community.&quot; 
              <br>
              <i>- Jerry Rudisin, president and CEO of Agitar</i></p>
            <p><b>Aonix</b><br>
              &quot;In the mission- and safety-critical market, our customers 
              come from a number of industry sectors, each carrying its own certification 
              standards and specialized tools. Such markets suffer from proprietary 
              tool chains. But with the Eclipse Platform's strategy of delivering 
              common platforms that enable embedded developers to mix tools, we 
              are able to bring to market a broad range of interoperable, commercial 
              off-the-shelf products that will offer tremendous cost savings, 
              increased flexibility and a richer feature set for our customers.&quot;<br>
              <i>- Jacques Brygier, vice president of Marketing at Aonix</i></p>
            <p><b>Compuware Corporation</b><br>
              &quot;As Eclipse continues to gain momentum, Compuware remains committed 
              to driving business value from the developer desktop. We provide 
              unique value to Eclipse developers through our model-driven, pattern-based 
              approach that transforms models directly into working applications. Additionally, 
              Compuware's code diagnostics and performance-tuning products help 
              developers become more efficient and productive.&quot;<br>
              <i>- Bob Barker, vice president of Strategic Planning at Compuware</i></p>
            <p><b>JBoss, Inc.</b><br>
              &quot;Our objective in joining the Eclipse Foundation, one of the 
              most respected and active open source organizations, is to contribute 
              code that we believe will make it easier for developers to work 
              with JBoss. We anticipate our first major contribution will be a 
              plug-in that will provide developers with a Java-based, aspect oriented 
              framework that will be of use in any programming environment.&quot;<br>
              <i>- Bob Bickel, vice president of Strategy and Corporate Development 
              of JBoss, Inc.</i></p>
            <p><b>Kinzan Inc.</b><br>
              &quot;We placed a bet in mid 2003 that Eclipse would emerge as the 
              dominant Java IDE and that bet has paid off big time. Any developer 
              who has used Eclipse before is instantly able to benefit from the 
              productivity of Kinzan Studio, our Eclipse-based tool for visually 
              assembling web applications.&quot;<br>
              <i>- James O'Leonard, vice president of Product Management &amp; 
              Marketing at Kinzan Inc.</i></p>
            <p><b>M1 Global Solutions, Inc.</b><br>
              &quot;M1 is excited to join Eclipse and to extend our participation 
              in the open source community. By leveraging the Eclipse framework 
              for M1's Model Driven Architecture (MDA) tool, the Model Driven 
              Environment (MDE) and our business process modeling tool BPi Studio-in 
              conjunction with using these tools internally and using modeling 
              to simplify communications with our off-shore development center-we've 
              been able to dramatically reduce the time and cost of our software 
              development efforts at the same time as we increase quality.&quot;<br>
              <i>- Lawrence Catchpole, chief strategy officer of M1 Global Solutions, 
              Inc.</i></p>
            <p><b>Mentor Graphics</b><br>
              &quot;Embedded developers are now seeing the value of an open framework 
              for their development tools. As an Eclipse member, Accelerated Technology 
              now has the ability to play an active role in the open source community 
              and will be the voice of both Nucleus customers and the embedded 
              community at large in regards to recommendations and suggestions. 
              The use of Eclipse with the newly launched Nucleus EDGE embedded 
              software development environment offers the winning combination 
              of our powerful true embedded tools technology with the openness 
              and interoperability of the Eclipse platform.&quot;<br>
              <i>- Robert Day, director of Marketing at Accelerated Technology, 
              a Mentor Graphics Division</i></p>
            <p> <b>PureEdge Solutions, Inc.</b><br>
              &quot;As a leader in the area of open standards and as an organization 
              that has worked closely with many standards organizations, PureEdge 
              is proud to be a new member of the Eclipse Foundation. Eclipse is 
              a key component in our ongoing product leadership in the design 
              and deployment of XML e-forms. Eclipse will become a core foundation 
              for an integrated design environment that leverages the growing 
              Eclipse development community. PureEdge also offers a set of products 
              that support Eclipse-based clients such as IBM's Lotus Workplace.&quot;<br>
              <i>- Mark Upson, president and CEO of PureEdge Solutions</i></p>
            <p><b>Real-Time Innovations, Inc. (RTI)</b><br>
              &quot;RTI recently demonstrated its Eclipse plugin tools for visual 
              debugging, ProfileScope and MemScope, along with Wind River's Eclipse 
              3.0-based Workbench IDE, in a series of Linux development seminars 
              across the country. Developers were wowed by the slick environment, 
              intuitive navigation, and easy visibility into essential development 
              data through Eclipse perspectives.&quot; <br>
              <i>- Pauline Shulman, senior product marketing manager at RTI</i></p>
            <p><b>SocialPhysics.org</b><br>
              &quot;Being a formal member has opened new doors and allowed us 
              to leverage our resources.&quot; <br>
              <i>- Paul Trevithick of SocialPhysics.org</i></p>
            <p><b>The Thales Group</b><br>
              &quot;As a worldwide leader in the areas of mission-critical, large-scale 
              software systems and open software architectures, Thales is proud 
              to be a new member of the Eclipse Foundation. Thales' Eclipse membership 
              is part of our policy of proactive support of open software technologies, 
              and we see Eclipse as an increasingly important player in the area 
              of open-source development platforms. Eclipse technology is already 
              part of the core foundation of Thales' integrated system and software 
              development environment used for major aerospace programmes. Thales 
              is also contributing to the Eclipse project WebTools and takes advantage 
              of Eclipse technologies for the deployment of its Model Driven Development 
              strategy.&quot;<br>
              <i>- Dominique Potier, chief scientist for Software Technologies 
              at Thales</i><br>
            </p>
          </td>
		</tr>
        </table></table>
<table width="100%" cellspacing=0 cellpadding=3 align=center>
		<tr bgcolor="#999999">
		
    <td align="left" valign="top" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica"> 
      Description of New Top-Level Eclipse Projects</font></b></td>
		</TR>
		<TR>
		<td align=left>
		<TABLE  width="100%" CELLSPACING=0 CELLPADDING=3>
		<tr>
		  <td> 
            <p><b>Business Intelligence and Reporting Tools Project (BIRT)</b></p>
            <p>The mission of BIRT is to create a wide variety of capabilities 
              that allow developers to easily extract data from data sources, 
              process that data using flexible and powerful data manipulation, 
              sorting and aggregation, and present the processed information in 
              a formatted layout to end users.</p>
            <p>The capabilities can range from application- and production-level 
              reporting through ad hoc user-driven query tools to highly interactive 
              multi-dimensional online analytical processing (OLAP) and data mining 
              tools.</p>
            <p>Some level of reporting is a common requirement in the majority 
              of applications developed today. The project provides a focal point 
              for the creation of best-of-breed business intelligence and reporting 
              capabilities for integration into these applications or as dedicated 
              applications in their own right.</p>
            <p><b>Test and Performance Tools Project</b></p>
            <p>The Eclipse Test and Performance Tools Project will extend the 
              family of Eclipse technologies to provide an open development platform 
              supplying frameworks and services for test and performance tools 
              that are used throughout the development lifecycle. The tools apply 
              to testing, tracing/profiling, tuning, logging, monitoring, analysis, 
              autonomics, administration and so on but do not include development 
              tools such as optimizing compilers. The project supports a spectrum 
              of standalone through highly-distributed computing systems and embedded 
              through enterprise computing systems.</p>
            <p><b>Web Tools Platform Project</b></p>
            <p>The purpose of the Web Tools Platform Project is to build a generic, 
              extensible, standards-based tool platform upon which software providers 
              can create specialized, differentiated offerings for J2EE and Web-centric 
              application development. Key objectives are to combine product innovation 
              with adherence to vendor-neutral standards and technologies while 
              delivering practical solutions for real development concerns. This 
              project builds on the Eclipse Platform and other core Eclipse technologies 
              to provide a common foundation of frameworks and services for tooling 
              products. <br>
            </p>
          </td>
		</tr>
        </table></table>
<table width="100%" cellspacing=0 cellpadding=3 align=center>
		<tr bgcolor="#999999">
		
    <td align="left" valign="top" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Description 
      of New Eclipse Technology Projects</font></b></td>
		</TR>
		<TR>
		<td align=left>
		<TABLE  width="100%" CELLSPACING=0 CELLPADDING=3>
		<tr>
		  <td> 
            <p><b>Concern Manipulation Environment (CME)</b></p>
            <p>CME supports software developers who want to use an <a href="http://www.aosd.net" target="_blank">aspect-oriented</a> 
              software development (AOSD) approach to simplify their existing 
              or new software, whether or not it was originally developed using 
              AOSD technologies. CME also supports AOSD tool providers and researchers 
              who seek to provide novel aspect-related technologies and paradigms 
              and make these available to the development community in an integrated 
              development environment. </p>
            <p><b>Eclipse Communications Project (ecomm)</b></p>
            <p>The goal of ecomm is to provide an open source, peer-to-peer messaging 
              and communications framework for the Eclipse platform. The ecomm 
              project will deliver to developers a set of communications plugins 
              that can be used to construct Eclipse-based communications applications. 
              The purpose of such a framework is to make the Eclipse platform 
              easier and more attractive for developing applications that require 
              group communications.</p>
            <p><b>Open Modeling Environment with Links for Extensions and Transformations 
              (OMELET)</b></p>
            <p>OMELET is a framework for integrating diverse model representations, 
              model transformations and model transformation technologies. OMELET 
              is a next-generation make/Ant tool that exploits, and where possible 
              enforces, the use of meta-models to ensure that the input, output 
              and intermediate models for cascaded transformations are well defined 
              and strongly typed. This provides the basic framework that is necessary 
              for MDA. </p>
            <p><b>Pollinate Project</b></p>
            <p>Pollinate's goal is to build an Eclipse-based IDE and toolset that 
              leverages the open source <a href="http://incubator.apache.org/beehive/" target="_blank">Apache 
              Beehive</a> application framework. Pollinate provides a full-featured 
              Java development environment that enables developers to visually 
              build and assemble enterprise-scale Web applications, JSPs and Web 
              services and leverage the Java controls framework for creating and 
              consuming J2EE components optimized for a service-oriented architecture. 
              This will be accomplished by creating a broad set of Eclipse plugins 
              and user interface components for building projects on top of the 
              Apache Beehive framework. Beehive is an Apache open-source project 
              that uses the innovations in JDK 1.5 to help simplify programming 
              on the J2EE platform and other Web application containers.</p>
            <p><b>Voice Tools Technology Project</b></p>
            <p>The Voice Tools Technology Project will focus on voice application 
              tools in the JSP/J2EE space that are based on W3C standards so these 
              standards become dominant in voice application development. Voice 
              Tools will be a set of Eclipse plugins that will provide development 
              tools for W3C standards/recommendations for voice application markup.<br>
            </p>
          </td>
		</tr>
        </table></table>
<table width="100%" cellspacing=0 cellpadding=3 align=center>
		<tr bgcolor="#999999">
		
    <td align="left" valign="top" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">About 
      Eclipse</font></b></td>
		</TR>
		<TR>
		<td align=left>
		<TABLE  width="100%" CELLSPACING=0 CELLPADDING=3>
		<tr>
		  <td> 
            <P> The Eclipse Foundation is a not-for-profit member-supported corporation 
              that hosts community based open source projects. Eclipse creates 
              royalty-free technology and a universal platform for development 
              tools integration, modeling, testing and functionally-rich application 
              construction. Eclipse-based offerings give developers freedom of 
              choice in a multi-language, multi-platform, multi-vendor 
              supported environment. Eclipse delivers a dynamic plug-in based 
              framework that makes it easier to create and integrate technology, 
              saving time and money. By collaborating and sharing core integration 
              technology, providers can concentrate and focus on areas of expertise 
              and differentiation. The Eclipse Platform is written in the Java 
              language and comes with extensive plug-in construction toolkits 
              and examples. It has already been deployed on a range of development 
              workstations including Linux, QNX, Mac OS X and Windows-based systems. 
              Full details of the Eclipse Foundation and white papers documenting 
              the design of the Eclipse Platform are available at <a href="http://www.eclipse.org" target="_top">www.eclipse.org</a>.</p>
            </td>
		</tr>
        </table></table>&nbsp;
	<table width="100%" cellspacing=0 cellpadding=3 align=center>
		<tr bgcolor="#999999">
    <td align="left" valign="top" bgcolor="#0080C0"><b><font color="#FFFFFF" face="Arial,Helvetica">Media 
      contact</font></b></td>
		</TR>
		</table>
		
<table width="100%" border="0" cellspacing="5">
  <tr> 
    <td> 
      <p align="center">Barbara Stewart <br>
        Patterson & Associates <br>
        480-488-6909 <br>
        barbara@patterson.com </p>
    </td>
  </tr>
</table>
		<TABLE  width="100%" CELLSPACING=0 CELLPADDING=3>
		<tr>
		  <td> 
            <hr width="85%">
      <P>Brand or product names are registered trademarks or trademarks of their 
        respective holders. Java and all Java-based trademarks are trademarks 
        or registered trademarks of Sun Microsystems, Inc. in the United States 
        and other countries.<br>
      </P>
<hr width="85%">
    </td>
		</tr>
        </table>&nbsp;        
&nbsp;
</body></html>
