← Back to all sparks
E

edibble

ANALYTICS
Velocity0.0

Encapsulating Elements of Experimental Design

A grammar for experimental design that learned to compose designs and track its own provenance.

experimental-designgrammar-of-designreproducibilitysimulationr-package
Current state
edibble expresses experimental designs declaratively — units, treatments, records and their allotments — rather than calling a canned design function. Since 1.0.0 its internals run on a Provenance object that records the commands used to build a design, and 1.1.0 added conditional treatments, design composition and a separated simulation step. Recent work has focused on designs constructed from existing data rather than from scratch.
Where it's heading
Development has moved from vocabulary to composition. Early releases established the core grammar; 1.0.0 replaced the internal R6 machinery with a Provenance object that tracks both internal and external commands, which is what lets a design carry its own construction history. On that foundation 1.1.0 added the ability to add two designs together, express conditional treatment structures, and split simulation specification from execution. The 2025 release turns toward a different entry point — wiring up level edges and unit attributes when an edibble object is built from data that already exists, rather than from a design declared up front.
Prediction
Expect continued work on designs derived from existing data, since that is where the last release concentrated and it is the path least covered by the declarative grammar.

Recent moves

  1. 1y ago

    Better handling of designs built from existing data

    Fixes factor inputs rendering as integers and exports the S3 methods, while improving how designs built from existing data behave — level edges are added by allot_trts() and unit levels attach as attributes to record factors. The work is concentrated on the data-first path rather than the declarative one.

    View source ↗
  2. 2y ago

    edibble 1.1.0

    ⚡ SPARK

    The release where the grammar becomes compositional: two designs can be added with +, treatments can be conditional, and simulation specification splits from execution. It builds directly on the Provenance rewrite and defines the capability surface the package has been refining since.

    View source ↗
  3. 2y ago

    Internals rebuilt on a command-tracking Provenance object

    Replaces the internal R6 class with a Provenance object that tracks internal and external commands, so a design records how it was constructed. Export moves to openxlsx2 and the display now shows variable class rather than role alone — an internal rewrite that made the compositional features of 1.1.0 possible.

    View source ↗
  4. 3y ago

    S3 consistency and citation modernised

    Makes S3 generics and methods consistent and modernises the citation entry. Tidying in the weeks before the 1.0.0 rewrite.

    View source ↗
  5. 3y ago

    Rd files fixed for HTML5 compatibility

    Fixes roxygen2-generated Rd files using an align attribute that is being retired in HTML5. Documentation toolchain upkeep with no effect on the package's behaviour.

    View source ↗
  6. 4y ago

    Initial release

    The initial release, recorded in a single line with no detail about what the package could do at the time. Its starting capabilities have to be read from the releases that follow.

    View source ↗