Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "GEF/GEF4"

< GEF
(169 intermediate revisions by 2 users not shown)
Line 1: Line 1:
This page is the entry page for all information related to the GEF4 provisional component.
+
__NOTOC__
  
== Introduction ==
+
[[GEF/GEF4 | GEF4]] is the unified effort of the [http://www.eclipse.org/gef Graphical Editing Framework (GEF)] project team to develop a new code base as a replacement for the current production components [https://www.eclipse.org/gef/draw2d/ Draw2d 3.x], [https://www.eclipse.org/gef/gef_mvc/index.php GEF (MVC) 3.x], and [https://www.eclipse.org/gef/zest/index.php Zest 1.x] (which are only maintained, but not actively developed further).
As agreed on in Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=347636 347636], development of a new GEF 4.0 API will be started in parallel to the current GEF 3.x development branch under the following terms:
+
  
#After the Indigo release has been completed, a GEF experimental branch is created by forking the GEF 3.7 code-base into a Git repository (possibly located next to Zest 2.0, so that all experimental GEF components can be found in one place).
+
Being developed in parallel to maintaining the production components, [[GEF/GEF4 | GEF4]] is set up in terms of smaller, more lightweight [[#Components / Reference Documentation | components]], uses JavaFX instead of SWT as rendering technology, and allows to build up graphical applications for Eclipse (using a JavaFX-SWT-integration) as well as standalone.  
#The experimental branch created thereby will live parallel to the GEF HEAD branch, considering all its API as provisional unless explicitly graduated. It will not interfere with GEF HEAD, i.e. it will have its own build process and separate wiki pages for documentation of the ongoing work (similar to Zest 2.0).
+
#Committers working on the experimental branch will be responsible for ensuring fixes made to GEF HEAD also get applied to the experimental branch.
+
#Graduation of the experimental branch back into GEF HEAD will have to imply that a proper compatibility layer is in place so all GEF 3.x clients run in a 100% binary compatible method. It will furthermore have to be acknowledged by all GEF committers.
+
#Work will start without an incubator project at first, granting commit rights on the Git repository to all current GEF committers. The question of introducing an incubator project (located under GEF) will be deferred until a) community wants to actively get involved or b) Juno has been released (whatever comes first).
+
  
== Current Status & Plans ==
+
== Current Status ==
Development on the GEF4 provisional component has been started by creating a new double-precsision Geometry API (see Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=355997 355997] for details). Plans are to provide an initial version of the [[GEF/GEF4/Geometry | GEF4 Geometry]] component before migrating the existing Draw2d and GEF (MVC) code. It is intended to provide an initial version of the [[GEF/GEF4/Geometry | GEF4 Geometry]] with the Juno release and to port (the essential parts of) Draw2d and GEF MVC to it afterwards (i.e. the 3.8 Draw2d and GEF MVC code base will have to be copied and renamed to the GEF4 namespace; due to the compatibility rules that have been agreed on w.r.t. GEF proper).
+
A first snapshot release (0.1.0) and a bugfix release (0.2.0), including incompatible changes, have been published as part of the [http://projects.eclipse.org/projects/tools.gef/releases/3.10.0-mars GEF 3.10.0 (Mars)] and [https://projects.eclipse.org/projects/tools.gef/releases/3.10.1-mars.1 GEF 3.10.1 (Mars.1)] releases. Information about important changes from 0.1.0 to 0.2.0 can be found in [[GEF/New_and_Noteworthy/3.10.1 | New and Noteworthy in 3.10.1]]. An overview of all significant features added during the Mars release train can in addition be found in [[GEF/New_and_Noteworthy/3.10| New and Noteworthy in 3.10]]. Information on earlier achievements and plans can be inferred from the talks listed under [[#Further Reading|Further Reading]].
  
== Source Code ==
+
Currently, we are working on the [https://projects.eclipse.org/projects/tools.gef/releases/3.11.04.0.0-neon 3.11.0/4.0.0 (Neon)] release, which will either contain a 0.3.0 or a 1.0.0 release of the [[GEF/GEF4|GEF4]] [[#Components / Reference Documentation|components]]. In either case, the release will not be compatible to the Mars.1 (0.2.0) release and will indeed include major refactorings. Please refer to [[GEF/New_and_Noteworthy/3.11| New and Noteworthy in 3.11]] to keep updated about the most important changes.
All source code of the GEF4 provisional component is located in the [http://git.eclipse.org/c/gef/org.eclipse.gef4.git/ GEF4 Git repository]. Up to now it includes the [[GEF/GEF4/Geometry | GEF4 Geometry]] in its current state as well as release engineering infrastructure.
+
  
== Builds/Update Sites ==
+
Please note that '''all [[GEF/GEF4|GEF4]] API is still provisional''', i.e. there is no released API yet. Therefore, all API-packages are exported with the x-internal directive. To differentiate them from non-API packages, all non-API packages are explicitly named as 'internal' and are either not exported by the bundle manifest, or only via an x-friends directive (if they are used in other test bundles, etc.). You may want to consult the [[GEF/Contributor_Guide |GEF Contributor Guide]] for details on how to set up your IDE to get rid of any restricted access warnings that are caused by this policy.
A Tycho-based build infrastructure for the GEF4 component has been configured under [https://hudson.eclipse.org/hudson/job/gef4-nightly-tycho https://hudson.eclipse.org/hudson/job/gef4-nightly-tycho]. The build job is triggered hourly in case of changes to the source code repository and further once per day. It produces an update-site, which does not get promoted to downloads.eclipse.org, but can directly be consumed from:
+
  
* [https://hudson.eclipse.org/hudson/job/gef4-nightly-tycho/lastSuccessfulBuild/artifact/update-site https://hudson.eclipse.org/hudson/job/gef4-nightly-tycho/lastSuccessfulBuild/artifact/update-site]
+
== Components / Reference Documentation ==
 +
[[GEF/GEF4|GEF4]] is internally constituted of the following nine components (with their respective sub-modules). The reference documentation for each component may be accessed via the component links. You may also consult the [[GEF/GEF4#Further Reading |Further Reading]]-section for additional information.
  
In addition to this, integration, milestones, and release builds are promoted to downloads.eclipse.org and can be found here:
+
[[Image:GEF4-Components.png|800px]]
  
* [http://download.eclipse.org/tools/gef/gef4/updates/integration http://download.eclipse.org/tools/gef/gef4/updates/integration]
+
* [[GEF/GEF4/Common | <span style="color:#5B8E92">GEF4 Common (Common)</span>]] - Provides basic abstractions and infrastructure used by (potentially) all other [[GEF/GEF4|GEF4]] components, including an enhanced [http://nyssen.blogspot.de/2014/11/iadaptable-gef4s-interpretation-of.html adaptable pattern] and notification support.
* [http://download.eclipse.org/tools/gef/gef4/updates/milestones http://download.eclipse.org/tools/gef/gef4/updates/milestones]
+
* [http://download.eclipse.org/tools/gef/gef4/updates/releases http://download.eclipse.org/tools/gef/gef4/updates/releases]
+
  
Note that while integration builds are promoted automatically once per week (every friday), milestone and release builds are published only manually on the respective occasions (not yet). Further note that these update sites are merged (so old builds are preserved), while the nightly update site gets replaced on each build.
+
* [[GEF/GEF4/Geometry | <span style="color:#268558">GEF4 Geometry (Geometry / Geometry.Convert.SWT / Geometry.Convert.FX)</span>]] - Provides different abstractions (Euclidean, Projective, Planar) for 2D geometric calculations, and conversions of planar geometries (curves, shapes, poly shapes) to/from respective SWT, AWT, and JavaFX equivalents (as well as conversions between SWT and AWT geometries).
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/Geometry/Examples#Examples (undeployed)|<span style="color:#268558">Geometry Examples</span>]].
 +
 
 +
* [[GEF/GEF4/FX | <span style="color:#4C6084">GEF4 FX (FX / FX.SWT / FX.JFace)</span>]] - Provides support for rendering [[GEF/GEF4/Geometry | GEF4 Geometry]]-based shapes, as well as abstractions that are needed in the context of graphical editors and views, i.e. visual anchor implementations and a connection abstraction. Also enhances the JavaFX-SWT-Integration with forwarding of touch gestures and provides proper support for embedding SWT Controls via a generic adapter into a JavaFX scene graph (within the context of the JavaFX SWT integration).
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/FX/Examples#Examples (undeployed)|<span style="color:#4C6084">FX Examples</span>]] and [[GEF/GEF4/FX/Examples#Examples.SWT (undeployed)|<span style="color:#4C6084">FX SWT Examples</span>]].
 +
 
 +
* [[GEF/GEF4/Graph | <span style="color:#960607">GEF4 Graph (Graph)</span>]] - Provides a simply, UI-independent data-model (Graph, Node, Edge) for representing directed graphs. Is used as data model by [[GEF/GEF4/DOT | GEF4 DOT]] and underlying visualization-model for [[GEF/GEF4/Zest | GEF4 Zest]].
 +
 
 +
* [[GEF/GEF4/Layout | <span style="color:#7C866A">GEF4 Layout (Layout)</span>]] - Provides layout algorithm implementations as well as a model facade to adapt layout model data for these algorithms.
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/Layout/Examples|<span style="color:#7C866A">Layout Examples</span>]].
 +
 
 +
* [[GEF/GEF4/MVC | <span style="color:#05124E">GEF4 MVC (MVC / MVC.UI / MVC.FX / MVC.FX.UI)</span>]] - Provides the core model-view-controller framework to build up graphical editors and views. Provides an UI toolkit independent and a JavaFX specific layer, as well as Eclipse-UI integration for both. Can be used to build standalone and Eclipse-integrated editors and views.
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by a bundled [[GEF/GEF4/MVC/Examples#Logo Example (Standalone, Eclipse UI, Web)|<span style="color:#05124E">MVC Logo Example</span>]], which is available as a standalone application, an Eclipse Workbench UI integrated view, as well as a JNLP-based web application.
 +
 
 +
* [[GEF/GEF4/Zest | <span style="color:#206FAD">GEF4 Zest (Zest.FX / Zest.FX.JFace / Zest.FX.UI)</span>]] - Provides support for visualization of [[GEF/GEF4/Graph | GEF4 Graph]]-based models, integrating automated layout based on [[GEF/GEF4/Layout | GEF4 Layout]]. Internally built on [[GEF/GEF4/FX|GEF4 FX]] and [[GEF/GEF4/MVC|GEF4 MVC]].
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by a bundled [[GEF/GEF4/Zest/Examples#Graph Example (Standalone, Eclipse UI)|<span style="color:#206FAD">Zest Graph Example</span>]], which is available as a standalone application and an Eclipse Workbench UI integrated view, as well as undeployed [[GEF/GEF4/Zest/Examples#Examples (undeployed)|<span style="color:#206FAD">Zest Examples</span>]] and [[GEF/GEF4/Zest/Examples#Examples.JFace (undeployed)|<span style="color:#206FAD">Zest JFace Examples</span>]].
 +
 
 +
* [[GEF/GEF4/DOT | <span style="color:#561D8E">GEF4 DOT (DOT / DOT.UI)</span>]] - Provides a basic [http://www.graphviz.org GraphViz] [http://www.graphviz.org/content/dot-language DOT]-Editor (Xtext) as well as a [[GEF/GEF4/Zest | GEF4 Zest]]-based [http://www.graphviz.org/content/dot-language DOT]-visualization.
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/DOT/Examples#Examples (undeployed)|<span style="color:#561D8E">DOT Examples</span>]].
 +
 
 +
* [[GEF/GEF4/Cloudio | <span style="color:#8A3572">GEF4 Cloudio (Coudio.UI)</span>]] - Provides support for visualizing tag clouds. Is based on SWT/JFace, integrated in the Eclipse UI, and will (at least for now) not be ported to JavaFX.
 +
: [[File:Idea.png|12px]] Usage of API is demonstrated by undeployed [[GEF/GEF4/Cloudio/Examples#Examples.UI (undeployed)|<span style="color:#8A3572">Cloudio UI Examples</span>]].
 +
 
 +
== Developer Resources ==
 +
 
 +
All relevant information about how to obtain our source code, where to find our Hudson build jobs, update sites (CI, milestones, releases), mailing lists, or our forum, etc. can all be found in the respective sections of the [https://projects.eclipse.org/projects/tools.gef GEF project dashboard]. In addition to this, there is a dedicated [[GEF/Contributor Guide |GEF Contributor Guide]] that describes how to setup a workspace, provide a patch, execute a headless Tycho-build, and more.
 +
 
 +
The reference documentation for each [[GEF/GEF4|GEF4]] component is referenced from within the [[#Components / Reference Documentation | components]] section. Each component documentation includes references to examples, where applicable.
 +
 
 +
== Further Reading ==
 +
 
 +
Further information about the history and current plans, as well as on technical details can be inferred from the following presentations/articles/posts:
 +
*[http://nyssen.blogspot.de/2015/06/gef4-mission-to-mars-accomplished.html Alexander Nyßen (2015): GEF4 - Mission to Mars Accomplished!, ANy's Argument (Blog)] 
 +
*[http://nyssen.blogspot.de/2014/11/iadaptable-gef4s-interpretation-of.html Alexander Nyßen (2014): IAdaptable - GEF4's Interpretation of a Classic, ANy's Argument (Blog)]
 +
* [http://de.slideshare.net/AlexanderNyssen/gef4-our-mission-to-mars Alexander Nyßen (2014): GEF4 - Our mission to Mars, EclipseCon Europe, Ludwigsburg, 2014]
 +
* [http://www.slideshare.net/AlexanderNyssen/gef4-there-there-sreallysomethinggoingon Alexander Nyßen (2014): GEF4 - There's really something going on!, EclipseCon NA, San Francisco (CA), 2014]
 +
* [[media:GEF4.pdf | Alexander Nyßen (2013): GEF4, RheinJug, Düsseldorf, 2013 ]], [https://lecture2go.uni-hamburg.de/veranstaltungen/-/v/15671 Video (German)]
 +
* [[media:GEF4_SwtFX.pdf | Alexander Nyßen (2013): GEF4 SwtFX (Lightning Talk), EclipseCon Europe, Ludwigsburg, 2013 ]]
 +
* [http://www.slideshare.net/AlexanderNyssen/gef4-continue-to-share-and-enjoy Alexander Nyßen (2013): GEF4 - (Continue to) Share and Enjoy..., EclipseCon NA, Boston (MA), 2013]
 +
* [http://www.slideshare.net/AlexanderNyssen/gef4-share-enjoy Alexander Nyßen (2012): GEF4 - Share And Enjoy..., EclipseCon Europe, Ludwigsburg, 2012]
 +
* [http://www.slideshare.net/AlexanderNyssen/gef-past-present-and-future Alexander Nyßen (2012): GEF - Past, Present, and Future, EclipseCon NA, Reston (VA), 2012]
 +
 
 +
[[Category:GEF]]

Revision as of 03:16, 23 September 2015


GEF4 is the unified effort of the Graphical Editing Framework (GEF) project team to develop a new code base as a replacement for the current production components Draw2d 3.x, GEF (MVC) 3.x, and Zest 1.x (which are only maintained, but not actively developed further).

Being developed in parallel to maintaining the production components, GEF4 is set up in terms of smaller, more lightweight components, uses JavaFX instead of SWT as rendering technology, and allows to build up graphical applications for Eclipse (using a JavaFX-SWT-integration) as well as standalone.

Current Status

A first snapshot release (0.1.0) and a bugfix release (0.2.0), including incompatible changes, have been published as part of the GEF 3.10.0 (Mars) and GEF 3.10.1 (Mars.1) releases. Information about important changes from 0.1.0 to 0.2.0 can be found in New and Noteworthy in 3.10.1. An overview of all significant features added during the Mars release train can in addition be found in New and Noteworthy in 3.10. Information on earlier achievements and plans can be inferred from the talks listed under Further Reading.

Currently, we are working on the 3.11.0/4.0.0 (Neon) release, which will either contain a 0.3.0 or a 1.0.0 release of the GEF4 components. In either case, the release will not be compatible to the Mars.1 (0.2.0) release and will indeed include major refactorings. Please refer to New and Noteworthy in 3.11 to keep updated about the most important changes.

Please note that all GEF4 API is still provisional, i.e. there is no released API yet. Therefore, all API-packages are exported with the x-internal directive. To differentiate them from non-API packages, all non-API packages are explicitly named as 'internal' and are either not exported by the bundle manifest, or only via an x-friends directive (if they are used in other test bundles, etc.). You may want to consult the GEF Contributor Guide for details on how to set up your IDE to get rid of any restricted access warnings that are caused by this policy.

Components / Reference Documentation

GEF4 is internally constituted of the following nine components (with their respective sub-modules). The reference documentation for each component may be accessed via the component links. You may also consult the Further Reading-section for additional information.

GEF4-Components.png

Idea.png Usage of API is demonstrated by undeployed Geometry Examples.
  • GEF4 FX (FX / FX.SWT / FX.JFace) - Provides support for rendering GEF4 Geometry-based shapes, as well as abstractions that are needed in the context of graphical editors and views, i.e. visual anchor implementations and a connection abstraction. Also enhances the JavaFX-SWT-Integration with forwarding of touch gestures and provides proper support for embedding SWT Controls via a generic adapter into a JavaFX scene graph (within the context of the JavaFX SWT integration).
Idea.png Usage of API is demonstrated by undeployed FX Examples and FX SWT Examples.
  • GEF4 Graph (Graph) - Provides a simply, UI-independent data-model (Graph, Node, Edge) for representing directed graphs. Is used as data model by GEF4 DOT and underlying visualization-model for GEF4 Zest.
  • GEF4 Layout (Layout) - Provides layout algorithm implementations as well as a model facade to adapt layout model data for these algorithms.
Idea.png Usage of API is demonstrated by undeployed Layout Examples.
  • GEF4 MVC (MVC / MVC.UI / MVC.FX / MVC.FX.UI) - Provides the core model-view-controller framework to build up graphical editors and views. Provides an UI toolkit independent and a JavaFX specific layer, as well as Eclipse-UI integration for both. Can be used to build standalone and Eclipse-integrated editors and views.
Idea.png Usage of API is demonstrated by a bundled MVC Logo Example, which is available as a standalone application, an Eclipse Workbench UI integrated view, as well as a JNLP-based web application.
Idea.png Usage of API is demonstrated by a bundled Zest Graph Example, which is available as a standalone application and an Eclipse Workbench UI integrated view, as well as undeployed Zest Examples and Zest JFace Examples.
Idea.png Usage of API is demonstrated by undeployed DOT Examples.
  • GEF4 Cloudio (Coudio.UI) - Provides support for visualizing tag clouds. Is based on SWT/JFace, integrated in the Eclipse UI, and will (at least for now) not be ported to JavaFX.
Idea.png Usage of API is demonstrated by undeployed Cloudio UI Examples.

Developer Resources

All relevant information about how to obtain our source code, where to find our Hudson build jobs, update sites (CI, milestones, releases), mailing lists, or our forum, etc. can all be found in the respective sections of the GEF project dashboard. In addition to this, there is a dedicated GEF Contributor Guide that describes how to setup a workspace, provide a patch, execute a headless Tycho-build, and more.

The reference documentation for each GEF4 component is referenced from within the components section. Each component documentation includes references to examples, where applicable.

Further Reading

Further information about the history and current plans, as well as on technical details can be inferred from the following presentations/articles/posts:

Back to the top