diff --git a/weather/Archives.php b/weather/Archives.php
index 79404d7..19c9ac3 100644
--- a/weather/Archives.php
+++ b/weather/Archives.php
@@ -18,7 +18,7 @@
 
     <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>
+        <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>
@@ -26,52 +26,52 @@
         <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 
+
+        <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>  
+    <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>     
+
+
+	<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. 
+    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> 
-           
+    </p>
+
 
 	<h2>Removed March 9, 2009</h2>
-    <p><b>Increasing Activity in Finance.</b>  
+    <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 
+    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.  
+    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 
+
+	<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();
diff --git a/weather/Current.php b/weather/Current.php
index 079ff5d..2891ebd 100644
--- a/weather/Current.php
+++ b/weather/Current.php
@@ -18,111 +18,111 @@
 
     <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>
+        <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;">
 		Inspired by the <a href="http://linuxfoundation.org/en/Linux_Weather_Forecast">Linux Weather Forecast</a></p>
 
 		<p style="font-size8px;">
 		Last Update: February 1, 2011.</p>
 
-        <p>The Eclipse Weather Forecast is a resource for technical and business decision makers in the 
+        <p>The Eclipse Weather Forecast is a resource for technical and business decision makers in the
         Eclipse Ecosystem.  Eclipse has an incredibly diverse ecosystem with hundreds of projects spanning
         dozens of technologies, and this page will help
         people quickly understand the latest releases of Eclipse packages and interesting technical trends.</p>
-        
-        <p> Please send feedback or suggestions on the weather report to 
+
+        <p> Please send feedback or suggestions on the weather report to
         <a href="mailto:weather@eclipse.org">weather@eclipse.org</a>.
         </p>
-        
 
-	<br><h1>Forecast summaries</h1>	
+
+	<br><h1>Forecast summaries</h1>
 	<h2>Current Conditions</h2>
-	<p>The current release of the <a href="http://www.eclipse.org/downloads/">Eclipse Developer 
-	Packages</a> is "Helios" (released September, 2010), 
-	and is built on the 3.6.1 Eclipse platform.  The current release of 
+	<p>The current release of the <a href="http://www.eclipse.org/downloads/">Eclipse Developer
+	Packages</a> is "Helios" (released September, 2010),
+	and is built on the 3.6.1 Eclipse platform.  The current release of
 	<a href="http://download.eclipse.org/equinox/">equinox</a> is 3.6.1 which is
 	based on OSGi Service Platform Release 4.2.</p>
     <p>
     For up-to-the-minute Project Review and New Project Proposal information, please see the
     <a href="http://www.eclipse.org/projects/whatsnew.php">What's New with Eclipse Projects</a> page.
     </p>
-    
+
 
 	<br><h2>Long term forecast</h2>
 	<p>
-	The next planned release of the Eclipse Packages is 
+	The next planned release of the Eclipse Packages is
 	<a href="http://wiki.eclipse.org/Eclipse/Helios_Plan">"Helios SR1" (3.6.2)</a>
 	(expected late February, 2011), and will be built on the 3.6.2 platform.
     </p>
-    
+
    	<br><h2>Weather Advisories</h2>
 
-   	<p><b>Orion Project is underway</b>  The 
-   	<a href="http://wiki.eclipse.org/Orion">Orion</a> 
-    is a proposed new open source project under the Eclipse top-level project. The project 
-    is currently in the Pre-Proposal phase. To facilitate gathering of a community for this new 
-    project, an initial code contribution has been made within the E4 incubator. 
-    Orion's objective is to create a browser-based open tool integration platform which is 
-    entirely focused on developing for the web, in the web. Tools are written in JavaScript and run 
-    in the browser. Unlike other attempts at creating browser-based development tools, this is not an 
-    IDE running in a single tab. Links work and can be shared. You can open a file in a new tab. Great 
-    care has been taken to provide a web experience for development. 
+   	<p><b>Orion Project is underway</b>  The
+   	<a href="http://wiki.eclipse.org/Orion">Orion</a>
+    is a proposed new open source project under the Eclipse top-level project. The project
+    is currently in the Pre-Proposal phase. To facilitate gathering of a community for this new
+    project, an initial code contribution has been made within the E4 incubator.
+    Orion's objective is to create a browser-based open tool integration platform which is
+    entirely focused on developing for the web, in the web. Tools are written in JavaScript and run
+    in the browser. Unlike other attempts at creating browser-based development tools, this is not an
+    IDE running in a single tab. Links work and can be shared. You can open a file in a new tab. Great
+    care has been taken to provide a web experience for development.
     </p>
-	
-   	
-   	<p><b>VM argument in eclipse.ini ignored in java 1.6u21</b>  The 
+
+
+   	<p><b>VM argument in eclipse.ini ignored in java 1.6u21</b>  The
    	<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319514">Bug 319519</a> raises
    	and important issue that the ecosystem may be facing whereby the 1.6u21 version
-   	of the Java VM is ignoring arguments from eclipse.ini. 
+   	of the Java VM is ignoring arguments from eclipse.ini.
    	<a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=319514#c5">Although</a> subsequent
-   	builds of Java 1.6 have fixed this issue, it is still possible users may be accidentally 
+   	builds of Java 1.6 have fixed this issue, it is still possible users may be accidentally
    	encounter and use this version.</p>
-   	
-   	<p><b>Increasing OSGi Runtime releated projects at eclipse.</b>  The 
-   	<a href="http://www.eclipse.org/proposals/virgo/">Virgo</a> and 
+
+   	<p><b>Increasing OSGi Runtime releated projects at eclipse.</b>  The
+   	<a href="http://www.eclipse.org/proposals/virgo/">Virgo</a> and
    	<a href="http://www.eclipse.org/proposals/gemini/">Gemini</a> are recent projects at Eclipse that focus on implementing
    	OSGi Expert group specificaitons, and complementary technologies.  These projects are indicators of an
    	increasing activity and interest in runtime tehcnologies at Eclipse, specifically with OSGi at the core. </p>
-   	
-   	<p><b>Continued Interest in Modeling At Eclpse</b>  The 
-   	The demand for new and interesting projects in the Modeling space continues.  SAP has recently proposed 
-   	a project for Domain Modeling called <a href="http://www.eclipse.org/proposals/graphiti/">Graphiti</a>. 
+
+   	<p><b>Continued Interest in Modeling At Eclpse</b>  The
+   	The demand for new and interesting projects in the Modeling space continues.  SAP has recently proposed
+   	a project for Domain Modeling called <a href="http://www.eclipse.org/proposals/graphiti/">Graphiti</a>.
    	Interest in Eclipse modeling technologies, particularly in Europe, continues to be strong.</p>
- 
+
  	<p><b>Progress on common build infrastructure.</b>  Recent hardware donations from Google, IBM and Intel
  	have given the Eclipse webmaster some much need resources to revamp the common build infrastructure over the
  	coming weeks and months.
  	</p>
 
- 	<p><b>Progress on git/egit/jgit</b>  Webmaster has made progress for supporting early adopters from 
+ 	<p><b>Progress on git/egit/jgit</b>  Webmaster has made progress for supporting early adopters from
  	certain eclipse projects wishing to use GIT as a source code repository.  The Foundation is taking
  	a cautious and incremental approach, but it could be that GIT becomes a standard option for projects before the
  	end of 2010.
  	</p>
-   	
+
     <p><b>Jetty Project has moved to Eclipse.</b>  <a href="http://www.eclipse.org/proposals/jetty/">Jetty</a>, a Java-based
     web server and implementation of the Servlet Specification has moved to Eclipse as an Eclipse Project.  We expect
 	increased activity around the use of Jetty in the Eclipse Ecosystem as a result.
     </p>
-  
-    <p><b>Problems with Sun JVM 1.6.0.4 through 1.6.0.9.</b>  If you are experiencing 
+
+    <p><b>Problems with Sun JVM 1.6.0.4 through 1.6.0.9.</b>  If you are experiencing
     <a href="http://wiki.eclipse.org/IRC_FAQ#Crashers.2C_Freezing.2C_and_other_Major_Issues">frequent crashes and freezes
-    with Eclipse</a> the most likely culprit is that you are using one of these versions of the Sun JVM.  Users 
+    with Eclipse</a> the most likely culprit is that you are using one of these versions of the Sun JVM.  Users
     are recommended to install a version 1.6.0.10 or later, 1.6.0.3 or before.  Or use JVM 1.4.2 or 1.5 JVM.  This issue
     is specific to the Sun JVM and other vendors JVMs within these versions should be OK.
     </p>
-	
+
 	<br><h2>Archives</h2>
 	<p>
 	Please see the <a href="./Archives.php">archived information</a> from previous weather forecasts.
     </p>
-    
+
   </div>
-  
+
     <div id="rightcolumn">
     <?=chooseRandomPromo(); ?>
     </div>
-    
+
 </div>
 <?php
 	$html = ob_get_contents();
