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

ESF developer guide

Esf Project wiki page : Esf

Development environment

To ease the development on ESF, each member of the team must work with the same IDE configuration. To manage this, and ease the configuration sharing, it's mandatory to use the Eclipse Oomph installer to manage your ESF development workbench.

Getting the code

The ESF code and documentation are located in Git repositories. In the ESF Git website you will find the most recent activity information on the repositories and, at the bottom of the page, you will find the URIs of the Git repositories.

We recommend if you want to contribute to get the code using the Oomph setup model, to build in the same time a dedicated workbench.

Retrieving configuration files

All configuration files dedicated to the ESF project, as the code templates, formatter files and checkstyle configuration are available under the ESF repository.

We recommend if you want to contribute to build directly your workbench using the Oomph setup model, to build a dedicated workbench with the right configurations.

Oomph Setup Model

To build your development workbench for ESF, use the custom set-up model committed in the code base. This makes it easier than ever to get a complete Eclipse workbench up and running for development on the ESF source code. Just download the Oomph Installer from the linked wiki page and follow the simple wizard to create your IDE and import the Papyrus source projects that you want to work on.

Contributing your changes is easy because Oomph will clone the ESF Git repositories for you. The setup model will also configure:

  • All of the tools needed to edit and build the project within the IDE
  • Workspace preferences enforcing the ESF standard compiler, code formatter, template and clean up settings, and the checkstyle configuration to apply
  • Workspace content, with a Git clone and the source projects imported
  • Target platform that includes all of the dependencies required to build and run ESF
  • Mylyn queries for current open bugs and enhancements in the Bugzilla database
  • Mylyn queries for the status of the latest automated builds, including tests
  • Mylyn queries for open Gerrit reviews

Please raise bugs if you see any problems in the setup configuration.

Code standards

All the ESF code base follow specific coding rules and standards, mainly based on best practice respect.
The complete explanation of the coding rules can be found in this page: Coding rules

Metamodel/Profile conventions

All the ESF metamodels and profiles follow specific convetions.
The complete explation of these conventions can be found in this page : Metamodel/Profile conventions

Architecture

External dependencies

ESF requires some external plugins to compile.
The following page maintains a list of the required external plugins.

Maven and Tycho integration

The Hudson builds are currently implemented with Maven, using Tycho to build Eclipse-compatible artifacts. Therefore, all active plugins and feature projects have Maven POM files describing them.

Pay attention that the Maven/Tycho build configuration is the reference for the product build, not the Eclipse launchers. The entire general project configuration, as the source encoding or compiler version to use, must be set in the Maven configuration, and not overridden in the Eclipse projects configuration.

ESF features and plugins architecture

Architecture rules

To ensure that the product components, features and plugins, are homogeneous, some rules must be applied and respected during a component creation and evolution. These rules are dedicated to the architecture, and are included in the general coding rules.

Here is an abstract to resume their main principles:

  • The product configuration is feature based. The aim of this is to be able to generate and deliver a whole product to the final user.
  • Each optional feature is built under an independent P2 repository.
  • The POM configuration with Tycho is the build configuration reference.
  • The product build use a manifest-first dependency resolution (not a pom-first resolution).

Features architecture

Work in progress...

Plugins architecture

JUnit Tests

Work in progress...

Build process

Work in progress...

Back to the top