Field linkage is a way to give exclusive control of the value of a field to one singular source in various different ways. These ways are known as links, drives, and hooks. Linked fields are exclusively controlled from some source usually known as the driver.
Links

Target
field in this image is linked, as shown by it being cyan. This is due to it being a FieldDrive<T> type.The most basic form of linkage is known as a link. Linked fields appear as cyan in the inspector. Links establish exclusive control of the linked field to the driver. This allows the driver, and only the driver, to update the value of the field. This type of field relation is synced and will not differ locally between users other than the case of network delays.
This form of field linkage is rarely used within the game and is only necessary for specific purposes. For example, attempting to drive a FieldDrive<T> type will result in the field becoming linked. This is due to FrooxEngine not wanting the drive state of a field to be local between each user, as localizing such a property could lead to synchronization issues. Links are also used in some parts of user and avatar setup in worlds.
Drives

Rotation
field on the slot is driven by the AutoLookAtUser, as shown by it being purple.Drives are an extension of links and the most common form of linkage that one will encounter in Resonite. Driven fields appear as purple in the inspector. As with links, drives establish exclusive control over the driven field to the driver. However, unlike links, the value of a driven field is fundamentally local to each individual user. Because of this locality, drives are usually used to reduce network traffic by having each individual user calculate the value of the field on their own machine.
Fields can become driven with either components or ProtoFlux. With components, most drivers are found under the Transform/Drivers or Relations categories. With ProtoFlux, while holding the ProtoFlux Tool, you can drag out a field from an inspector, open the context menu while still holding the field, and choose the "Drive" option. This will create a Value Field Drive or Object Field Drive node to drive the value of a field.
Another way to drive fields in ProtoFlux is via the Field Hook node. This is a lower-level interface to driving, as it allows one to start and stop drives arbitrarily on a field using impulses. It also allows one to use a hook to allow other sources to write to the field.
Hooks
A Hook is an optional part of field linkage that certain drivers may utilize. It is a function that will be run when the linked field attempts to be written to. This function is defined by the driver. This allows the driver to arbitrarily change the behavior of writing to a field.
WriteBack
The most commonly-named hook that one might encounter is called WriteBack
. This makes it so that when one attempts to write to the driven field, the write will go through, writing both to the source value and driven value at once.
This hook can cause an interesting effect when combined with the locality of drives. If one were to ValueCopy a field onto itself and enable writeback, the field becomes a local field with the backbone of the data model to support it, as opposed to something like a Store in ProtoFlux.
How linked fields are updated
It is important to remember that a field being linked is a separate concept from the value of the field being updated. All that field linkage establishes is a way to make sure that a field is controlled by one and only one source only--however that field gets updated and the value it gets updated with is still the responsibility of the driver. This could be on every engine update, whenever the component detects a change from some source, or any other way the component sees fit.
ProtoFlux
In the ProtoFlux FrooxEngineContext, a Field Drive node is a listener node. Whenever the node is notified of a change from its input context, it will evaluate its input and write the result to the field. This makes ProtoFlux drives lazy by default--usually only evaluating their input when needed. However, as with all listener nodes, if the input node graph has a node marked with the ContinuouslyChanging property, it will cause the drive to evaluate its input every engine update.