Skip to content

Is it a good idea to support more than one set of candidates in a workspace? #5

@warpfork

Description

@warpfork

First of all, context review:

  • A Workspace is a a dir containing a .timeless/ dir. It has a set of Catalogs (with release manifests which map "ModuleName:Version:Item" tuples to WareID for many Modules).
  • Many Modules (denoted by a module.tl) file can exist in one Workspace.
  • Every time you evaluate a Module, it produces a "candidate" release.
  • Candidate releases are how we propagate WareIDs between Modules. We don't publish them; "candidate" is a temporary name, and can be referred to only in this local Workspace.
  • We can accumulate candidate releases by evaluating several modules... and then choose to give them permanent names and publish them all at once. (This is our solution for being able to test upstream/downstream dependencies at all once, and release matching sets that are known to work.)

So, the question: Should we support more than one set of candidates per workspace?

Concretely, that would mean:

  • if you run stellar emerge example.org/foomodule for a module, it'll produce a candidate release stored in the path $WORKSPACE/.timeless/candidates/default/example.org/foomodule/*.
  • if you run stellar emerge --saga=try-dancing example.org/foomodule, it'll produce a candidate release stored in the path $WORKSPACE/.timeless/candidates/try-dancing/example.org/foomodule/*.
  • all the (yet-to-be-written) stellar catalog release commands would similarly accept a --saga flag.

If we don't support this, everything would be the same; it would just skip a layer of directories.

This is mostly a question of UX. If we add this flag, will people actually find it useful? Is it possible to emulate the same behavior by just doing a fork of the Workspace -- and given that the answer is yes, is it going to be a better ergonomic experience overall if we simply tell people to do that, instead of building a special feature for this potentially rare user story?

Metadata

Metadata

Assignees

No one assigned

    Labels

    discussionOpen-ended discussion. Will be closed after some arbitrary time if consensus cannot be reached.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions