[[GEF/GEF4 | GEF4]] is the unified effort to develop a new GEF 4.0 code base as a modernization of the current one (Draw2d, GEF (MVC) 3.x, and Zest 1.x, in the following referred to as ''GEF proper''). Being developed in parallel to maintaining the GEF proper code base, [[GEF/GEF4 | GEF4]] is set up as a provisional component in order to not being bound to the same API compatibility constraints.

−

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).

+

== Current Status ==

−

#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).

+

Development has been started by creating a new double-precision Geometry-API (see Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=355997 355997] for details) based on the Draw2d geometry classes as a nucleus. As this is functionally complete, creation of a new Graphics-API (see Bugzilla [https://bugs.eclipse.org/bugs/show_bug.cgi?id=386029 386029] for details), which abstracts from a concrete windowing toolkit and can be used in SWT and AWT context (we assume that JavaFX might become interesting as an Eclipse RCP rendering possibility on the near term), is the next logical step we have started with. After this, the remaining parts of the Draw2d and Zest2 code base will be migrated, after it GEF (MVC).

−

#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).

+

−

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). Due to the lessons learned in developing an initial GEF 4 Geometry API, and due to the compatibility requirements imposed on a gradation of the new GEF4 API, it was concluded that migrating the existing code base on a module-per-module basis probably is more appropriate than branching the whole code base. The completion of the GEF4 Geometry API will be the first package that is to be completed with respect to this. Based on the Geometry API, other packages may then be investigated, as outlined in the Roadmap below.

+

Additional information about current status and plans can also be found here:

* [[GEF/GEF4/Layouts| GEF4 Layouts]] (planned) - Will provide a data model for layout calculations as well as basic layout algorithms. Will be based on the contents of the <code>org.eclipse.draw2d.graph</code> package as well as on the SWT/JFace independent parts of the <code>org.eclipse.zest.core.layouts</code> plug-in.( [https://bugs.eclipse.org/bugs/show_bug.cgi?id=394219 394219])

+

+

* [[Image:Progress.gif]][[GEF/GEF4/Zest | GEF4 Zest]] - Original Zest2 code base, already adopted to GEF4 namespace and versioning, integrated into GEF4 Git repository and update-site. Not yet adopted/re-modularized to depend on other GEF4 components only (i.e. still dependent on Draw2d 3.x). Will be split/re-modularized, some parts will for instance be moved to [[GEF/GEF4/Layouts | GEF4 Layouts]] components ([https://bugs.eclipse.org/bugs/show_bug.cgi?id=372365 372365])

+

+

== Bugs/Enhancements ==

+

Bugzilla components (for those listed above) are created one by one as parts of the remaining code base are migrated. In addition, all bugs related to [[GEF/GEF4 | GEF4]] are prefixed <code>[GEF4]</code>. [https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&list_id=674650&short_desc=%5BGEF4%5D&short_desc_type=casesubstring&classification=Tools&product=GEF Here] is a list of all bugs currently related to [[GEF/GEF4 | GEF4]].

+

+

== Source Code ==

+

The complete source code of [[GEF/GEF4 | GEF4]] is located in the [http://git.eclipse.org/c/gef/org.eclipse.gef4.git/ GEF4 Git repository]. For further information on how to obtain it and how set-up in order to contribute, please refer to the [[GEF/Contributor Guide | GEF Project Contributor Guide]].

+

+

== Update Sites ==

+

A Tycho-based build infrastructure for the GEF4 provisional component has been configured under [https://hudson.eclipse.org/hudson/job/gef4-master https://hudson.eclipse.org/hudson/job/gef4-master]. 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:

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.

+

+

[[Category:GEF]]

Revision as of 09:00, 8 April 2013

GEF4 is the unified effort to develop a new GEF 4.0 code base as a modernization of the current one (Draw2d, GEF (MVC) 3.x, and Zest 1.x, in the following referred to as GEF proper). Being developed in parallel to maintaining the GEF proper code base, GEF4 is set up as a provisional component in order to not being bound to the same API compatibility constraints.

Contents

Current Status

Development has been started by creating a new double-precision Geometry-API (see Bugzilla 355997 for details) based on the Draw2d geometry classes as a nucleus. As this is functionally complete, creation of a new Graphics-API (see Bugzilla 386029 for details), which abstracts from a concrete windowing toolkit and can be used in SWT and AWT context (we assume that JavaFX might become interesting as an Eclipse RCP rendering possibility on the near term), is the next logical step we have started with. After this, the remaining parts of the Draw2d and Zest2 code base will be migrated, after it GEF (MVC).

Additional information about current status and plans can also be found here:

GEF4 'Glyphs' (planned) - Will provide abstractions for rendering and layouting figures (inspired by concepts from Draw2d, SVG, and JavaFX)

GEF4 Layouts (planned) - Will provide a data model for layout calculations as well as basic layout algorithms. Will be based on the contents of the org.eclipse.draw2d.graph package as well as on the SWT/JFace independent parts of the org.eclipse.zest.core.layouts plug-in.( 394219)

GEF4 Zest - Original Zest2 code base, already adopted to GEF4 namespace and versioning, integrated into GEF4 Git repository and update-site. Not yet adopted/re-modularized to depend on other GEF4 components only (i.e. still dependent on Draw2d 3.x). Will be split/re-modularized, some parts will for instance be moved to GEF4 Layouts components (372365)

Bugs/Enhancements

Bugzilla components (for those listed above) are created one by one as parts of the remaining code base are migrated. In addition, all bugs related to GEF4 are prefixed [GEF4]. Here is a list of all bugs currently related to GEF4.

Update Sites

A Tycho-based build infrastructure for the GEF4 provisional component has been configured under https://hudson.eclipse.org/hudson/job/gef4-master. 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:

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.