2025 Barcamp Session Proposal: Extension Show and Tell

Description

An opportunity for extension developers to dive deep into the architecture of their extension. Ideally this session could feature extensions across the entire OpenRefine stack and would serve to highlight areas for improvement in the codebase and/or documentation.

Format

Presentation and group discussion

If you’re interested

Please feel free to comment below with anything in particular you’d like to hear about or a link to your extension if you’d like to present.

1 Like

[Martin edits] - topic moved to a dedicated post 2025 Barcamp Session Proposal: RDF Extension Demo as it is a standalone session for the barcamp-2025

1 Like

Here is the etherpad for notes taken during the session: Etherpad

clean up notes from the pad

Extension architecture

The discussion used the RDF Transform extension as an example to explain how OpenRefine extensions are structured.

Code reference: GitHub - AtesComp/rdf-transform: RDF Transform is an extension for OpenRefine to transform data into RDF formats. · GitHub

Key elements mentioned:

  • extensions typically include client-side and server-side components
  • extensions are initialized through a server-side JavaScript file (controller.js)
  • controller.js has access to the server-side Java code
  • initialization logic can therefore be written in Java and called from JavaScript

Implementation considerations for extensions

Some issues that extension developers have had to address:

  • checking the Java version to assess compatibility and log additional details when problems occur
  • creating a namespace for extension-specific preferences

There has also been discussion in the past about moving toward a declarative configuration format to specify the components that an extension registers.

Overlay model

Question raised: What is the Overlay model and why is it useful?

The overlay model presents data to your extension in the way a user has configured it. It's intended to extend project-related metadata. In addition to the RDF-transform extension, the wikibase extension makes use of the overlay model.

Dependency management

Currently, OpenRefine's version of dependencies takes precedent over dependencies brought in by extensions (i.e., if an extension tries to bring their own version of Apache Jena, the extension will still pull in the version declared by OpenRefine core). There are both good and bad tradeoffs to this, notably the size of extension and isolation between the extension and OpenRefine core. There's also the question of security vulnerabilities: it would be nice if we could resolve a vulnerability in one place by upgrading a package in OpenRefine and having that trickle down into extensions, but that comes at the expense of isolation.

Extension upgrade issues encountered in the past

Several OpenRefine updates have required extensions to adapt:

  • OpenRefine 3.0: migration from org.json to Jackson
  • OpenRefine 3.3: introduction of CSRF tokens, affecting commands using POST
  • Java API compatibility changes

Dependency upgrades, including: