<?php  																														require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php"); 	require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php"); 	$App 	= new App();	$Nav	= new Nav();	$Menu 	= new Menu();		include("./_projectCommon.php");    # All on the same line to unclutter the user's desktop'

$pageTitle 		= "2010 Eclipse Weather Forecast Archives";
$pageKeywords	= "";
$pageAuthor		= "";
require_once ($_SERVER['DOCUMENT_ROOT'] . "/membership/promo/promos.php");

ob_start();
?>
<style type="text/css">
h2 {
border-bottom: solid
}
h3 {
border-bottom: thin dotted
}
</style>

    <div id="maincontent">
	<div id="midcolumn">
        <h1>Eclipse Weather Forecast <a href="https://newsroom.eclipse.org/rss/news/eclipse_org/announcements.xml"> <img src="/images/rss2.gif"></a></h1>

		<p style="font-size8px;">
		Archives Last Update: March 9, 2009.</p>

        <p>The Eclipse Weather Forecast Archives notes forecast information removed from the
        <a href="./Current.php">Current Weather Forecast</a>.  Given the expired nature of
        information here, links may be break over time.</p>

        <p> Please send feedback or suggestions on the weather report to
        <a href="mailto:weather@eclipse.org">weather@eclipse.org</a>.
        </p>

 	<h2>Removed March 1, 2010</h2>
    <p><b>Increasing Activity in Mobile.</b>
    A <a href="http://www.eclipse.org/org/industry-workgroups/mobilewg.php">Mobile Working group</a> launched in December 2008 lead by
    Motorola, Nokia and RIM.  We are seeing increased activity in the mobile tools space as a result
    and anticipate project announcements and activities leading through summer.  More information can be found at
    <a href="http://pulsar.eclipse.org">the Pulsar website</a>.
    </p>


	<h2>Removed July 6, 2009</h2>
    <p><b>Increasing Activity in Networking.</b>  A <a href="http://www.eclipse.org/proposals/tap/">new project in the network testing space</a>
    has invigorated
    interest in Eclipse from a number of network equipment providers and tier 1 networking companies.
    We hope to see increased project and membership activity in this space through 2009.
    </p>


	<h2>Removed March 9, 2009</h2>
    <p><b>Increasing Activity in Finance.</b>
    A new <a href="http://www.eclipse.org/proposals/financial-platform/">Financial Platform</a> project has recently been
    proposed to create an open source framework for interoperable and extensible financial systems.  This project, plus
    the success of the Eclipse Banking Days in
    <a href="http://www.eclipse-banking.org/agenda.html">Frankfurt</a>,
    <a href="http://wiki.eclipse.org/EclipseBankingDayNYC">New York</a>, and
    <a href="http://wiki.eclipse.org/EclipseBankingDayLondon">London</a> indicates there will likely be increased
    project and membership activity in this industry through 2009.
    </p>

	<p><b>Ganymede 3.4.1 release.</b>  The current release of the <a href="http://www.eclipse.org/downloads/">Eclipse Developer
	Packages</a> is "Ganymede, SR1" (released September 24, 2008),
	and is built on the 3.4.1 Eclipse platform.  The current release of
	<a href="http://download.eclipse.org/equinox/">equinox</a> is 3.4.1 which is
	built based on OSGi Service Platform Release 4.1.</p>
    <p>

  </div>

    <div id="rightcolumn">
    <?=chooseRandomPromo(); ?>
    </div>

</div>
<?php
	$html = ob_get_contents();
	ob_end_clean();

	# Generate the web page
	$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>