<?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="http://feeds.feedburner.com/eclipse/fnews"> <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);
?>