# 2025 Barcamp Session Proposal: Extension Show and Tell

**URL:** <https://forum.openrefine.org/t/2025-barcamp-session-proposal-extension-show-and-tell/2477>\
**Category:** Events\
**Tags:** barcamp-2025\
**Created:** [August 13, 2025, 10:43pm UTC](https://forum.openrefine.org/t/2025-barcamp-session-proposal-extension-show-and-tell/2477 "2025-08-13T22:43:51Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Rory](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/rory/32/1517_2.png) [@Rory](https://forum.openrefine.org/u/Rory)\
**Post date:** [August 13, 2025, 10:43pm UTC](https://forum.openrefine.org/t/2025-barcamp-session-proposal-extension-show-and-tell/2477/1 "2025-08-13T22:43:51Z")

</div>

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

---

<div class="post-metadata">

**Author:** ![AtesComp](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/atescomp/32/1100_2.png) [@AtesComp](https://forum.openrefine.org/u/AtesComp)\
**Post date:** [September 2, 2025, 4:48pm UTC](https://forum.openrefine.org/t/2025-barcamp-session-proposal-extension-show-and-tell/2477/2 "2025-09-02T16:48:29Z")

</div>

[Martin edits] - topic moved to a dedicated post [2025 Barcamp Session Proposal: RDF Extension Demo](https://forum.openrefine.org/t/2025-barcamp-session-proposal-rdf-extension-demo/2540) as it is a standalone session for the #barcamp-2025

---

<div class="post-metadata">

**Author:** ![Rory](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/rory/32/1517_2.png) [@Rory](https://forum.openrefine.org/u/Rory)\
**Post date:** [September 10, 2025, 6:03pm UTC](https://forum.openrefine.org/t/2025-barcamp-session-proposal-extension-show-and-tell/2477/4 "2025-09-10T18:03:11Z")

</div>

Here is the etherpad for notes taken during the session: [Etherpad](https://etherpad.wikimedia.org/p/openrefine-barcamp-extension-show)

---

<div class="post-metadata">

**Author:** ![Martin](https://dub1.discourse-cdn.com/flex017/user_avatar/forum.openrefine.org/martin/32/7_2.png) [@Martin](https://forum.openrefine.org/u/Martin)\
**Post date:** [March 12, 2026, 6:29pm UTC](https://forum.openrefine.org/t/2025-barcamp-session-proposal-extension-show-and-tell/2477/5 "2026-03-12T18:29:57Z")

</div>

_clean up notes from the [pad](https://etherpad.wikimedia.org/p/openrefine-barcamp-extension-show)_

## 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](https://github.com/AtesComp/rdf-transform)

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:

- Jena updates historically affecting RDF-related extensions
- [jQuery 3.5](https://jquery.com/upgrade-guide/3.5/#jquery-htmlprefilter-changes) update in OpenRefine 3.6, which changed HTML processing behavior. Related OpenRefine update: [Upgrading jQuery to 3.6.0 by elebitzero · Pull Request #4891 · OpenRefine/OpenRefine · GitHub](https://github.com/OpenRefine/OpenRefine/pull/4891)
- Velocity template update (1.5 → 1.6.3), which began throwing errors for misconfigurations and broke the Wikimedia Commons extension that referenced a missing `macros.vm` file: [Remove reference to the file macros.vm in module.properties by sebastian-berlin-wmse · Pull Request #104 · OpenRefine/CommonsExtension · GitHub](https://github.com/OpenRefine/CommonsExtension/pull/104). This dependency change was included in **OpenRefine 3.8** (and possibly 3.7.9).
