GMF Project Plan
Graphical Modeling Framework 2.0 Plan (Draft)
Last revised 0930 EST August 05, 2006
This document lays out the feature and API set for the second release of the Eclipse Graphical Modeling Framework Project, version 2.0.0.
This project plan and associated requirements are the result of an open and transparent process and includes input from those who have expressed an interest in the project. That said, the success of the project and its deliverables is soley dependent upon the contributions from its community membership. If you are interested in contributing to the project in the delivery of its stated goals, you are more than welcome!
The first part of the plan deals with the important matters of release deliverables, release milestones, target operating environments, compatibilities and dependencies. These are all things that need to be clear for any release, even if no features were to change.
The remainder of the plan consists of plan items for the project. Each plan item covers a feature or API that is to be added, or some aspect that is to be improved. Each plan item has its own entry in the Eclipse bugzilla database, with a title and a concise summary (usually a single paragraph) that explains the work item at a suitably high enough level so that everyone can readily understand what the work item is without having to understand the nitty-gritty detail.
Not all plan items represent the same amount of work; some may be quite large, others, quite small. Some plan items may involve work that is localized to a single subsystem; others may involve coordinated changes across several projects within the same top-level project; and others may involve coordination with other top-level projects. Although some plan items are for work that is more pressing that others, the plan items appear in no particular order.
With the previous release as the starting point, this is the plan for how we will enhance and improve it. Fixing bugs, improving test coverage, documentation, examples, performance tuning, usability, etc. are considered routine ongoing maintenance activities and are not included in this plan unless they would also involve a significant change to the API or feature set, or involve a significant amount of work. The intent of the plan is to account for all interesting feature work.
The release deliverables have the same form as is found in most Eclipse projects, namely:
- Graphical Modeling Framework source code release, available as versions tagged "R2_0" in the project's CVS repository.
- Graphical Modeling Framework SDK (includes runtime and tooling components, with sources, examples, and documentation) (downloadable and update site).
- Graphical Modeling Framework runtime binary distribution (downloadable and update site).
- Graphical Modeling Framework tests (downloadable and update site).
Release milestone occurring at roughly 6 week intervals and follow the Platform milestone releases by approximately 2 weeks; that is, until the final 3.3 release of the Platform, upon which GMF and other projects will release simultaneously. As GMF is dependent upon the EMF, GEF, and other projects, which are scheduled to release milestones within 1 week of Platform milestones, GMF will deliver its milestones within the following week. It is anticipated that GMF will synchronize its release milestones with the Europa release schedule. The milestones are:
- Friday Mmm XX, 200X - Milestone 1 (2.0 M1) - stable build, tagged M1_20 in CVS
- Friday Mmm XX, 200X - Milestone 1 (2.0 M2) - stable build, tagged M2_20 in CVS
- Friday Mmm XX, 200X - Milestone 1 (2.0 M3) - stable build, tagged M3_20 in CVS
- Friday Mmm XX, 200X - Milestone 1 (2.0 M4) - stable build, tagged M4_20 in CVS
- Friday Mmm XX, 200X - Milestone 1 (2.0 M5) - stable build, tagged M5_20 in CVS (API freeze)
- Friday Mmm XX, 200X - Milestone 1 (2.0 M6/RC0) - stable build, tagged M6_20 in CVS
Lock down and testing then begins with M6, and progress through a series of test-fix passes against candidates releases. Release candidate builds are planned as follows (M6 is release candidate 0):
- Friday Mmm XX, 200X - Release Candidate 1 - (2.0 RC1)
- Friday Mmm XX, 200X - Release Candidate 2 - (2.0 RC2)
- Friday Mmm XX, 200X - Release Candidate 3 - (2.0 RC3)
- Friday Mmm XX, 200X - Release Candidate 4 - (2.0 RC4)
- Friday Mmm XX, 200X - Release Candidate 5 - (2.0 RC5)
- Friday Mmm XX, 200X - Release Candidate 6 - (2.0 RC6)
As these milestones are dependent upon the Platform, they may be altered in order to conform to the published plan. All release deliverables will be available for download as soon as the release has been tested and validated in the target operating configurations listed below.
GMF 1.0.1 and 1.0.2 maintenance releases are anticipated, to align with the release of the Platform 3.2.1 (Q306) and 3.2.2 (Q107) releases, respectively.
Target Operating Environments
In order to remain current, each Eclipse release targets reasonably current versions of the underlying operating environments.
The Eclipse Graphical Modeling Project depends upon on the Platform and other projects, which are mostly "pure" Java. The 3.3 release of the Eclipse Platform Project is written and compiled against version 1.4 of the Java Platform APIs, and targeted to run on version 1.4 of the Java Runtime Environment, Standard Edition. The Eclipse Modeling Framework (EMF) project has declared to support Java 5 language features in its next release (3.3.0), and will therefore require a Java 5 runtime environment. GMF will target the same Java version as EMF.
Eclipse Platform SDK 3.3 will be tested and validated on a number of reference platforms. The Eclipse Graphical Modeling Project will be tested and validated against a subset of those listed for the platform. Those available will be presented on the project download site.
The Eclipse Platform is designed as the basis for internationalized products. The user interface elements provided by the Eclipse SDK components, including dialogs and error messages, are externalized. The English strings are provided as the default resource bundles. As a result, the Graphical Modeling Framework project will provide English strings in its default bundles and be localized to a subset of those locales offered by the Platform. This plan will be updated to indicate which locales will be provided and the timeframe for availability.
Compatibility and Dependencies
Compatibility of Release 2.0
The Graphical Modeling Framework Project will be developed in parallel, and released simultaneously, with the following projects. As stated above, each milestone release of the Graphical Modeling Framework Project will be compatible with the corresponding milestones for each of these projects, and delivered the appropriate offset.
- Eclipse Platform SDK version 3.3
- Eclipse Modeling Framework (EMF) version 3.0
- Graphical Editing Framework (GEF) version 3.3
Therefore, the Graphical Modeling Framework initial release will be compatible with these versions and will publish binary and source compatibilities with migration guides on subsequent releases.
It is a goal of the Graphical Modeling Framework Project to avoid provisional APIs. APIs published for the 2.0 release will be carefully reviewed prior to release, making use of "internal" packages for unsupported and variable implementation classes. Client plug-ins that directly depend on anything other than what is specified in the published API are inherently unsupportable and receive no guarantees about future compatibility. Refer to How to Use the Eclipse API for information about how to write compliant plug-ins.
Compatibility of Release 2.0.0 with 1.0.0
GMF 2.0.0 will be compatible with GMF 1.0.0, except in those areas noted in the GMF 2.0.0 Migration Guide.
====API Contract Compatibility:==== GMF 2.0.0 will be upwards contract-compatible with GMF 1.0.0 except in those areas noted in the GMF 2.0.0 Migration Guide. Programs that use affected APIs and extension points will need to be ported to GMF 2.0.0 APIs. Downward contract compatibility is not supported. There is no guarantee that compliance with GMF 2.0.0 APIs would ensure compliance with GMF 1.x APIs. Refer to Evolving Java-based APIs for a discussion of the kinds of API changes that maintain contract compatibility.
====Binary (plug-in) Compatibility:==== GMF 2.0.0 will be upwards binary-compatible with GMF 1.0.0 except in those areas noted in the GMF 2.0.0 Migration Guide. Downward plug-in compatibility is not supported: plug-ins compiled against GMF will likely be unusable with GMF 1.x. Refer to Evolving Java-based APIs for a discussion of the kinds of API changes that maintain binary compatibility.
====Source Compatibility:==== Source files written to use GMF 1.0.0 APIs will usually compile and run successfully against GMF 2.0.0 APIs, although this cannot be guaranteed. Because GMF 2.0.0 will exploit new Java language constructs, there is an increased chance of source incompatibilities compared to previous GMF releases. In some cases, it may be necessary to make minor changes to the source code to disambiguate things like imports or overloaded method invocations. Downward source compatibility is not supported. If source files use new APIs, they will not be usable with earlier versions.
====Workspace Compatibility:==== GMF 2.0.0 will be upwards workspace-compatible with GMF 1.0.0 unless noted. This means that workspaces and projects created by an Eclipse with GMF 1.0.0 installed can be successfully opened by an Eclipse with GMF 2.0.0 installed. This includes both hidden metadata, which is localized to a particular workspace, as well as metadata files found within a workspace project, which may propagate between workspaces via file copying or team repositories. User interface session state may be discarded when a workspace is upgraded. Downward workspace compatibility is not supported. Metadata files created (or overwritten) by the newer version will generally be unusable with older versions.
====Non-compliant usage of API's:==== All non-API methods and classes, and certainly everything in a package with "internal" in its name, are considered implementation details which may vary between operating environment and are subject to change without notice. Client plug-ins that directly depend on anything other than what is specified in the API are inherently unsupportable and receive no guarantees about compatibility within a single release much less with an earlier releases. Refer to How to Use the Eclipse API or Provisional API Guidelines for information about how to write compliant plug-ins.
GMF 2.0.0 Migration Guide
At this time, there are no known issues migrating from 1.0.0 to 2.0.0. Should this change, this document will be revised, or a secondary document will be added documenting any known issues.
Features and Capabilities
A list of project requirements and agreed upon implementation timeframes is found in this document. For the milestones listed in this document, a set of overall themes is used to indicate what major set of functionalities is to be concentrated on for each. These themes are presented below, while the requirements document and associated Bugzilla entries are left to those wanting more detailed information on each.
A number of items related to the GMF API are found in this section.
- 109871 Integrate sort/filter ListCompartmentEditPart capability with CanonicalEditPolicy
- 110332 Provide control over DiagramEditPart creation from Diagram.
- 111920 Canonical Framework should support listening on connector ends for reorientation.
- 112823 Adopt Eclipse 3.2 Action Contribution Improvements
- 113965 User-defined properties for runtime diagram (notation) model elements
- 113966 Custom (specific) runtime diagram model
- 114201 [req] Utilize extensibility options in code generation
- 115145 Global Action Service needs to be revisited.
- 117778 IFileChangeManager does not support filtering of Resource Change Events based on Content Type
- 121755 Need to add support for DropRequest in edit helpers framework
- 125899 Provide API to obtain all sub-ElementTypes of a given EClass
- 126147 IconOperation is in internal package.
- 129158 Ability to bind layout type to diagram type at post-design time
- 129245 Add an extension to IDocumentProvider to support print
- 131691 Rename CompartmentEditPart to InnerEditPart
- 133505 Refactor CanonicalConnectionEditPolicy to update connections without domain element associated
- 134707 Make WrapTextCellEditor(and TextCellEditorEx) public
- 135545 The pathmaps preference page allows me to override path map variables contributed through the extension point
- 138560 Make DirectEditKeyHandler public
- 139823 To prevent unnecessary plugin loading, org.eclipse.gmf.runtime.common.core.util.Log should have static methods that do not require the Plugin parameter
- 140194 <paletteProviders> extension pt. does not resolve <content> correctly
- 143572 Out of box support for diagram without resource
A number of usability items related to runtime and tooling components of GMF are found in this section.
- 109018 Need to document minimal GMF Runtime client
- 110237 Support multiple element creation from the palette
- 110338 Diagram links support for diagram based on a resource
- 110798 Ability to configure sides of the shape that the connector handles can appear on
- 110971 Compartment Scrolling Issues
- 111221 Items from Default ContributionItemProvider do not scale
- 111785 Show inner element in their own compartments
- 111892 Group/Ungroup support
- 111895 Paste of images / text into diagram from outside applications
- 111899 Auto-scrolling improvements
- 111901 Ability to move shapes using cursors keys. (by default)
- 111903 Provide 1-touch command to clean unresolved elements / connectors from diagram
- 111906 Improve removal of a bendpoint from a connector (Press ALT and click on the bendpoint)
- 111909 Default layout providers enhancements
- 111911 Contribution Item Service needs to support dynamic updates of tool-bar
- 111916 A suggestion on how to "grow" our diagram work area
- 111925 Support different line styles and arrow heads for geometric shapes / lines
- 111929 Arrange edges without arrange the nodes
- 111933 Layout commands - Distribute horizontal/vert, change vertial/horitzontal spacing
- 111934 Ability to drag page breaks view to affect offset / page size
- 111951 Color drop-down should support "no-fill" mode.
- 111956 Ability to have connections respect z-order and having shape overlap
- 112795 Pan / scroll tool
- 112818 Generic Project Explorer Framework for GMF
- 112996 Attaching a rectilinear routed line to a connection connects to space...
- 114107 [req] Provide a GMF Project wizard
- 114117 Expose "Customize" palette capability from GEF
- 114181 [req] Provide a Graphical Definition wizard
- 114182 [req] Provide a graphical definition wizard with "interview" capability
- 114194 [req] Allow for derived elements in graphical definition
- 114195 [req] Provide a set of jumpstart templates
- 114198 [req] Provide support for maintaining model synchronicity
- 114199 [req] Provide a graphical surface for mapping definitions.
- 114202 [req] Provide generation option to target view
- 114208 [req] Generate domain code with diagrams
- 114209 [req] Generate with builders
- 114216 [req] Support keyboard bindings
- 114225 [req] Support filtered views
- 114234 [req] Support feedback in status line
- 116499 PropertiesBrowserPage should support Undo/Redo from shared views
- 117917 Palette should remember the side it was attached to
- 118327 Service provider and policy error log message requires more detail
- 119248 Snap to Grid should allow snapping from any side
- 119252 Useability: diagram arrange all should snap to grid if snap to grid is on
- 123112 Tutorial: Creating diagram assistants for an action-bar
- 123760 Palette selection in group is not registered the first time using keyboard
- 124977 Bad location of the inplace editor for the new list compartment item
- 125282 Initialize ecore_diagram diagram file is redundant
- 125876 Rubberband selection tool should only select parent edit parts
- 126531 [Wizards] Wizards that infer tooling and graph definitions should be able to add results to the existing models
- 127491 Support external node labels in runtime
- 127908 Build should properly package example projects
- 128426 Tutorial: GMF diagram runtime tutorial and example for SVG display
- 129676 Allow the association of diagrams to arbitrary domain
- 130643 Duplicate wires in when creating from top of Circuit to bottom
- 131960 More layouts needed
- 132574 Automatically add shortcuts to external linked elements
- 133465 Wizards to reload GMF
- 133838 Snap-to-grid does not work for a child node *immediately* inside a top level node
- 134107 Provide preferences for the generated diagram editors
- 134115 Invert label text colour when it is selected
- 134119 It should be possible to change link label font
- 134495 Use workbench keybinding to delete element on diagram
- 134767 Printing: Fit to page makes the diagram too small
- 135271 problem with creating a figure with snap-on-grid enabled
- 135676 Logic shapes example does not prevent illegal reconnections
- 136410 Make connection handles easier to grab
- 136866 Resize constraint should be respected when node is created on diagram
- 136927 Guide GMFMap creation: Resource Selection: please preselect folder
- 137006 Request for moving figures from one container to another
- 137506 Select Element Service should filter based on capabilities
- 137807 Update clipboard support for SWT ImageTransfer type
- 138255 Support heterogeneous selections in copy/paste framework
- 139574 DPI of Jpeg files obtained with Save as Image File is too low (actual: 96, acceptable: 200)
- 139767 Model View for the UML editor example
- 139951 Support Layout for Canvas
- 141430 ACC: Print Dialog has fields that are not properly read by a screen reader
- 141558 GMF Developers Guide should not distiguish between Common and Diagram
- 141762 Avoid obstructions does not work well for rectilinear routing
- 141789 call "Arrange ALL" function in generation code for initialize the diagram
- 142336 more advanced mouse controls
Theme: Model[ing] Citizen
As a project within the Eclipse Modeling Project, a number of build dependency and interoperability items exist with other Modeling projects, as found in this section.
- 114200 [req] Provide an option to generate RCP application
- 127835 ECore sample: Represent EReference with specified EOpposite reference as a single diagram link
- 127909 Download pages need to adopt new look and feel
- 127911 Build schedule needs to be posted
- 134724 Build notes link on a GMF build download page
A number of items related to the implementation and support of standards is found in this section.
- 114190 [req] Support multiple languages in definition
- 114207 [req] Method of generation should be flexible.
- 114207 [req] Support diagram interchange
- 114233 [req] Provide alternative persistence mechanism
A number of performance issues are found in this section.
- 110496 Painting Performance enhancements
- 115829 Performance: Consider making DecorationService optimized
- 120106 Improve performance of AbstractProviderConfiguration
- 129344 ModelingAssistantService provides() method can be optimized
- 132261 Project explorer : when you scroll using up/down keys, is slow : GMF tree selection change listener takes time
- 138665 Performance: Copy Operation could be optimized
- 139313 Performance issues with Element Selection Service
- 140894 Performnace: Services use IConfigurationElement repeatedly to retrieve info
- 140898 Services need to revisit the question of using internal caches
- 141061 Performance: Notation metamodel can reduce its memory usage
- 141075 Performance DeleteFromModelAction is too slow calculating its enablement
- 141621 Performance TextCompartmentEditPart, LabelEditPart and WrapLabel figure are relatively slow refreshing