<!DOCTYPE html>
<html>

  <head>
	<meta charset="UTF-8">
	<title>Xtext - Community</title>
	
	<meta name="viewport" content="width=device-width, initial-scale=1.0">
	<meta name="description"
		content="The website of Eclipse Xtext, an open-source framework for development of programming languages and domain-specific languages">
	<meta name="author" content="Sven Efftinge">
	<meta name="author" content="Miro Spoenemann">
	<!--  styles -->
	<!-- Le HTML5 shim, for IE6-8 support of HTML5 elements -->
	<!--[if lt IE 9]>
	  <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
	<![endif]-->
	
	<!-- Le fav and touch icons -->
	<link rel="shortcut icon" href="/Xtext/images/favicon.png">
	
	<link href="/Xtext/css/bootstrap.css" rel="stylesheet" type='text/css'>
	<link href="/Xtext/css/bootstrap-responsive.css" rel="stylesheet" type='text/css'>
	<link href="/Xtext/css/shield-responsive.css" rel="stylesheet" type='text/css'>
	<link href='/Xtext/css/fonts.css' rel='stylesheet' type='text/css'>
	<link href="/Xtext/css/prettyPhoto.css" rel="stylesheet" media="screen" type='text/css'>
	<link href="/Xtext/css/prettify.css" type="text/css" rel="stylesheet"/>
	<link href="/Xtext/css/style.css" rel="stylesheet" type='text/css'>
	<!-- cover flow -->
	<link href="/Xtext/css/coverflow.css" rel="stylesheet" type='text/css'>
	<!--[if lt IE 9]>
	  <link href="/css/iebugs.css" rel="stylesheet" type='text/css'>
	<![endif]-->

	<!-- BEGIN Cookie Consent
	<link rel="stylesheet" type="text/css" href="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.css" />
	<script src="//cdnjs.cloudflare.com/ajax/libs/cookieconsent2/3.0.3/cookieconsent.min.js"></script>
	<script>
	window.addEventListener("load", function(){
	window.cookieconsent.initialise({
		"palette": {
		"popup": {
		  "background": "#000"
		},
		"button": {
		  "background": "#f1d600"
		}
		},
		"theme": "edgeless",
		"type": "opt-in",
		onInitialise: function (status) {
		  var type = this.options.type;
		  var didConsent = this.hasConsented();
		  if (type == 'opt-in' && didConsent) {
		    // TODO: enable cookies
		  }
		  if (type == 'opt-out' && !didConsent) {
		    // TODO: disable cookies
		  }
		},
		onStatusChange: function(status, chosenBefore) {
		  var type = this.options.type;
		  var didConsent = this.hasConsented();
		  if (type == 'opt-in' && didConsent) {
		    // TODO: enable cookies
		  }
		  if (type == 'opt-out' && !didConsent) {
		    // TODO: disable cookies
		  }
		}, 
		onRevokeChoice: function() {
		  var type = this.options.type;
		  if (type == 'opt-in') {
		    // TODO: disable cookies
		  }
		  if (type == 'opt-out') {
		    // TODO: enable cookies
		  }
		},
		"content": {
		"href": "http://www.eclipse.org/legal/privacy.php"
		}
	})});
	</script>
	END Cookie Consent -->
</head>


  <body>
  
    <header class="site-header">

  <!-- Navbar -->
  <div class="navbar navbar-fixed-top">
    <div class="navbar-inner">
      <div class="container">
        <a class="btn btn-navbar" data-toggle="collapse"
          data-target=".nav-collapse"> <span class="icon-bar"></span> <span
          class="icon-bar"></span> <span class="icon-bar"></span>
        </a> <a class="brand" href="/Xtext/index.html"></a>
        <div class="nav-collapse collapse" style="height: 0px;">
          <ul class="nav">
            <!--li ><a href="/Xtext/news.html">News</a></li-->
            <li ><a href="/Xtext/download.html">Download</a></li>
            <li ><a href="/Xtext/documentation/index.html">Documentation</a></li>
            <li ><a href="/Xtext/community.html">Community</a></li>
            <li class="dropdown">
              <a class="dropdown-toggle" data-toggle="dropdown" href="#">Support &amp; Trainings<span class="caret"></span></a>
              <ul class="dropdown-menu">
                <li><a href="https://www.itemis.com/en/xtext/support-and-team/" target="_blank">itemis</a></li>
                <li><a href="https://typefox.io/trainings-2" target="_blank">TypeFox</a></li>
              </ul>
            </li>
            <li ><a href="http://xtend-lang.org">Xtend</a></li>
          </ul>
          <!--div class="nav pull-right">
            <li ><a><iframe src="https://ghbtns.com/github-btn.html?user=eclipse&repo=xtext&type=star&count=true" frameborder="0" scrolling="0" width="170px" height="20px"></iframe></a></li>
          </div-->
        </div>
        <!--/.nav-collapse -->
      </div>
    </div>
  </div>
  <!-- Navbar End -->

</header>


    	<div id="page">
		<div id="team" class="container clearfix"> 
			<h2>Resources</h2>
	        <hr>
			<div class="row">
				<div class="span1">&nbsp;</div>
				<div class="span9 team">
			    <a href="http://www.eclipse.org/forums/index.php?t=thread&frm_id=27" class="anchor-in-div"></a>
			    <div class="row">
				  <div class="span1 ">
				    <img src="/Xtext/images/discussion-circ-darkgray.png" alt="image" class="image_left">
				  </div>
				  <div class="span2 ">
				    <h3>Forum</h3>
				 	</div>
					<div class="span6 ">
						<p>The <strong>Xtext forum</strong> is the first source for getting answers in case you got stuck.
						The community is very friendly.</p>
					</div>
					</div>
				</div>
			  <div class="span1">&nbsp;</div>
			</div>
			<div class="row">
				<div class="span1">&nbsp;</div>
				<div class="span9 team">
			    <a href="https://github.com/eclipse/xtext/blob/master/CONTRIBUTING.md#report-an-issue" class="anchor-in-div"></a>
			    <div class="row">
				  <div class="span1 ">
				    <img src="/Xtext/images/bug-circ-darkgray.png" alt="image" class="image_left">
				  </div>
				  <div class="span2 ">
				    <h3>Found a Bug?</h3>
				 	</div>
					<div class="span6 ">
						<p>Bug reports and enhancement request are tracked at <strong>GitHub.org</strong>. Please 
						explain the problem and provide a reduced but reproducible example.</p>
					</div>
					</div>
				</div>
			  <div class="span1">&nbsp;</div>
			</div>
			<div class="row">
				<div class="span1">&nbsp;</div>
				<div class="span9 team">
			    <a href="https://github.com/eclipse/xtext" class="anchor-in-div"></a>
			    <div class="row">
				  <div class="span1 ">
				    <img src="/Xtext/images/github-mark-darkgray.png" alt="image" class="image_left">
				  </div>
				  <div class="span2 ">
				    <h3>Github</h3>
				 	</div>
					<div class="span6 ">
						<p>The Xtext source code is available on <strong>GitHub</strong>. You'll find more information on how to contribute to the project in the README.md contained there.</p>
					</div>
				  </div>
				</div>
			  <div class="span1">&nbsp;</div>
			</div>
			<div class="row">
				<div class="span1">&nbsp;</div>
				<div class="span9 team">
			    <a href="https://twitter.com/intent/user?screen_name=Xtext" class="anchor-in-div"></a>
			    <div class="row">
				  <div class="span1 ">
				    <img src="/Xtext/images/Twitter-bird-darkgray.png" alt="image" class="image_left">
				  </div>
				  <div class="span2 ">
				    <h3>Twitter</h3>
				 	</div>
					<div class="span6 ">
						<p>If you are on twitter and want to get notified about Xtext, you should consider following <strong>@Xtext</strong>.</p>
					</div>
					</div>
				</div>
			  <div class="span1">&nbsp;</div>
			</div>
			
		</div>
		<br/><br/>
    <div id="zoo" class="container"> 
        <span class="edit-on-github pull-right">
          <a href="https://github.com/eclipse/xtext/edit/website-published/xtext-website/community.html">Add your project!</a>
        </span>
        <h2>What others have built with Xtext</h2>
        <hr>
  	    <table class="table table-striped table-condensed">
  	        <thead>
  	        <tr>
  	          <th>Name</th>
  	          <th>Description</th>
  	          <th>License</th>
  	          <th>Category</th>
  	          <th>Author(s)</th>
  	        </tr></thead>
  	        <tbody>
  	        
  	        <tr>
  	          <td><a href="http://applause.github.io/">APPlause</a></td>
  	          <td>Open source tool chain to produce native apps for different
  	      devices such as Android, iPhone and iPad.</td>
  	          <td>EPL</td>
  	          <td>Language, Framework</td>
  	          <td>Heiko Behrens, Peter Friese, et al</td>
  	        </tr>
  	        
  	        <tr>
  	          <td><a href="http://code.google.com/p/alloy4eclipse/">alloy4eclipse</a></td>
  	          <td>Specification and analysis of models in the Alloy4 language on
  	      the Eclipse platform.</td>
  	          <td>LGPL</td>
  	          <td>Language</td>
  	          <td>Mohamed Bouragba, Mohamed Said, Maxime Kapusta and Yoann Vasseur</td>
  	        </tr>
 		<tr>
   	          <td><a href="http://www.arakhne.org/afc">AFC</a></td>
   	          <td>AFC is a Java library that provides mathematic primitives, and other useful utility tools. The mathematic primitives
   	          (vector, point, matrix, shape, etc.) are providing operator overridings for Xtext-based languages.</td>
   	          <td>Apache 2 License</td>
   	          <td>Library</td>
   	          <td>St&eacute;phane Galland, et al</td>
   	        </tr>
  	        <tr>
  	          <td><a href="http://www.artop.org/">ARText (part&nbsp;of&nbsp;Artop)</a></td>
  	          <td>ARText, a textual language for the specification of AUTOSAR
  	      systems. See the <a href="https://vimeo.com/16768196">very</a> <a href="https://vimeo.com/13154188">cool</a> <a href="https://vimeo.com/12080038">screencasts</a>.</td>
  	          <td>closed&nbsp;source</td>
  	          <td>Language</td>
  	          <td>Sebastian Benz, Dana Wong</td>
  	        </tr>
  	          <tr>
  	          <td><a href="http://new.axdt.org">Axdt</a></td>
  	          <td>ActionScript3 development tools. It uses Mirror resources to
  	      integrate declarations parsed from html and xml ActionScript Docs similar to
  	      the Xtext Java integration.</td>
  	          <td>EPL</td>
  	          <td>Language</td>
  	          <td>Martin Schnabel</td>
  	        </tr>
  	        <tr>
  	           <td><a href="http://businessAppTester.com">BusinessAppTester</a></td>
  	           <td>
  	             Allows you to reuse JUnit test classes by seperating the data from the
  	      unit implementation class. Uses Xtext to define test class specific domain
  	      models.
  	           </td>
  	           <td>EPL</td>
  	           <td>Testing, Framework</td>
  	           <td>Florian Pirchner, Ekkehard Gentz</td>
  	       </tr>
  	         <tr>
  	           <td><a href="http://www.canappi.com">Canappi</a></td>
  	           <td>
  	             Canappi is a Development Hub, focusing on Mobile Application Development, that
  	      integrates tools, mobile platforms, libraries and back-end services. It is
  	      based on mdsl, a very compact mobile domain specific language. Platform
  	      specific code generation happens in on the ClougGen.org platform.
  	           </td>
  	           <td>Commercial</td>
  	           <td>Language</td>
  	           <td>Jean-Jacques Dubray</td>
  	       </tr>
  	       <tr>
  	            <td><a href="http://code.google.com/p/dom3editor/">dom3editor</a></td>
  	            <td>
  	                  This is a tool to help edit Dominions 3 mod files. It includes
  	      context coloring, code completion, error checking and integrated help. You can
  	      edit using the text editor or the form based entry view.
  	            </td>
  	            <td>GPL</td>
  	            <td>Language</td>
  	            <td>Larry Moore</td>
  	       </tr>
  	      <tr>
  	          <td><a href="https://wiki.eclipse.org/GEF/GEF4/DOT">GEF4 DOT</a></td>
  	          <td>Graphviz DOT language editor</td>
  	          <td>EPL</td>
  	          <td>Language, Framework</td>
  	          <td>Fabian Steeg, Michael Clay, et al.</td>
  	        </tr>
  	        <tr>
  	          <td><a href="https://github.com/dslmeinte/Xtext2-DSLs">dslmeinte's example DSLs</a></td>
  	          <td>Various DSLs for technical domains (data modeling, dynamic screens, XSDs,
  	      WSDLs)</td>
  	          <td>MIT license</td>
  	          <td>examples</td>
  	          <td><a href="http://www.dslconsultancy.com/">Meinte Boersma</a></td>
  	          </tr>
  	          <tr>
  	          <td><a href="http://code.google.com/p/emf-customizer/">EMF&nbsp;Customizer</a></td>
  	          <td>EMF Customizer is a model (Ecore based)
  	      customization/styling/refining CSS like textual DSL (Domain Specific Language)
  	      targeting MDSD tool chains end users. </td>
  	          <td>EPL</td>
  	          <td>Language</td>
  	          <td>Cedric Vidal</td>
  	        </tr>
  	        <tr>
  	          <td><a href="https://www.eclipse.org/incquery/">EMF&nbsp;IncQuery</a></td>
  	          <td>High performance graph search for EMF models. EMF-IncQuery is a framework for defining declarative graph queries over EMF models, and executing them efficiently without manual coding in an imperative programming language such as Java.</td>
  	          <td>EPL</td>
  	          <td>Language, Framework</td>
  	          <td><a href="https://projects.eclipse.org/projects/modeling.incquery/who">EMF-IncQuery contributors</a></td>
  	        </tr>
  	          <tr>
  	          <td><a href="http://code.google.com/a/eclipselabs.org/p/emf-scaffolding/">EMF&nbsp;Scaffolding</a></td>
  	          <td>Implementation of the principle of dynamic inplace scaffolding
  	      with EMF presented in July 2009 <a href="http://www.slideshare.net/cedric.vidal/rmll-eclipse-acceleo-day-mdsd-scaffolding-and-acceleo-cdric-vidal-11">at Eclipse Acceleo Day</a>.
  	      </td>
  	          <td>EPL</td>
  	          <td>Language, Framework</td>
  	          <td>Cedric Vidal and Jerome Benois</td>
  	        </tr>
  	          <tr>
  	          <td><a href="http://www.eclipse.org/modeling/emft/b3/">Eclipse b3</a></td>
  	          <td>new generation of Eclipse technology to simplify software build
  	      and assembly.</td>
  	          <td>EPL</td>
  	          <td>Language</td>
  	          <td>Henrik Lindberg</td>
  	        </tr>
  	        <tr>
  	            <td><a href="http://elysium.thsoft.hu">Elysium</a></td>
  	            <td>LilyPond IDE for Eclipse</td>
  	            <td>EPL</td>
  	            <td>Language</td>
  	            <td>Denes Harmath</td>
  	        </tr>
  	        <tr>
  	          <td><a href="http://www.eclipse.org/etrice/">eTrice</a></td>
  	          <td>eTrice is a Modeling Tool for distributed eventdriven realtime systems based on
  	      Realtime Object Oriented Modeling (ROOM), not UML. Textual and graphical ROOM
  	      editors editors and codegenerators and runtime libraries for Java, C++ and C
  	      will be provided.</td>
  	          <td>EPL</td>
  	          <td>Language, Framework</td>
  	          <td>Henrik Rentz-Reichert, Thomas Schuetz</td>
  	        </tr>
  	        <tr>
  	          <td><a href="http://fj-eclipse.sourceforge.net/">fj-eclipse</a></td>
  	          <td>an Eclipse-based IDE for Featherweight Java, implemented using Xtext.</td>
  	          <td>GPL</td>
  	          <td>Language</td>
  	          <td>Lorenzo Bettini</td>
  	        </tr>
  	          <tr>
  	         <td><a href="https://github.com/cloudsmith/geppetto">Geppetto</a></td>
  	         <td>Integrated development environment for the Puppet System Admin tools. (The
  	        PP manifest
  	                  language is Ruby like).</td>
  	         <td>EPL, Apache</td>
  	            <td>Language</td>
  	         <td>Henrik Lindberg, Cloudsmith Inc.</td>
  	        </tr>
  	          <tr>
  	         <td><a href="http://community.jaspersoft.com/project/jaspersoft-studio">Jaspersoft Studio, Report Designer for JasperReports</a></td>
  	         <td>The Expression Editor allows to compose Java-like expressions enriched with JasperReports specific tokens. 
  	  The SQL Query Designer, in text mode, allows to edit simple and advanced SQL expressions.</td>
  	         <td>EPL</td>
  	            <td>Report Designer</td>
  	         <td>Jaspersoft Studio Team (Veaceslav Chicu, Massimo Rabbi, Marco Orlandin and Giulio Toffoli)</td>
  	        </tr>
  	        
  	        
  	        <tr>
  	            <td><a href="http://www.jolie-lang.org/">Joliepse
  	      IDE</a></td>
  	            <td>Joliepse is an Integrated Development Environment (IDE) for the JOLIE
  	      programming language, the first full-fledged programming language based upon
  	      the service-oriented programming paradigm
  	      and support classes.</td>
  	            <td>GPL</td>
  	            <td>Language</td>
  	            <td>Diego Castronuovo (castronu at gmail dot com)</td>
  	        </tr>
  	        <tr>
  	          <td><a href="http://www.informatik.uni-kiel.de/rtsys/kieler/">KIELER</a></td>
  	          <td>an evaluation platform for new methods in model-based software
  	      design (automatic layout, graphic/ textual dynamic views, focus and context,
  	      simulation, codegen,...)</td>
  	          <td>EPL</td>
  	          <td>Language</td>
  	          <td>Rtsys group, Dep. of Computer Science, Uni Kiel</td>
  	        </tr>
  	        <tr>
  	            <td><a href="http://amishne.github.io/llvm-ir-editor/">LLVM IR SDK</a></td>
  	            <td>A rich LLVM IR editor plugin for Eclipse.</td>
  	            <td>BSD</td>
  	            <td>Language</td>
  	            <td>Alon Mishne</td>
  	        </tr>
  	          <tr>
  	          <td><a href="http://code.google.com/p/llvm4e/">LLVM4e</a></td>
  	          <td>Xtext based Eclipse editor for LLVM (Low Level Virtual Machine)
  	      Assembly Language *.ll files</td>
  	          <td>EPL</td>
  	          <td>Language</td>
  	          <td>Cedric Vidal</td>
  	        </tr>
  	          <tr>
  	          <td><a href="http://logicals.com/">logi.CAD 3</a></td>
  	          <td>logi.CAD 3 is a tool for programming a wide variety of PLCs (Programmable Logic Controllers) according to the industry standard IEC 61131-3. It is an Eclipse RCP based (E3/E4) integrated development environment (IDE) using XText for implementing the editors for the IEC programming languages ST (Structured Text), FBD (Function Block Diagram) and SFC (Sequential Function Chart).</td>
  	          <td>Commercial</td>
  	          <td>Language</td>
  	          <td>logi.cals Austria (http://logicals.com)</td>
  	        </tr>
  	        <tr>
  	            <td><a href="http://mads.sourceforge.net">MADS</a></td>
  	            <td>
  	             MADS (Multipurpose Agricultural Data System) is a free open-source tool
  	      for modelling and analysis of agricultural activities - crops, livestock,
  	      forestry and others - in developing countries, at sector, regional or project
  	      level. .
  	            </td>
  	            <td>EPL, GPL</td>
  	            <td>RCP application</td>
  	            <td>Michel Simeon</td>
  	        </tr>
  	         <tr>
  	            <td><a href="http://www.mechatronicuml.org">MechatronicUML Website</a>,<a href="https://svn-serv.cs.upb.de/mechatronicuml/">MechatronicUML SVN</a></td>
  	            <td>
  	             MechatronicUML is a free open-source tool suite 
  	      that offers language, process and tooling to design software for networked cyber-physical systems.
  	      We offer Xtext grammars for: Action Language, API Description, DOT/ Graphviz, LPSolve, MTCTL, Model Dependencies.
  	            </td>
  	            <td>EPL</td>
  	            <td>Language, Tool Suite</td>
  	            <td>Project Group Mechatronic Systems Design, Fraunhofer Institute for Production Technology IPT; Software Engineering Group, Heinz Nixdorf Institute, University of Paderborn</td>
  	        </tr>
  	        <tr>
  	        <tr>
  	          <td><a href="http://www.mod4j.org/">mod4j</a></td>
  	          <td>open source DSL-based environment for developing administrative
  	      enterprise applications</td>
  	          <td>EPL</td>
  	          <td>Language, Framework</td>
  	          <td>Jos Warmer</td>
  	        </tr>
  	        <tr>
  	          <td><a href="http://modulestudio.de/en">ModuleStudio</a></td>
  	          <td>A DSL with tooling based on Sirius and Xtext to describe structure and behaviour of web applications.
		      The models are used to generate extensions for a PHP-based web application framework.</td>
  	          <td>closed&nbsp;source</td>
  	          <td>Language, Tool Suite</td>
  	          <td>Axel Guckelsberger</td>
  	        </tr>
  	        <tr>
  	         <td><a href="http://metrikforge.informatik.hu-berlin.de/projects/nanoworkbench/">NanoWorkbench</a>
  	         </td>
  	         <td>A Domain-specific Workbench (DSM) for the development of optical
  	      nanostructures. Especially used for the description of simulations and
  	      experiments.
  	         </td>
  	         <td>GPL</td>
  	         <td>language, documentation</td>
  	            <td>Siamak Haschemi (haschemi@informatik.hu-berlin.de), Martin Schmidt
  	       (schmidma@informatik.hu-berlin.de), Arif Wider
  	      (wider@informatik.hu-berlin.de)</td>
  	        </tr>
  	      <tr>
  	            <td><a href="http://code.google.com/a/eclipselabs.org/p/nusmv-tools/">nusmv-tools</a></td>
  	            <td>The nusmv-tools project provides a set of tools for the model checker
  	      <a href="http://nusmv.fbk.eu/">NuSMV</a>. Xtext is used to create an Eclipse
  	      editor for the NuSMV input language. The editor is further enhanced by static
  	      analysis checks (shown as Eclipse error markers) performed by an OSGi-fied
  	      version of NuSMV itself. Watch the <a href="https://vimeo.com/21637768">screencast</a>.
  	            </td>
  	            <td>EPL</td>
  	            <td>Language</td>
  	            <td><a href="mailto://siamak@haschemi.org">Siamak Haschemi</a></td>
  	        </tr>
  	        <tr>
  	            <td><a href="http://wiki.eclipse.org/MDT/OCL">OCL</a></td>
  	            <td>Editors for OCL expressions, documents, libraries. Standalone or
  	      embedded in Ecore.</td>
  	            <td>EPL</td>
  	            <td>Language</td>
  	            <td>Ed Willink</td>
  	        </tr>
  	        <tr>
  	           <td><a href="http://www.gentleware.com/poseidon-for-dsls.html">Poseidon for DSLs</a></td>
  	           <td>Framework for creating graphical tools for DSLs, based on internal
  	      Xtext models. Poseidon for UML 8.0 as a sample DSL platform
  	           </td>
  	           <td>commercial</td>
  	           <td>Framework</td>
  	           <td>Gentleware AG</td>
  	       </tr>
  	         <tr>
  	          <td><a href="http://code.google.com/p/protobuf4e/">protobuf4e</a></td>
  	          <td>Editor for Google's Protocol Buffers data interchange file
  	      format. </td>
  	          <td>EPL</td>
  	          <td>Language</td>
  	          <td>Cedric Vidal</td>
  	        </tr>
  	        <tr>
  	            <td><a href="http://www.pxdoc.fr">pxDoc</a></td>
  	            <td>pxDoc is a Domain Specific Language to design document generators. Since it is based on Xbase, it allows to implement document generators for any data that can be accessed with Java.</td>
  	            <td>Commercial, free for personal use</td>
  	            <td>Language, Framework</td>
  	            <td>eXtreme Modeling Software</td>
  	        </tr>
  	        <tr>
  	            <td><a href="http://wiki.eclipse.org/QVTd">QVTc and QVTr</a></td>
  	            <td>Editors for QVT Core and Relational languages.</td>
  	            <td>EPL</td>
  	            <td>Language</td>
  	            <td>Ed Willink</td>
  	        </tr>
  	        <tr>
  	            <td><a href="http://rapid-api.org/rapid-ml">RAPID-ML</a></td>
  	            <td>RAPID-ML is a domain-driven API modeling language that puts data modeling at the center
  	            of REST API design.  With RAPID-ML, you can describe data types naturally with an expressive, 
  	            technology-independent modeling language, and adapt shared models to each API with just the 
  	            right flexibility to bend the model, not break it.</td>
  	            <td>EPL</td>
  	            <td>Language</td>
  	            <td>Ted Epstein, Tanya Fesenko</td>
  	        </tr>
  	          <tr>
  	          <td><a href="http://sourceforge.net/projects/rng-eclipse/">RELAX NG for Eclipse</a></td>
  	          <td>Provides support for editing RELAX NG documents in the Eclipse
  	      IDE. Integrates with standard WST XML editor to provide content completion and
  	      validation of edited XML file based on it's RELAX NG schema.</td>
  	          <td>EPL</td>
  	          <td>Language</td>
  	          <td>Dave Carver</td>
  	        </tr>
  	        <tr>
  	          <td><a href="http://www.sarl.io">SARL</a></td>
  	          <td>SARL is a general-purpose agent-oriented language. It aims at providing the fundamental abstractions for 
  	          dealing with concurrency, distribution, interaction, decentralization, reactivity, autonomy and dynamic 
  	          reconfiguration. The language is platform- and architecture-independent. 
  	          The default execution environment is the <a href="http://www.janusproject.io">Janus platform</a>.</td>
  	          <td>Apache 2 License</td>
  	          <td>Language, Framework</td>
  	          <td>Sebastian Rodriguez, Nicolas Gaud, St&eacute;phane Galland</td>
  	        </tr>
  	          <tr>
  	          <td><a href="http://sculptorgenerator.org">Sculptor</a></td>
  	          <td>You express your design intent in a textual DSL, from which
  	      Sculptor generates high quality Java code and configuration.</td>
  	          <td>Apache 2 License</td>
  	          <td>Language, Framework</td>
  	          <td>Torsten Juergeleit, Patrik Nordwall and others</td>
  	        </tr>
  	          <tr>
  	          <td><a href="http://swrtj.sourceforge.net/">SWRTJ: Sugared Welterweight Record-Trait Java</a></td>
  	          <td>a Java-like language where units of objects' functionality are modeled by
  	      traits and by records (a construct that complements traits to model the state
  	      part of objects).</td>
  	          <td>GPL</td>
  	          <td>Language</td>
  	          <td>Fabio Strocco, Lorenzo Bettini</td>
  	        </tr>
  	          <tr>
  	          <td><a href="http://sadl.sourceforge.net/">Semantic Application Design Language (SADL) Version 2</a></td>
  	          <td>The Semantic Application Design Language (SADL) is a language for building
  	      semantic models and expressing rules that capture additional domain
  	      knowledge. The SADL-IDE (integrated development environment) is a set of
  	      Eclipse plug-ins that support the editing and testing of semantic models
  	      using the SADL language. </td>
  	          <td>EPL</td>
  	          <td>Language</td>
  	          <td>Andrew Crapo, John Interrante, David Bracewell, Saurabh Gupta</td>
  	        </tr>
  	        <tr>
  	            <td><a href="http://code.google.com/a/eclipselabs.org/p/spray/">Spray</a></td>
  	            <td>This project aims to provide Domain Specific Languages to describe
  	      Visual DSL Editors against the Graphiti runtime, and provide code generation
  	      (with Xtend2) to create the boilerplate code for realizing the implementation
  	      against the Graphiti framework.</td>
  	            <td>EPL 1.0</td>
  	            <td>Framework</td>
  	            <td>Jos Warmer, Karsten Thoms et. al.</td>
  	        </tr>
  	        <tr>
  	            <td id="name"><a href="http://www.vclipse.org">VClipse</a></td>
  	            <td>VClipse is an Eclipse-based integrated development environment (IDE)
  	      for product modeling for the SAP Variant Configurator (VC). VClipse supports the
  	      specification of objects and dependencies in a textual domain specific language
  	      calld VCML. This enables the use of standard text comparison tools and version
  	      control systems in the model development process.</td>
  	            <td>EPL</td>
  	            <td>Language</td>
  	            <td>Tim Geisler, Aleksey&nbsp;Shumilin</td>
  	        </tr>
  	        <tr>
  	          <td><a href="https://www.eclipse.org/viatra/">VIATRA</a></td>
  	          <td>VIATRA: An Event-driven and Reactive Model Transformation Platform. 
  	              The VIATRA framework supports the development of model transformations with specific focus on event-driven, reactive transformations.
  	              Building upon the incremental query support of the EMF-IncQuery project, VIATRA offers a language to define transformations and
  	              a reactive transformation engine to execute certain transformations upon changes in the underlying model.
  	          </td>
  	          <td>EPL</td>
  	          <td>Language, Framework</td>
  	          <td><a href="https://projects.eclipse.org/projects/modeling.viatra/who">VIATRA contributors</a></td>
  	        </tr>
  	        <tr>
  	            <td><a href="https://github.com/team-worthwhile/worthwhile">Worthwhile</a></td>
  	            <td>Worthwhile is an IDE built around a simple WHILE language that
  	      integrates editing, running, debugging and verifying programs using
  	      Microsoft's Z3 prover.
  	            </td>
  	            <td>3-Clause BSD</td>
  	            <td>Language</td>
  	            <td>Leon Handreke, Chris Hiatt, Stefan Orf, Joachim Priesner, Fabian
  	      Ruch, Matthias Wagner</td>
  	      </tr>
  	        <tr>
  	         <td><a href="http://www.gipsys.ca/xdgl.htm">xDGL Data Generation Language</a></td>
  	        <td>xDGL is a free plugin on eclipse Helios 3.6 fully compatible with
  	      eclipse data tools platform DTP. Works with dozens of RDBMS
  	      databases. xDGL was invented by Abubaker Mahmoud, a Canadian Computer expert.
  	      xDGL is simple to learn and fast to execute and is designed to solve the problem 
  	      of most data generators systems works in english. xDGl works in any language that 
  	      could be written in the UTF-8 encoding. xDGL is the first Java Data Generation Language, 
  	      the first Eclipse language for Data Genration. xDGL is built in Java, Eclipse and the great Xtext
  	      Framework.</td>
  	        <td>Commercial</td>
  	        <td>Language</td>
  	        <td><a href="mailto://shangab@gmail.com">Abubaker Mahmoud</a></td>
  	         </tr> 
  	         <tr>
  	            <td><a href="http://xsemantics.sourceforge.net/">Xsemantics</a></td>
  	            <td>XSemantics is a DSL (implemented in Xtext) for writing type systems,
  	      reduction rules, interpreters (and in general relation rules) for languages
  	      implemented in Xtext. It then generates Java code that can be used in your
  	      language implemented in Xtext for scoping and validation (it can also generate
  	      a validator in Java). It is the successor of XTypeS.
  	            </td>
  	            <td>EPL</td>
  	            <td>Language</td>
  	            <td>Lorenzo Bettini</td>
  	      </tr>
  	      <tr>
  	            <td><a href="https://github.com/msbarry/Xtest">Xtest</a></td>
  	            <td>Xtest is a unit-testing domain-specific scripting language for Java.
  	      Tests are run while you type and any time a related file is saved, marking
  	      exceptions thrown and failed assertions as errors to immediately notify you of
  	      test failures.
  	            </td>
  	            <td>EPL</td>
  	            <td>Testing, Language</td>
  	            <td>Michael Barry</td>
  	        </tr>
  	         <tr>
  	          <td><a href="http://code.google.com/a/eclipselabs.org/p/xtext-forms-integration/">Xtext Forms Integration</a></td>
  	          <td>Sample RCP application to demonstrate how Xtext editors can be
  	      integrated within Eclipse UI forms</td>
  	          <td>EPL</td>
  	          <td>Framework</td>
  	          <td>Mikael Barbero</td>
  	        </tr>
  	         
  	        <tr>
  	          <td><a href="http://code.google.com/a/eclipselabs.org/p/xtext-typesystem/">Xtext Typesystem Framework</a></td>
  	          <td>A framework that supports the efficient implementation of typesystem
  	        rules for Xtext languages. Especially useful if your languages has
  	      expressions, statements, different (combinable) data types.</td>
  	          <td>EPL</td>
  	          <td>Framework</td>
  	          <td><a href="mailto:voelter@acm.org">Markus Voelter</a></td>
  	        </tr>
  	        
  	        <tr>
  	            <td><a href="http://xtypes.sourceforge.net/">XTypeS</a></td>
  	            <td>a DSL for writing type systems for languages implemented in Xtext. It
  	      then generates Java code that can be used in your language implemented in Xtext
  	      for scoping and validation (XTypeS also generates a validator in Java).
  	            </td>
  	            <td>GPL</td>
  	            <td>Language</td>
  	            <td>Lorenzo Bettini</td>
  	        </tr>
  	        <tr>
  	            <td><a href="http://www.yakindu.org">Yakindu Statechart Tools</a></td>
  	            <td>
  	              YAKINDU Statechart Tools (SCT) provides an integrated modeling
  	      environment for the specification and development of reactive, event-driven
  	      systems based on the concept of statecharts. It is an easy to use tool that
  	      features sophisticated graphical state chart editing, validation and simulation
  	      of statecharts as well as code generation.
  	            </td>
  	            <td>EPL</td>
  	            <td>Tool</td>
  	            <td>Axel Terfloth, Andreas M&uuml;lder, et al</td>
  	        </tr>
  	  
  	       <!-- 
  	        <tr>
  	          <td>AMP Agent Modeling Platform</td>
  	          <td>extensible frameworks and exemplary tools for representing,
  	      editing, generating, executing and visualizing agent-based models (ABMs) and
  	      any other domain requiring spatial, behavioral and functional features</td>
  	          <td>http://www.eclipse.org/amp/</td>
  	          <td>EPL</td>
  	          <td>Framework</td>
  	          <td>Metascape, LLC</td>
  	        </tr>
  	        
  	        <tr>
  	          <td>EMF Query 2</td>
  	          <td>search and retrieval of emf model elements in a structured
  	      format with an additional advantage that resource loading is minimized during
  	      execution </td>
  	          <td>http://www.eclipse.org/modeling/emf/?project=query2</td>
  	          <td>EPL</td>
  	          <td>Language</td>
  	          <td>?</td>
  	        </tr>
  	        
  	        <tr>
  	          <td>CamelSplit</td>
  	          <td>Text-based DSL Editor for Camel and Eclipse</td>
  	          <td>http://code.google.com/p/camel-extra/wiki/CamelSpit</td>
  	          <td>?</td>
  	          <td>Language</td>
  	          <td>Oisin Hurley</td>
  	        </tr>
  	        
  	      -->
  	        
  	      </tbody><tfoot></tfoot></table>
	      </div>
	      <div id="sponsors" class="container"> 
	        <h2>Sponsors</h2>
	        <hr>
		    <div class="row">
		      <div class="span1">&nbsp;</div>
		      <div class="span5">
		      <p><b>YourKit</b> is kindly supporting open source projects with its full-featured Java Profiler.</p>
				<p>YourKit, LLC is the creator of innovative and intelligent tools for profiling Java and .NET applications. 
				Take a look at YourKit's leading software products: <a href="http://www.yourkit.com/java/profiler/index.jsp">YourKit Java Profiler</a> and <a href="http://www.yourkit.com/.net/profiler/index.jsp">YourKit .NET Profiler</a>. 
		      </div>
		      <div class="span4"><img src="/Xtext/images/yourkit_java.png"></img></div>
		    </div>
	      </div>

    
    <footer class="site-footer">
  <div id="extra">
    <div class="inner">
      <div class="container">
        <div class="row">
          <div class="span6">
            <h3 class="footer-links-header">Quick Links</h3>
            <ul class="footer-links clearfix">
              <li><a href="http://www.eclipse.org/legal/privacy.php">Privacy Policy</a></li>
              <li><a href="http://www.eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
              <li><a href="http://www.eclipse.org/legal/copyright.php">Copyright Agent</a></li>
              <li><a href="http://www.eclipse.org/legal/">Legal</a></li>
            </ul>
            <ul class="footer-links clearfix">
              <li><a href="http://www.eclipse.org">Eclipse Home</a></li>
              <li><a href="http://marketplace.eclipse.org/">Market Place</a></li>
              <li><a href="http://live.eclipse.org/">Eclipse Live</a></li>
              <li><a href="http://www.planeteclipse.org/">Eclipse Planet</a></li>
            </ul>
          </div>
          <div class="span6">
            <!-- Social Media Links -->
            <h3 class="footer-links-header"">Social Media</h3>
            <ul class="footer-links clearfix">
              <li>
                <a href="https://twitter.com/xtext"><img src="/Xtext/images/Twitter-bird-darkgray.png" class="img-responsive" style="margin-right: 5px;height: 1em;" alt="Twitter icon">@xtext on Twitter</a>
              </li>
            </ul>
          </div>
        </div>
      </div>
    </div>
  </div>
  <a href="#" class="scrollup fadeOutRight animated" style="display: none;">ScrollUp</a>
  <!-- Le javascript
      ================================================== -->
  <!-- Placed at the end of the document so the pages load faster -->
  
  <script src="/Xtext/js/jquery-1.11.3.min.js"></script>
  <script src="/Xtext/js/bootstrap.min.js"></script>
  <script src="/Xtext/js/jquery.easing.1.3.js" type="text/javascript"></script>
  <script src="/Xtext/js/jquery.prettyPhoto.js" type="text/javascript"></script>
  <script src="/Xtext/js/prettify.js" type="text/javascript"></script>
  <script src="/Xtext/js/lang-xtend.js" type="text/javascript"></script>
  <script src="/Xtext/js/lang-common.js" type="text/javascript"></script>
  <script src="/Xtext/js/custom.js" type="text/javascript"></script>
  <!--script src="https://apis.google.com/js/platform.js" async defer></script-->
  <!--script type="text/javascript">
    var _gaq = _gaq || [];  
      _gaq.push([ '_setAccount', 'UA-2429174-3' ]);
    _gaq.push([ '_trackPageview' ]);
    (function() {
      var ga = document.createElement('script');
      ga.type = 'text/javascript';
      ga.async = true;
      ga.src = ('https:' == document.location.protocol ? 'https://ssl'
          : 'http://www')
          + '.google-analytics.com/ga.js';
      var s = document.getElementsByTagName('script')[0];
      s.parentNode.insertBefore(ga, s);
    })();
  </script-->
  <script src="/Xtext/js/coverflow.min.js" type="text/javascript"></script>
  <script>
      $(function() {
        $('#coverflow').coverflow({
          active : 1,
          visibleAside: 2,
          overlap : 0.5,
          scale : 0.9,
          angle : 20,
          trigger : {
            "itemfocus" : true,
            "swipe" : true,
            "mousewheel" : false
          }
        });
        $('#coverflow :hidden').toggle();
        $(window).resize(function() {
          $('#coverflow').coverflow();
        });
      });

  </script>
</footer>


  </body>

</html>
