<?xml version="1.0" encoding="ASCII"?>
<discovery:DiscoveryDefinition xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:discovery="http://www.eclipse.org/amalgamation/discovery/1.0">
  <categories name="Model To Text" description="Model to Text (also known as code generation) tools and languages." relevance="6" image48="">
    <components name="Acceleo" provider="Eclipse.org" description="Acceleo is a standard-based template language focused on usability and pragmatism." license="EPL" image32="images/acceleo.png">
      <sitesURLS>http://download.eclipse.org/modeling/m2t/acceleo/updates/releases/3.0/</sitesURLS>
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary=" Acceleo is a pragmatic implementation of the Object Management Group (OMG) MOF Model to Text Language (MTL) standard.&#xA;&#xA;You do not need to be an expert to start using the plug-ins and create your first code generator : using the provided example projects and the powerful completion feature of the Acceleo editor, it is very easy to get started once you understand the basic principles. " screenshot="images/acceleo-screenshot-320x240.png"/>
      <id>org.eclipse.acceleo.sdk</id>
    </components>
    <components name="Jet" provider="Eclipse.org" description="JET is an Eclipse-based code generator framework based on JSP." license="EPL" image32="images/jet.png">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="JET allows you to easily generate textual artifacts in the Eclipse environment&#xA;in a syntax similar to JSP. It supplies tag libraries for navigating XML&#xA;documents, EMF-based documents (including UML2) and for writing template&#xA;results to the Eclipse workspace.&#xA;" url="http://wiki.eclipse.org/M2T-JET"/>
      <id>org.eclipse.jet.sdk</id>
      <hiddingFeatureID>org.eclipse.jet</hiddingFeatureID>
    </components>
    <components name="Xpand" provider="Eclipse.org" description="Xpand is an efficient code generation framework with a statically-typed template language and support for arbitrary input model types." license="EPL" image32="images/xpand.png">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="Xpand allows to write code generators for many different types of models. These&#xA;models include EMF models, UML models, XML documents and textual DSL models.&#xA;Any type of source code can be generated from the model sources. Xpand has&#xA;strong emphasize on reducing the effort to create industry-strength code&#xA;generators and provides outstanding Eclipse integration.&#xA;&#xA;Xpand's features include:&#xA; &#x2022; support of various modeling tools&#xA; &#x2022; support of EMF (Eclipse Modeling Framework)&#xA; &#x2022; model-to-code transformations&#xA; &#x2022; model-to-model transformations             &#xA; &#x2022; model validation&#xA; &#x2022; expression language&#xA; &#x2022; static code analysis&#xA; &#x2022; aspect oriented programming&#xA; &#x2022; support for standalone execution" screenshot="images/xpand-screenshot-320x240.png"/>
      <id>org.eclipse.xpand.sdk</id>
      <hiddingFeatureID>org.eclipse.xpand</hiddingFeatureID>
    </components>
  </categories>
  <categories name="Model To Model" description="Model to Model tools and transformation languages." image48="">
    <components name="ATL" provider="Eclipse.org" description="ATL is a model transformation language and toolkit, including an ATL transformation engine and an IDE for ATL." license="EPL" image32="images/atl.png">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="The ATL component of the M2M project provides ways to produce a set of target models from a set of source models. An ATL transformation program is composed of rules that define how source model elements are matched and navigated to create and initialize the elements of the target models. Developed on top of the Eclipse platform, the ATL toolkit provides a number of standard development tools (advanced editor, debugger, profiler, etc.) that aims to ease development of ATL transformations." screenshot="images/atl-screenshot-320x240.png" url="http://www.eclipse.org/m2m/atl/"/>
      <id>org.eclipse.m2m.atl.sdk</id>
      <hiddingFeatureID>org.eclipse.m2m.atl</hiddingFeatureID>
    </components>
    <components name="Declarative QVT" provider="Eclipse.org" description="Editors for QVT Relational and QVT Core documents" license="EPL" groups="//@filters.0" image32="images/qvtd.png" incubation="true" visible="false">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="QVTd project currently provides Editors for&#xA;&#xA;- QVT Relational documents&#xA;- QVT Core documents&#xA;&#xA;QVTc and QVTr execution is work in progress" screenshot="images/qvtd-screenshot-320x240.png" url="http://www.eclipse.org/projects/project_summary.php?projectid=modeling.m2m.qvt-relations"/>
      <id>org.eclipse.qvtd</id>
    </components>
    <components name="Operational QVT" provider="Eclipse.org" description="Implementation of the Operational part of the OMG QVT (Query/View/Transformation) open standard" license="EPL" image32="images/qvto.png">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="Based on MDT OCL, the Operational QVT project aims to be fully compliant with the OMG QVT standard providing a powerful Eclipse IDE with feature-rich editor (code completion, outline, navigation, etc.), debugger, project builders, launch configurations, deployment facilities and Ant support." screenshot="images/qvto-screenshot-320x240.png" url="http://wiki.eclipse.org/M2M/Operational_QVT_Language_%28QVTO%29"/>
      <id>org.eclipse.m2m.qvt.oml.sdk</id>
    </components>
  </categories>
  <categories name="Concrete Syntax Development" description="Tools and frameworks to develop dedicated modeling tools. " relevance="4">
    <components name="Extended Editing Framework" provider="Eclipse.org" description="EEF (Extended Editing Framework) is a presentation framework for EMF models. " license="EPL" groups="//@filters.0" image32="images/eef.png" incubation="true">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="The Extended Editing Framework aims at giving another way to improve the EMF model creation phase by providing new services dedicated to editing and using more appealing editing elements. The way to obtain these services and elements is based on a generative approach similar to the EMF.Edit one. The framework provides advanced editing components for the properties of EMF elements and a default generation based on standard metamodels using these components." screenshot="images/eef-screenshot-320x240.png" url="http://www.eclipse.org/modeling/emft/?project=eef"/>
      <id>org.eclipse.emf.eef.edt</id>
      <hiddingFeatureID>org.eclipse.emf.eef.runtime</hiddingFeatureID>
    </components>
    <components name="Graphical Modeling Framework Tooling" provider="Eclipse.org" description="GMF Tooling is a framework to generate functional graphical editors based on the GMF Runtime." license="EPL" image32="images/gmf.png">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <id>org.eclipse.gmf.sdk</id>
    </components>
    <components name="Graphiti" provider="Eclipse.org" description="Graphiti is a graphical API that enables the fast and easy creation of graphical tools for any kind of domain models." license="EPL" groups="//@filters.0" image32="images/graphiti.png">
      <sitesURLS>http://download.eclipse.org/graphiti/updates/0.7.0/</sitesURLS>
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="The goal of Graphiti is to support the fast and easy creation of graphical tools, which can display and edit underlying domain models using a tool-defined graphical notation. Graphiti supports the developer in getting to a first version of an editor with very low effort by:&#xA;- Hiding platform specific technology (e.g. GEF / Draw2D on Eclipse)&#xA;- Providing rich default implementations inside the framework&#xA;- Providing a default look and feel that was designed in close co-operation with usability specialists" screenshot="images/graphiti-screenshot-320x240.png" url="http://www.eclipse.org/graphiti/"/>
      <id>org.eclipse.graphiti.sdk.feature</id>
      <messages title="Early Access" message="Please note that this component is not a participant of the Helios simultaneous release and that it is provided here as an early access."/>
    </components>
    <components name="Xtext" provider="Eclipse.org" description="Xtext is a framework for development of programming languages and domain&#xA;specific languages (DSLs). " license="EPL" groups="//@filters.0" image32="images/xtext.png">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="Xtext is a framework for development of programming languages and domain&#xA;specific languages (DSLs). Just describe your very own DSL using Xtext's simple&#xA;EBNF grammar language and the generator will create a parser, an AST-meta model&#xA;(implemented in EMF) as well as a full-featured Eclipse text editor from that.&#xA;&#xA;The Framework integrates with frameworks from Eclipse Modeling such as EMF, GMF&#xA;and M2T as well as other Eclipse based technologies. Development with Xtext is&#xA;optimized for short turn-arounds, so that adding new features to an existing&#xA;DSL is a matter of minutes. Still sophisticated programming languages can be&#xA;implemented." screenshot="images/xtext-screenshot-320x240.png"/>
      <id>org.eclipse.xtext.sdk</id>
    </components>
  </categories>
  <categories name="Modeler" description="Modeling environment tools." relevance="3">
    <components name="UML2 Tools" provider="Eclipse.org" description="The UML2Tools component is a set of the UML 2.1 compatible diagram editors, based on the Eclipse GMF framework" license="EPL" groups="//@filters.0" image32="" incubation="true" visible="false">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="UML2Tools provides support for Class, Composite Structure, Component,&#xA;Deployment, UseCase, Activity and StateMachine diagram. It also contains&#xA;supplementary Profile Definition diagram, enabling the visual integration of&#xA;the custom defined stereotypes with the other supported diagrams." screenshot="images/uml2tools-screenshot-320x240.png"/>
      <id>org.eclipse.uml2tools</id>
    </components>
    <components name="Papyrus" provider="Eclipse.org" description="Papyrus provides an integrated, user-consumable environment for editing models based on UML and other related languages such as SysML." license="EPL" groups="//@filters.0" image32="images/papyrus.png" incubation="true">
      <sitesURLS>http://download.eclipse.org/modeling/mdt/papyrus/updates/nightly/</sitesURLS>
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="Papyrus is an open source component of the&#xA;Model Development Tools (MDT) subproject to provide an integrated environment&#xA;for editing UML and SysML models. Specially, this project will provide the glue&#xA;around valuable UML and SysML diagram editors (GMF-based or not) and other MDE&#xA;tools. It will also offer support for UML and SysML profiling mechanisms." screenshot="images/papyrus-screenshot-320x240.png" url="http://www.eclipse.org/papyrus"/>
      <id>org.eclipse.papyrus</id>
      <messages title="Early Access" message="Please note that this component is not a participant of the Helios simultaneous release and that it is provided here as an early access."/>
    </components>
  </categories>
  <categories name="Reverse Engineering" description="Tools focused on getting models from source code." relevance="2">
    <components name="MoDisco" provider="Eclipse.org" description="MoDisco is an extensible framework to develop model-driven tools for software modernization projects." license="EPL" groups="//@filters.0" image32="images/modisco.png" incubation="true">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="MoDisco provides standard metamodels to describe existing systems, discoverers&#xA;to automaticaly create models from Java and XML source code, and generic tools&#xA;to understand and transform complex models.&#xA;" screenshot="images/modisco-screenshot-320x240.png" url="http://www.eclipse.org/gmt/modisco/"/>
      <id>org.eclipse.gmt.modisco.sdk</id>
      <hiddingFeatureID>org.eclipse.gmt.modisco.infrastructure</hiddingFeatureID>
    </components>
  </categories>
  <categories name="Runtime and Tools" description="Modeling related runtimes and frameworks." relevance="1">
    <components name="Connected Data Objects Repository" provider="Eclipse.org" license="EPL" visible="false">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
    </components>
    <components name="Agent Modeling Platform" provider="             Eclipse.org  &#xA; &lt;a href=&quot;http://www.eclipse.org/amp/installing/about_discovery.php&quot;>contains non ip-approved content&lt;/a>" description="Agent Modeling Platform (Incubation), including Agent Modeling Framework, Agent eXecution Framework, Agent Graphics and Visualization Framework, and Escape." license="EPL" groups="//@filters.0" image32="images/amp.png" incubation="true">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <sitesURLS>http://lwjgl.org/update</sitesURLS>
      <sitesURLS>http://ascape.sourceforge.net/eclipse</sitesURLS>
      <sitesURLS>http://download.eclipse.org/amp/updates/releases</sitesURLS>
      <sitesURLS>http://mirror.anl.gov/pub/repastsimphony/</sitesURLS>
      <overview summary="The Agent Modeling Platform (AMP) provides extensible frameworks&#xA;and exemplary tools for representing, editing, generating, executing and&#xA;visualizing agent-based models (ABMs) and any other domain requiring spatial,&#xA;behavioral and functional features. AMP has two parts: 1) The Agent Modeling&#xA;Framework (AMF) which provides an Agent-Based Model (ABM) meta-model&#xA;representation, editor, development environment and code generators for popular&#xA;ABM platforms. 2) The AMP platform tools. The Agent Execution Framework (AXF)&#xA;provides services and UI for model management, execution, and views. The Agent&#xA;Graphics Framework (AGF) extends GEF, GEF3D, Zest, and the BIRT charting engine&#xA;to support real-time visualization of and interaction with agent models. Escape&#xA;is a complete ABM environment for Eclipse." screenshot="images/amp-screenshot-320x240.png" url="http://www.eclipse.org/amp"/>
      <id>org.eclipse.amp.all</id>
      <messages title="Early Access" message="Please note that this component is not a participant of the Helios simultaneous release and that it is provided here as an early access."/>
    </components>
    <components name="Model Workflow Engine" provider="Eclipse.org" license="EPL" groups="//@filters.0" incubation="true" visible="false">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
    </components>
    <components name="EGF" provider="Eclipse.org" description="The purpose of EGF is to provide an extensible generation framework in order to support complex, large-scale and customizable generations." license="EPL" groups="//@filters.0" image32="images/egf.png" incubation="true">
      <sitesURLS>http://download.eclipse.org/egf/updates/helios/official/</sitesURLS>
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="In order to improve the software development industrialization, a major step consists in mass-producing software. This mass-production must be customizable, and must be able to support complex, large-scale and heterogeneous generations. Given the today's available Eclipse tools, the issue here is not to provide either a new transformation engine (model-to-model, model-to-text, text-to-model, text-to-text) or DSL (Domain-Specific Language) editor but to realize their integration for flexible software mass-production." screenshot="images/egf-screenshot-320x240.png" url="http://wiki.eclipse.org/EGF"/>
      <id>org.eclipse.egf.sdk</id>
      <hiddingFeatureID>org.eclipse.egf.sdk</hiddingFeatureID>
      <messages title="Early Access" message="Please note that this component is not a participant of the Helios simultaneous release and that it is provided here as an early access."/>
    </components>
    <components name="Teneo" provider="Eclipse.org" description="Teneo is a Model-Relational mapping and runtime database persistence solution for the Eclipse Modeling Framework (EMF) using Hibernate and EclipseLink." license="EPL">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="The EMF &#x2013; Hibernate integration supports all EMF features and standard EclipseLink and Hibernate features. EMF objects can be persisted in most major relational databases and retrieved using an EMF resource approach or HQL/JPA queries. A distinctive feature of Teneo is that you can override/extend the Model-Relational mapping using JPA annotations in the model." screenshot="images/teneo-screenshot-320x240.png" url="http://wiki.eclipse.org/Teneo"/>
      <id>org.eclipse.emf.teneo.hibernate</id>
      <id>org.eclipse.emf.teneo.eclipselink</id>
    </components>
    <components name="OCL Tools" provider="Eclipse.org" description="An evaluation Console for OCL expressions, and Xtext Editors for Complete OCL documents, Combined OCL in Ecore Models and for individual OCL expressions" license="EPL" image32="images/ocl.png">
      <sitesURLS>http://download.eclipse.org/releases/helios/</sitesURLS>
      <overview summary="The Examples for the Object Constraint Language provide&#xA;&#xA;Xtext Editors for&#xA;- CompleteOCL documents to enhance Ecore or UML models&#xA;- OCL in Ecore documents defining OCL and Ecore at once&#xA;- Individual Expressions for use by other tools&#xA;- the OCL Standard Library" screenshot="images/ocl-screenshot-320x240.png" url="http://www.eclipse.org/projects/project_summary.php?projectid=modeling.mdt.ocl"/>
      <id>org.eclipse.ocl.examples</id>
    </components>
  </categories>
  <filters name="Incubation"/>
</discovery:DiscoveryDefinition>
