This commit is contained in:
Nadja Reitzenstein 2021-09-26 09:03:24 +02:00
parent 3979af09c8
commit 9eaed13423

33
src/docs/resources.md Normal file
View File

@ -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.