Skip to content
@eclipse-fennec

Eclipse Fennec project

Eclipse Fennec logo

Eclipse Fennec

EMF for OSGi and the Web

Turning the Eclipse Modeling Framework into first-class OSGi services — and bringing a full EMF/OCL stack to the web.

📖 Documentation · 🦊 Eclipse Project


About

Eclipse Fennec extends EMF to work optimally with OSGi and adds the components needed for end-to-end, model-based applications — serialization and codecs, distributed model registries, persistence and validation. The work spans a ready-to-run application, a Java/OSGi core, and a TypeScript stack that brings EMF and OCL to the browser.

Projects

🚀 Applications

Project Description
model.atlas Fennec Model Atlas — a distributed EMF model registry and repository service.
data.atlas Fennec Data Atlas — data management service built on the Fennec stack.
dcat.atlas Fennec DCAT-AP open data portal.
event.atlas Fennec Event Atlas — EMF extension for the Eclipse sensiNact broker.
dcat.atlas.ui Vue-based web UI for the Fennec DCAT Atlas.

☕ Java / OSGi Core

Project Description
emf.osgi OSGi extension for EMF — dynamic model and package registries.
emf.util Utilities and commons for Fennec EMF OSGi.
emf.codec Jackson 3 based EMF serializer / de-serializer.
emf.odata OData protocol support for EMF models.
emf.ogc.features OGC API – Features implementation based on EMF.
emf.services EMF-based, OSGi-inspired distributed service registry framework.
emf.m2x EMF validation, transformation and generation.
emf.persistence-jpa EMF JPA-like persistence using EclipseLink.
emf.search Lucene index extension for EMF.
emf.editors Custom EMF Eclipse editors.
emf.codegen-maven Maven code generation for EMF OSGi.
emf.osgi-mcp MCP OSGi whiteboard using EMF models as structured output.
common.models Common EMF models (Ecore models).
fennec.models Fennec-specific EMF models (e.g. compliance models).
camel EMF Apache Camel whiteboard integration.
fennec.bnd.libraries Fennec workspace and project libraries.

🌐 TypeScript Stack

Project Description
emf.ts TypeScript based EMF.
emf.ts.codegen TypeScript based EMF code generation.
emf.ts.codec.jsonschema TypeScript based EMF codec for JSON Schema.
emf.ts.vue.registry Vue-based registry for TypeScript EMF.
emf.ts.ui UI model composer and editor packages for TypeScript EMF.
emf.odata.ui TypeScript OData UI.
qvt.langium QVT grammar and language server built with Langium.
ocl.engine Object Constraint Language evaluation engine.
ocl.langium OCL grammar built with Langium.
ocl.lsp.worker OCL Langium language-server worker.
ocl.model OCL model definitions.

🐍 Python Stack

Project Description
emf.py EMF implementation for Python.
emf.py.codegen EMF code generation for Python.

Dependency Graph

How the projects build on each other. Solid arrows are build-time dependencies (bnd -library / -buildpath, npm and Python packages), shown as a transitive reduction — an arrow is omitted when the dependency is already implied by another path. Dotted arrows are runtime-only dependencies (launch / Docker .bndrun assemblies). All Java projects ultimately build on emf.osgi and fennec.bnd.libraries.

flowchart BT
  subgraph apps["🚀 Applications"]
    model_atlas["model.atlas"]; data_atlas["data.atlas"]; dcat_atlas["dcat.atlas"]; event_atlas["event.atlas"]; dcat_atlas_ui["dcat.atlas.ui"]
  end
  subgraph java["☕ Java / OSGi Core"]
    fennec_bnd_libraries["fennec.bnd.libraries"]; emf_osgi["emf.osgi"]; emf_m2x["emf.m2x"]; emf_codec["emf.codec"]; common_models["common.models"]; fennec_models["fennec.models"]
    emf_persistence_jpa["emf.persistence-jpa"]; emf_util["emf.util"]; emf_search["emf.search"]; emf_odata["emf.odata"]
    emf_ogc_features["emf.ogc.features"]; emf_osgi_mcp["emf.osgi-mcp"]; emf_services["emf.services"]; camel["camel"]; emf_editors["emf.editors"]; emf_codegen_maven["emf.codegen-maven"]
  end
  subgraph ts["🌐 TypeScript Stack"]
    emf_ts["emf.ts"]; emf_ts_codegen["emf.ts.codegen"]; emf_ts_codec_jsonschema["emf.ts.codec.jsonschema"]; emf_ts_vue_registry["emf.ts.vue.registry"]; emf_ts_ui["emf.ts.ui"]
    emf_odata_ui["emf.odata.ui"]; ocl_model["ocl.model"]; ocl_engine["ocl.engine"]; ocl_langium["ocl.langium"]; ocl_lsp_worker["ocl.lsp.worker"]; qvt_langium["qvt.langium"]
  end
  subgraph py["🐍 Python Stack"]
    emf_py["emf.py"]; emf_py_codegen["emf.py.codegen"]
  end

  emf_osgi --> fennec_bnd_libraries
  emf_m2x --> emf_osgi
  common_models --> emf_osgi
  fennec_models --> emf_osgi
  camel --> emf_osgi
  emf_codec --> emf_m2x
  emf_codec --> common_models
  emf_persistence_jpa --> emf_codec
  emf_util --> emf_persistence_jpa
  emf_search --> emf_persistence_jpa
  emf_odata --> emf_persistence_jpa
  emf_ogc_features --> emf_persistence_jpa
  emf_osgi_mcp --> emf_util
  emf_services --> emf_osgi_mcp
  dcat_atlas --> emf_util
  dcat_atlas --> fennec_models
  event_atlas --> emf_codec
  event_atlas --> fennec_models
  model_atlas --> dcat_atlas
  model_atlas --> emf_osgi_mcp
  data_atlas --> model_atlas
  data_atlas --> emf_ogc_features

  emf_ts_codegen --> emf_ts
  emf_ts_codec_jsonschema --> emf_ts
  emf_ts_vue_registry --> emf_ts
  qvt_langium --> emf_ts
  ocl_model --> emf_ts_codegen
  ocl_engine --> ocl_model
  ocl_langium --> ocl_engine
  ocl_lsp_worker --> ocl_langium
  emf_ts_ui --> emf_ts_vue_registry
  emf_ts_ui --> ocl_langium
  dcat_atlas_ui --> emf_ts_ui

  emf_py_codegen --> emf_py

  data_atlas -.-> emf_odata
  dcat_atlas -.-> emf_services
  emf_services -.-> emf_search
  emf_osgi_mcp -.-> model_atlas
  event_atlas -.-> model_atlas
  event_atlas -.-> emf_osgi_mcp
  model_atlas -.-> event_atlas
Loading

Documentation

The central documentation hub lives at eclipse-fennec.github.io — start there for the project overview and links into each repository.

Contributing

Contributions are welcome! Eclipse Fennec is an Eclipse Foundation project, so a few formalities apply:

Security

See SECURITY.md for how to report a vulnerability through the Eclipse Foundation's coordinated disclosure process.

License

Released under the Eclipse Public License 2.0.

Popular repositories Loading

  1. emf.ts emf.ts Public

    TypeScript based EMF

    TypeScript 5

  2. model.atlas model.atlas Public

    Fennec Model Atlas

    Java 2 2

  3. emf.m2x emf.m2x Public

    EMF Validation, Transformation and Generation

    Java 2

  4. ocl.engine ocl.engine Public

    OCL Engine

    TypeScript 2

  5. emf.ts.codec.jsonschema emf.ts.codec.jsonschema Public

    TypeScript based EMF codec jsonschema

    TypeScript 1

  6. emf.ts.codegen emf.ts.codegen Public

    TypeScript based EMF Codegen

    TypeScript 1

Repositories

Showing 10 of 38 repositories

People

This organization has no public members. You must be a member to see who’s a part of this organization.

Top languages

Loading…

Most used topics

Loading…