Context
libpineforge (this repo) is Apache-2.0.
- Every real strategy enters the engine as
generated.cpp produced by pineforge-codegen, which is PolyForm Noncommercial 1.0.0.
LEGAL.md and README.md are honest about this split, and the corpus ships pre-generated .cpp so the parity figure is reproducible.
In practice, though, a user who wants to run their own Pine strategy commercially cannot do so with only the open-source pieces. The engine's "yours to embed, call from C/Python/Rust/Go" pitch is true only for hand-written C++ against engine.hpp, which is a very small audience given the size of that API surface.
This is a legitimate business choice, but it changes what "open-source backtest engine" means in the README's first sentence, and it will be the first question serious adopters and contributors ask.
Suggestions (pick any)
- Clarify positioning in the README intro: one sentence such as "The runtime is Apache-2.0; compiling Pine to it uses the separately licensed transpiler (free for personal trading)." Right now that disclosure is three bullets down and in LEGAL.md.
- Document the hand-written C++ path as a first-class option: a
docs/pages/handwritten-strategy.md with a minimal strategy.cpp that implements the per-strategy ABI without codegen (the runner/examples/strategy.cpp seed exists; promote and document it).
- Publish the per-strategy ABI contract (what codegen must emit:
strategy_create, run_backtest, input tables, reset hooks) as a stable spec in this repo, so third parties could write an alternative frontend. This also makes the "append-only ABI" promise checkable from outside.
- If an eventual dual-license or a limited commercial grant for the transpiler is planned, state the intended timeline so contributors know what they are contributing to.
Filing this as a discussion issue rather than a defect; closing with a documentation-only outcome is fine.
Context
libpineforge(this repo) is Apache-2.0.generated.cppproduced bypineforge-codegen, which is PolyForm Noncommercial 1.0.0.LEGAL.mdandREADME.mdare honest about this split, and the corpus ships pre-generated.cppso the parity figure is reproducible.In practice, though, a user who wants to run their own Pine strategy commercially cannot do so with only the open-source pieces. The engine's "yours to embed, call from C/Python/Rust/Go" pitch is true only for hand-written C++ against
engine.hpp, which is a very small audience given the size of that API surface.This is a legitimate business choice, but it changes what "open-source backtest engine" means in the README's first sentence, and it will be the first question serious adopters and contributors ask.
Suggestions (pick any)
docs/pages/handwritten-strategy.mdwith a minimalstrategy.cppthat implements the per-strategy ABI without codegen (therunner/examples/strategy.cppseed exists; promote and document it).strategy_create,run_backtest, input tables, reset hooks) as a stable spec in this repo, so third parties could write an alternative frontend. This also makes the "append-only ABI" promise checkable from outside.Filing this as a discussion issue rather than a defect; closing with a documentation-only outcome is fine.