diff --git a/src/docs/resources.md b/src/docs/resources.md new file mode 100644 index 0000000..f186666 --- /dev/null +++ b/src/docs/resources.md @@ -0,0 +1,33 @@ +# How BFFH thinks about "things": + +BFFH calls all things under it's (more or less existing and more or less total) control that users +want to use or be in a specific state for specific reasons "resources". The right to use a resource +or to change it's state is what BFFH calls a "claim". +Resources can be "claimed" by a number n ∈ ℕ\{0} of people at the same time. How many exactly claims +can be taken on a resource in parallel depends on the specifics of the resource. The (RGB) lighting +in a space for example is something that can be claimed by any number of people; if it's dark +outside everybody in the space will want the lights to be on. Who of all the people *allowed to* +gets to control the colour of the lights is a social issue and not something that can be encoded +into bffh easily. +However, a precision mill or a 3D-Printer can not be easily used by two people at the same time +without them stepping on each others toes. One of the two will be calling the shots, will be the one +actually pressing the buttons that do the things. In BFFH terminology she is the user holding the +claim. +To establish terminology let's call a claim with n = 1 an "exclusive claim" and a claim for a +resource that more than one user may claim a "shared claim". +Resources can also hold claims themselves. For example a mill, vapour-phase-oven and PCB press may +all three make used of an external cooling system which must turn on at the latest when any of these +three machines start work and must not turn off until all three are back to cool and idle. The +easiest way to represent this dependency is by having each (exclusive) claim on one of the three +machines also encompass a shared claim on the cooling pump. +Claims can be transferred between users. This serves two use-cases; first to transfer an exclusive +claim without having to have a machine unowned in the meantime, as an exclusive handover. This is of +course not so useful for shared claims. +The second use-case applies to shared claims too however: Giving an user a claim they do not have +the permission to take out themselves. This allows a supervisor to hand over control and claim of an +usually restrictively permissioned resource — like a mill — to somebody else. Which most importantly +stores the information that this somebody else is now using the machine and **not the supervisor**. + +Claims are ephemeral; you only hold an exclusive claim to a 3D-printer while it's printing your +design, you only hold a shared claim to the spaces front door while you're inside — making them lock +if you're the last one leaving.