rdf-connect / jvm-runner

Platform agnostic orchestrator for RDF Connect, written in Kotlin.
MIT License
1 stars 0 forks source link

Idea: Package Level Separation of Concerns #15

Open jenspots opened 2 weeks ago

jenspots commented 2 weeks ago

Currently, the whole project is a monolithic application with many features interwoven between modules. This might become unmaintainable as the repository grows, and we should look into separation of concern.

Using separate packages forces us to come up with consistent APIs and application stages which introduce flexibility and maintainability. Ideally, some of these should be platform-independent. The ones which are dependant on the JVM can then be replaced be implementations for other programming languages via FFI.

jenspots commented 2 weeks ago

With respect to FFI functionality, we should decide how to handle external processors. For example, a processor in JavaScript might include dependencies, but executing our own version of npm install is not desirable. Therefore, any published processors should basically be a "fat binary", in which all dependencies are included. For JavaScript, this would mean one or a collection of .js files which already include all dependencies which they reference.

Of course, we could interact with the npm package repository, but only do using simple actions, such as downloading a "fat" .js file from a specific package at runtime.