Skip to content

Specification‐vs‐Implementation

Youssef Menjour edited this page Mar 20, 2026 · 1 revision

Specification vs Implementation

One of the most important ideas in FROG is the distinction between the specification and its future implementations.

The specification

The repository defines the language and its architectural layers.

It specifies:

  • source representation,
  • execution semantics,
  • IR structure,
  • intrinsic libraries,
  • optional profiles,
  • IDE-facing architectural responsibilities.

The specification is the source of truth.

Implementations

An implementation is a concrete system built on top of the specification.

Examples may eventually include:

  • editors,
  • validators,
  • compilers,
  • runtimes,
  • execution engines,
  • backend adapters,
  • conformance tooling,
  • ecosystem services.

Implementations are expected to consume the specification, not redefine it.

Why the distinction matters

Without this distinction, a project quickly collapses into one vendor-specific stack where:

  • the IDE defines the language,
  • the runtime defines the semantics,
  • undocumented behavior becomes de facto law.

FROG is deliberately trying to avoid that trap.

FROG is not one product

FROG should be understood as:

  • one open language specification,
  • potentially many implementations.

Those implementations may differ in:

  • architecture,
  • performance strategy,
  • UX choices,
  • deployment model,
  • supported profiles,
  • backend targets.

But they should still align on the shared specification foundation.

Long-term consequence

This distinction is what makes possible:

  • interoperability,
  • alternative IDEs,
  • alternative runtimes,
  • independent compilers,
  • conformance work,
  • ecosystem growth beyond one vendor.

That is one of the central reasons FROG exists at all.

Clone this wiki locally