Skip to content

PDR-0001: Open-core split — public MIT SDK, private commercial Pro

PDR-0001: Open-core split — public MIT SDK, private commercial Pro

Section titled “PDR-0001: Open-core split — public MIT SDK, private commercial Pro”

Date: 2026-06-22 | Status: accepted Decided by: Harol (solo operator / product owner)

This PDR ratifies a decision already in force across the codebase and referenced by ADR-0001 and ADR-0022. It is recorded now so the product rationale has a durable, linkable home separate from the technical ADRs that implement it.

Verbara is an open-core product. The foundation (Verbara.Sdk) is public and MIT-licensed; the commercial value-add (Verbara.Sdk.Pro) and the platform that monetizes it stay private and closed-source. The dependency boundary Sdk (MIT) → Sdk.Pro (private) → Platform IS the open-core line and must not be crossed: no Pro/closed concepts leak into the public SDK, and Pro IP never ships as decompilable IL.

  • Market: A permissive, MIT-licensed SDK lowers adoption friction and builds an ecosystem/funnel around the Asterisk integration layer, while the differentiated Pro features (event sourcing, predictive dialer, agent assist, analytics, clustering, multi-tenant, licensing) remain the commercial moat.
  • Cost: The split costs ongoing discipline (two release trains, a guarded boundary) but avoids the far larger cost of either giving away the commercial IP or making the whole stack closed and unadoptable.
  • Complexity: Enforced technically — the closed Pro IP must ship as Native AOT so it is never distributed as decompilable IL (“la imagen siempre debe ser AOT”). This is what makes ADR-0022 (AOT-only shipping, Dapper ban) a hard, non-negotiable constraint rather than a preference.
  • Fully open-source (all MIT): maximizes adoption, eliminates the commercial moat — rejected; there is no revenue model.
  • Fully closed-source: protects all IP but kills the adoption funnel and community trust around the integration layer — rejected.
  • Source-available license for Pro (e.g. BSL): keeps source visible with usage restrictions, but still exposes the IP and adds license-compliance burden — rejected in favor of closed + AOT, which is simpler to enforce at this scale.
  • A funding/ownership change alters the monetization model, or
  • The open SDK funnel demonstrably fails to convert (reconsider how much value sits above vs. below the open-core line), or
  • A specific Pro capability would create far more ecosystem value as open than as commercial (move that one capability down across the line via its own PDR).