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
(108 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 to develop a new GEF 4.x code base as a modernization of the current production components Draw2d/GEF (MVC) 3.x, and Zest 1.x. Being developed in parallel to maintaining the production components, [[GEF/GEF4 | GEF4]] is set up as a set of smaller, more lightweight [[#Components | components]] that currently only provide provisional API.
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).
+
Additional information about our plans and can be inferred from the following talks:
#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).
+
* [http://www.eclipsecon.org/2012/sites/eclipsecon.org.2012/files/GEF_Past_Present_Future_0.pdf Alexander Nyßen (2012): GEF - Past, Present, and Future, EclipseCon NA, Reston (VA), 2012]
#Committers working on the experimental branch will be responsible for ensuring fixes made to GEF HEAD also get applied to the experimental branch.
+
* [http://www.eclipsecon.org/europe2012/sites/eclipsecon.org.europe2012/files/GEF4_Share_And_Enjoy_0.pdf Alexander Nyßen (2012): GEF4 - Share And Enjoy..., EclipseCon Europe, Ludwigsburg, 2012]
#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.
+
* [http://www.eclipsecon.org/2013/sessions/gef4-share-and-enjoy Alexander Nyßen (2013): GEF4 - (Continue to) Share and Enjoy..., EclipseCon NA, Boston (MA), 2013]
#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).
+
* [[media:GEF4_SwtFX.pdf | Alexander Nyßen (2013): GEF4 SwtFX (Lightning Talks), EclipseCon Europe, Ludwigsburg, 2013 ]]
 +
* [[media:GEF4.pdf | Alexander Nyßen (2013): GEF4, RheinJug, Düsseldorf, 2013 ]]
 +
* [https://www.eclipsecon.org/na2014/sites/default/files/slides/GEF4_There_s_really_something_going_on_0.pdf Alexander Nyßen (2014): GEF4 - There's really something going on!, EclipseCon NA, San Francisco (CA), 2014]
 +
* [https://www.eclipsecon.org/europe2014/sites/default/files/slides/GEF4_Our_mission_to_Mars.pdf Alexander Nyßen (2014): GEF4 - Our mission to Mars, EclipseCon Europe, Ludwigsburg, 2014]
  
As migration of GEF to git has not been completed yet (see Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=351232 351232] for details), development has been started by creating a new Geometry API, based on the current Draw2d geometry classes (see Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=355997 355997] for details).  
+
== Current Status ==
 +
Work is currently being spent on developing a JavaFX-based replacement for the core of GEF (GEF4 FX, GEF4 MVC), as well as further migration of the former Zest2 code base (GEF4 Layout, GEF4 Graph, GEF4 DOT, GEF4 Zest). Integration builds are available on a weekly basis (see [[#Developer Resources | Developer Resources]]), and we are intending to publish a first release of the GEF4 components with the Mars simultaneous release.
  
== Source Code ==
+
Please note that (even including the intended Mars release version) '''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 | 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.
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]
+
  
== Builds/Update Sites ==
+
== Components ==
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:
+
[[Image:GEF4_Vision.png|600px]]
  
* [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]
+
* [[Image:Progress.gif]][[GEF/GEF4/Common | <span style="color:#FFFFFF; background:#5B8E92">GEF4 Common</span>]] - Provides basic abstractions and infrastructure used by (potentially) all other GEF4 components.
  
In addition to this, integration, milestones, and release builds are promoted to downloads.eclipse.org and can be found here:
+
* [[Image:Ok_green.gif]][[GEF/GEF4/Geometry | <span style="color:#FFFFFF; background:#268558">GEF4 Geometry (Geometry / Geoemtry.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). Is already quite stable but still requires some performance optimizations. Also, change notification support is still lacking.
  
* [http://download.eclipse.org/tools/gef/gef4/updates/integration http://download.eclipse.org/tools/gef/gef4/updates/integration]
+
* [[Image:Progress.gif]][[GEF/GEF4/FX | <span style="color:#FFFFFF; background:#4C6084">GEF4 FX (FX / FX.UI)</span>]] - Provides support for rendering IGeometry-based JavaFX shapes, visual anchor implementations, and common JavaFX-specific abstractions (FXConnection) to be used by upstream components. Also provides support for embedding SWT Controls via a generic adapter into a JavaFX scene graph using the JavaFX SWT integration. Also enhances the JavaFX-SWT-Integration with forwarding of touch gestures. Will have to be extended with additional anchor implementations, decorations, and custom widgets.
* [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.
+
* [[Image:Progress.gif]][[GEF/GEF4/Graph | <span style="color:#FFFFFF; background:#960607">GEF4 Graph</span>]] Provides a (currently) very simply, UI-independent data-model (Graph, Node, Edge). Will need to be extended to suit as underlying data model for GEF4 Layout (sub-graphs).
  
== Components / Roadmap ==
+
* [[Image:Progress.gif]][[GEF/GEF4/Layout | <span style="color:#FFFFFF; background:#7C866A">GEF4 Layout</span>]] - Provides layout algorithm implementations as well as a data-model facade to feed these algorithms. Will have to be harmonized with GEF4 Graph, so that GEF4 graph models can be used as underlying data-model.
* Juno release:
+
** [[GEF/GEF4/Geometry | GEF4 Geometry]]  
+
  
* Juno + 1 release (migrating parts of existing Draw2d and GEF MVC to GEF4 Geometry, including an initial refactoring):
+
* [[Image:Progress.gif]][[GEF/GEF4/MVC | <span style="color:#FFFFFF; background:#05124E">GEF4 MVC (MVC / MVC.UI / MVC.FX / MVC.FX.UI)</span>]]  - 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.
** GEF4 Draw2d Core (Graphics, Canvas, Figure, Bounds, etc.)
+
 
** GEF4 Draw2d Shapes
+
* [[Image:Progress.gif]][[GEF/GEF4/Zest | <span style="color:#FFFFFF; background:#206FAD">GEF4 Zest (Zest.FX / Zest.FX.UI)</span>]] - Will provide graph-based visualization based on JavaFX. So far transferred from original Zest2 code base, adopted to GEF4 namespace and versioning, and integrated into GEF4 Git repository and update-site. Not yet fully adopted/re-modularized to depend on other GEF4 components only (i.e. still dependent on Draw2d 3.x). However, the GEF4 Layout, GEF4 Graph, GEF4 DOT, and GEF4 Cloudio components have already been factored out ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=372365 372365]).
** GEF4 MVC (EditPartViewer, EditParts, EditPolicies, EditDomain, CommandStack, etc.)
+
 
** GEF4 Editor (EditorPart, UI integration)
+
* [[Image:Progress.gif]][[GEF/GEF4/DOT | <span style="color:#FFFFFF; background:#561D8E">GEF4 DOT (DOT / DOT.UI)</span>]] Provides GraphViz DOT-Editor (Xtext) and import/export to GEF4 Graph. Will have to be extended to e.g. support sub-graphs.
** GEF4 Examples (only logic example)
+
 
 +
* [[Image:Ok_green.gif]][[GEF/GEF4/Cloudio | <span style="color:#FFFFFF; background:#8A3572">GEF4 Cloudio</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.
 +
 
 +
== Developer Resources ==
 +
 
 +
All relevant information about how to obtain our source code, where to find our Hudson build jobs, update sites, 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 | Contributor Guide]] that describes how to setup a workspace, provide a patch, execute a headless Tycho-build, and more.
 +
 
 +
[[Category:GEF]]

Revision as of 06:19, 29 October 2014


GEF4 is the unified effort to develop a new GEF 4.x code base as a modernization of the current production components Draw2d/GEF (MVC) 3.x, and Zest 1.x. Being developed in parallel to maintaining the production components, GEF4 is set up as a set of smaller, more lightweight components that currently only provide provisional API.

Additional information about our plans and can be inferred from the following talks:

Current Status

Work is currently being spent on developing a JavaFX-based replacement for the core of GEF (GEF4 FX, GEF4 MVC), as well as further migration of the former Zest2 code base (GEF4 Layout, GEF4 Graph, GEF4 DOT, GEF4 Zest). Integration builds are available on a weekly basis (see Developer Resources), and we are intending to publish a first release of the GEF4 components with the Mars simultaneous release.

Please note that (even including the intended Mars release version) 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 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

GEF4-Components.png

  • Progress.gif GEF4 Common - Provides basic abstractions and infrastructure used by (potentially) all other GEF4 components.
  • Ok green.gif GEF4 Geometry (Geometry / Geoemtry.Convert.SWT / Geometry.Convert.FX) - 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). Is already quite stable but still requires some performance optimizations. Also, change notification support is still lacking.
  • Progress.gif GEF4 FX (FX / FX.UI) - Provides support for rendering IGeometry-based JavaFX shapes, visual anchor implementations, and common JavaFX-specific abstractions (FXConnection) to be used by upstream components. Also provides support for embedding SWT Controls via a generic adapter into a JavaFX scene graph using the JavaFX SWT integration. Also enhances the JavaFX-SWT-Integration with forwarding of touch gestures. Will have to be extended with additional anchor implementations, decorations, and custom widgets.
  • Progress.gif GEF4 Graph Provides a (currently) very simply, UI-independent data-model (Graph, Node, Edge). Will need to be extended to suit as underlying data model for GEF4 Layout (sub-graphs).
  • Progress.gif GEF4 Layout - Provides layout algorithm implementations as well as a data-model facade to feed these algorithms. Will have to be harmonized with GEF4 Graph, so that GEF4 graph models can be used as underlying data-model.
  • Progress.gif GEF4 MVC (MVC / MVC.UI / MVC.FX / MVC.FX.UI) - 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.
  • Progress.gif GEF4 Zest (Zest.FX / Zest.FX.UI) - Will provide graph-based visualization based on JavaFX. So far transferred from original Zest2 code base, adopted to GEF4 namespace and versioning, and integrated into GEF4 Git repository and update-site. Not yet fully adopted/re-modularized to depend on other GEF4 components only (i.e. still dependent on Draw2d 3.x). However, the GEF4 Layout, GEF4 Graph, GEF4 DOT, and GEF4 Cloudio components have already been factored out (372365).
  • Progress.gif GEF4 DOT (DOT / DOT.UI) Provides GraphViz DOT-Editor (Xtext) and import/export to GEF4 Graph. Will have to be extended to e.g. support sub-graphs.
  • Ok green.gif GEF4 Cloudio - 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.

Developer Resources

All relevant information about how to obtain our source code, where to find our Hudson build jobs, update sites, 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 Contributor Guide that describes how to setup a workspace, provide a patch, execute a headless Tycho-build, and more.

Back to the top