################################################################################
# Copyright (c) 2007, 2016 Eclipse contributors 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://www.eclipse.org/legal/epl-v10.html
#
# Contributors:
#    Innoopract Informationssysteme GmbH - initial API and implementation
#    EclipseSource - ongoing development
################################################################################

description = \
This package contains a collection of Eclipse DSL Project components, including Xtend, Xtext, Xcore, EMF and EMFT elements. It includes a complete SDK, developer tools and source code. Note that the DSL package includes some incubating components, as indicated by feature numbers less than 1.0.0 on the feature list.

copyright = \
Copyright (c) 2007, 2016 Eclipse contributors and others.\n\
All rights reserved. This program and the accompanying materials\n\
are made available under the terms of the Eclipse Public License v1.0\n\
which accompanies this distribution, and is available at\n\
http://www.eclipse.org/legal/epl-v10.html\n\
\n\
Contributors:\n\
   Innoopract Informationssysteme GmbH - initial API and implementation\n\
   EclipseSource - ongoing development

