<?php
/**
 * Copyright (c) 2015, 2018 Eclipse Foundation.
 *
 * This program and the accompanying materials are made
 * available under the terms of the Eclipse Public License 2.0
 * which is available at https://www.eclipse.org/legal/epl-2.0/
 *
 * Contributors:
 * Nathan Gervais (Eclipse Foundation) - Initial implementation
 * Eric Poirier (Eclipse Foundation)
 *
 * SPDX-License-Identifier: EPL-2.0
 */
?>
<div id="maincontent">
  <div id="midcolumn">
    <img src="http://dev.eclipse.org/large_icons/devices/network-wireless.png">
    <h1 class="inline">Ganymede Buzz</h1>
    <div class="homeitem3col">
      <h3>Community Buzz</h3>
      <ul>
        <li><a href="http://www.myeclipseide.com/Article79.html" target="_blank">MyEclipse
            Delivers Advanced Ajax Tools for Ganymede </a> <span class="posted">+371&nbsp;weeks&nbsp;ago</span>
          <p>Genuitec is pleased to announce today the immediate availability of
            MyEclipse Enterprise Workbench 7.0 milestone 1. This milestone
            release delivers advanced Ajax tooling for Java EE and full
            Application Lifecycle Management (ALM) capabilities for Eclipse 3.4
            Ganymede, among other enhancements.</p></li>
        <li><a
          href="http://www.protecode.com/site/pdf/GA%20Availability%20Press%20Rel.pdf"
          target="_blank"
        >Protecode Annouces General Availability of Governance and Intellectual
            Property Management Software </a> <span class="posted">+376&nbsp;weeks&nbsp;ago</span>
          <p>Protecode Inc., today announced the general availability of its
            software development tool for governance and Intellectual Property
            (IP) management. The latest release enables commercial software
            developers and open source creators to accelerate managed adoption
            of open source code in a simple, painless process. Additionally, the
            software is now available to the Eclipse community for anyone
            working on an active Eclipse project.</p></li>
        <li><a href="http://www.ddj.com/linux-open-source/208802482"
          target="_blank"
        >The Eclipse Ganymede Release </a> <span class="posted">+376&nbsp;weeks&nbsp;ago</span>
          <p>Dr. Dobb's talks to Mike Milinkovich, Executive Director of the
            Eclipse Foundation, about the Eclipse Ganymede release, a
            coordinated release of 23 different Eclipse project teams and
            represents over 18 million lines of code.</p></li>
        <li><a href="http://www.froglogic.com/pg?id=NewsEvents&category=98"
          target="_blank"
        >Java GUI Testing Tool Squish Supports New Eclipse "Ganymede" 3.4 </a> <span
          class="posted"
        >+377&nbsp;weeks&nbsp;ago</span>
          <p>
            froglogic GmbH today announced support for automated testing of Java
            Rich Client Platform (RCP) applications based on the new Eclipse 3.4
            release code named Ganymede.<br /> Squish for Java is a leading
            functional GUI and regression testing tool enabling the creation and
            execution of automated GUI tests for Java SWT/RCP and AWT/Swing
            applications.
          </p></li>
        <li><a href="http://www.ecommercetimes.com/story/63659.html"
          target="_blank"
        >Eclipse Release Is Great but Doesn't Reach the Cloud </a> <span
          class="posted"
        >+377&nbsp;weeks&nbsp;ago</span>
          <p>The Eclipse Foundation has delivered a healthy package of updates,
            right on time, for the third year in a row. That's commendable,
            writes contributor Dana Gardner. What he'd really like to see,
            however, is a greater commitment on Eclipse's part to integrate with
            cloud-based development.</p></li>
        <li><a
          href="http://eclipse.dzone.com/articles/eclipse-ganymede-18-million-li"
          target="_blank"
        >Eclipse Ganymede - 18 Million Lines of Code Delivered on Schedule </a>
          <span class="posted">+378&nbsp;weeks&nbsp;ago</span>
          <p>As many of you may know the annual Eclipse release train, called
            Ganymede, is now available. This is the third year in a row that the
            Eclipse community has shipped a coordinate release of multiple
            projects; 23 projects are included this year. An important reason
            for the release trains is to make it easier for Eclipse users and
            adopters, who tend to use multiple projects, to upgrade to a new
            release. A coordinated release schedule makes its possible for
            timely upgrades in the Eclipse community.</p></li>
        <li><a href="http://blogs.zdnet.com/Gardner/?p=2698" target="_blank">Eclipse
            Foundation delivers Ganymede train with 23 cars, but where are the
            cloud on-ramps? </a> <span class="posted">+378&nbsp;weeks&nbsp;ago</span>
          <p>For the third year in a row, the Eclipse community has delivered,
            on the same day as in previous years, numerous software updates
            across a wide range of projects.</p></li>
        <li><a href="http://www.ddj.com/linux-open-source/208800860"
          target="_blank"
        >Eclipse Delivers Annual Release </a> <span class="posted">+378&nbsp;weeks&nbsp;ago</span>
          <p>"Once again the Eclipse community has delivered our annual release
            train and continues to deliver innovative software in a predictable
            manner," said Mike Milinkovich, Executive Director of the Eclipse
            Foundation. "New features like the Equinox p2 provisioning system,
            new modeling tools and tools that support SOA developers will be
            popular features for Eclipse users."</p></li>
        <li><a href="http://www.devxnews.com/article.php/3755391"
          target="_blank"
        >Eclipse Ganymede Makes It Easier for Devs </a> <span class="posted">+378&nbsp;weeks&nbsp;ago</span>
          <p>Some open source efforts are satisfied with releasing one or two
            projects a year. That's not the case with the open source Eclipse
            Foundation, which today released 23 projects as part of its Ganymede
            release train.</p></li>
        <li><a href="http://www.instantiations.com/press/release/080625.html"
          target="_blank"
        >Instantiations Rolls Out Product Updates in Conjunction with Eclipse
            3.4 and Ganymede </a> <span class="posted">+378&nbsp;weeks&nbsp;ago</span>
          <p>Instantiations, Inc., a leading provider of software quality and
            productivity solutions for the Eclipse platform, today announced
            that its entire Eclipse-based product line has been updated to
            coincide with the annual Eclipse open source release, Ganymede.
            Included with the roll-out are significant additions in the area of
            security to its CodePro
            AnalytiX&Atilde;&fnof;&Acirc;&cent;&Atilde;&cent;&acirc;&sbquo;&not;&Aring;&frac34;&Atilde;&sbquo;&Acirc;&cent;
            comprehensive code quality product, bringing advanced
            standards-based security auditing to developers desktops as they
            write code. The Ganymede release train includes Eclipse 3.4, the
            annual release of the Eclipse platform, which was delivered today.</p></li>
        <li class="more">
          <div class="more">
            <a href="buzzmore.php">Read More</a>
          </div>
        </li>
      </ul>
    </div>
    <div class="homeitem3col">
      <h3>Ganymede Around the World Blogs</h3>
      <ul>
        <li><a href="http://siagian.p.blog.com" target="_blank">siagian.p</a> -
          verdy</li>
        <li><a href="http://hi.baidu.com/mimimo" target="_blank">mamimoluo</a> -
          mamimoluo</li>
        <li><a href="http://" target="_blank">http://</a> - mansouri med ali</li>
        <li><a href="http://" target="_blank">http://</a> - WANGBL</li>
        <li><a href="http://" target="_blank">http://</a> - WANGBL</li>
        <li><a href="http://" target="_blank">http://</a> - Mario A. Gimenez</li>
        <li><a href="http://anandharidas.blogspot.com/" target="_blank">http://anandharidas.blogspot.com/</a>
          - Anand Haridas</li>
        <li><a href="http://codenaut.blogspot.com" target="_blank">http://codenaut.blogspot.com</a>
          - FRJK</li>
        <li><a href="http://codenaut.blogger.com" target="_blank">http://codenaut.blogger.com</a>
          - FRJK</li>
        <li><a href="http://sites.google.com/struts2spring" target="_blank">struts2spring</a>
          - Vijay Kumar Keshri</li>
        <li class="more">
          <div class="more">
            <a href="mapList.php">Read More</a>
          </div>
        </li>
      </ul>
    </div>
  </div>
  <div id="rightcolumn">
    <div class='sideitem'>
      <h6>Related Links</h6>
      <ul>
        <li><a href="mapList.php">Ganymede Around the World</a></li>
        <li><a href="postercontest.php">Ganymede Poster Contest</a></li>
        <li><a href="friends.php">Friends of Ganymede</a></li>
      </ul>
    </div>
  </div>
</div>