Skip to content

refactor(sdk)!: extract pj_datastore to the app repo; SDK now Apache-2.0 (0.6.0)#113

Merged
facontidavide merged 1 commit into
mainfrom
chore/extract-datastore
Jun 2, 2026
Merged

refactor(sdk)!: extract pj_datastore to the app repo; SDK now Apache-2.0 (0.6.0)#113
facontidavide merged 1 commit into
mainfrom
chore/extract-datastore

Conversation

@facontidavide
Copy link
Copy Markdown
Contributor

What

Extracts the columnar storage engine (pj_datastore) out of this SDK submodule into the PlotJuggler application repo, leaving plotjuggler_core as a pure plugin SDK (pj_base + pj_plugins).

Why

pj_datastore is the one component plugins never link — they reach storage through the pj_base C ABI, and the host-side write bridges (DatastoreSourceWriteHost, …) live inside the engine. It was also the only MPL-2.0 piece of an otherwise Apache-2.0 SDK. Moving it aligns the repo boundary with the actual plugin-facing surface and the license boundary.

Changes

  • Remove pj_datastore/ (engine, tests, benchmarks, examples, docs) and LICENSE-MPL.
  • CMake: drop PJ_BUILD_DATASTORE / PJ_BUILD_PARQUET_IMPORT_EXAMPLE, add_subdirectory(pj_datastore), and the nanoarrow/tsl/benchmark detection (relocated to the app repo).
  • Conan: drop the datastore component, with_datastore / with_parquet_example options and their arrow/nanoarrow/boost deps; license = "Apache-2.0".
  • Version: 0.5.10.6.0 (removing the datastore component is an API removal).
  • Docs/CI: LICENSE, README.md, CLAUDE.md, V4_STORE.md, pj_plugins docs, the SDK install smoke-test, and the Linux/macOS/Windows/release workflows updated.

⚠️ Breaking change

The datastore CMake/Conan component is gone. Consumers needing the engine depend on it in the application repo. Plugins are unaffected — they use base / plugin_sdk / plugin_host only.

Verification

Standalone ./build.sh + ./test.sh: 44/44 tests pass, SDK builds with no datastore.

Companion PR in the application repo adds pj_datastore as a top-level module and bumps this submodule pointer.

🤖 Generated with Claude Code

The columnar storage engine (pj_datastore) was the only MPL-2.0 part of this
package and the only component plugins never link: plugins reach storage
through the pj_base C ABI, and the host-side write bridges live in the engine.
Move it into the PlotJuggler application repo so this submodule is purely the
plugin SDK (pj_base + pj_plugins).

- Remove pj_datastore/ entirely and the datastore Conan/CMake component, the
  with_datastore / with_parquet_example options, and the nanoarrow / tsl /
  benchmark detection that existed only for the engine.
- License is now Apache-2.0 in full (drop LICENSE-MPL); update LICENSE/README.
- Bump 0.5.1 -> 0.6.0 (removing the datastore component is an API removal).
- Update CI workflows, the SDK install smoke-test, and docs (CLAUDE.md,
  V4_STORE.md, pj_plugins docs) to reflect the new engine location.

BREAKING CHANGE: the `datastore` CMake/Conan component is removed from
plotjuggler_core. Consumers that need the storage engine must depend on it in
the application repo; plugins are unaffected (they use base/plugin_sdk/plugin_host).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@facontidavide facontidavide merged commit 3f9003f into main Jun 2, 2026
4 checks passed
@facontidavide facontidavide deleted the chore/extract-datastore branch June 2, 2026 07:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant