(WIP. See decide how workspaces and catalogs interact for early notes, which still need to be extracted to this doc.)
Workspaces are the main organizational concept in Warpforge and how it exists in your development environment (i.e. your computer).
In brief: you're looking at a workspace whenever you see a folder that contains a folder called .warpforge
.
A workspace is declared wherever there's a folder on your computer that contains a folder called .warpforge
. For example, if you have the path /hey/hi/hello/.warpforge
, then the hello
folder is a workspace.
There are a few files that will be recognized by warpforge
when they're in a workspace:
module.wf
— marks the root of a "module", which, generally speaking, means something's going to be computable here.plot.wf
— contains JSON specifying a "plot" (the "L2" graph format, can have multiple steps of computations, can refer to catalogs, etc). Will be ignored unless a module.wf
file has already been found.lark.wf
— contains skylark script (an "L3" system) which generates the plot.wf
file. Will be ignored unless a module.wf
file has already been found..warpforge/*
are for files that the warpforge
tool is going to read and write. This includes but may not be limited to catalogs, warehouses, memos, etc.Beyond those, the rest of the files and folders are yours — they're just content in the workspace. This content won't be examined by warpforge unless it's pulled into the system by ingest commands or similarly explicit interactions.
Workspaces in your development environment can be nested.
When this occurs, the workspace "above" (e.g. has a shorter path) the other is called its parent. Any workspaces "below" (e.g. have a longer path) another are called its children.