<?php
/*******************************************************************************
 * Copyright(c) 2015 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *    Nathan Gervais (Eclipse Foundation) - Initial implementation
 *    Eric Poirier (Eclipse Foundation)
 *******************************************************************************/
?>
<aside id="leftcol" class="col-md-4">
  <ul id="leftnav" class="ul-left-nav fa-ul hidden-print">
    <li class="separator"><a class="separator" href="/ganymede/">
        Ganymede </a></li>
    <li><i class="fa fa-angle-double-right orange fa-fw"></i> <a
      href="/downloads/packages/" target="_self"> Download Ganymede </a>
    </li>
    <li><i class="fa fa-angle-double-right orange fa-fw"></i> <a
      href="/ganymede/learn.php" target="_self"> Learn more about
        Ganymede </a></li>
    <li><i class="fa fa-angle-double-right orange fa-fw"></i> <a
      href="/ganymede/buzz.php" target="_self"> Ganymede Buzz </a></li>
    <li><i class="fa fa-angle-double-right orange fa-fw"></i> <a
      href="/ganymede/mapList.php" target="_self"> Ganymede Around the World
    </a></li>

  </ul>
</aside>
<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>