Skip to content

Discussion: the Apache-2.0 engine is not usable standalone without the noncommercial transpiler — clarify positioning or provide an open path #231

Description

@luisleo526

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)

  1. 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.
  2. 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).
  3. 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.
  4. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions