Twenty machines, one block of logic โ how do you keep them all on the same code without chaos? TIA's answer is the library of versioned types. The type has a master copy and a version number; every machine references a specific version. Bump the master and you decide, per machine, who upgrades and who stays pinned. Watch a v1.0 โ v2.0 rollout play out.
The master type FB_Conveyor lives in the library at the top. Three machines each instance it. Press โฌ Release v2.0 (which adds a "jam detect" feature) and the machines fall out of date โ but nothing changes on them until you explicitly Update each one. Pin a machine and it deliberately refuses the upgrade. That controlled ripple is the whole discipline.
This is why a versioned type beats copy-paste: the master is the single source of truth, every instance knows exactly which version it runs, and an upgrade is a deliberate, auditable act โ never an accident. Pin the machine that's mid-production run; upgrade the rest at the next service window.
๐ท๏ธ Type โ version-controlled. Edit it and you create a new version (V1.0 โ V2.0); every instance tracks which version it uses, and updates are managed. This is what you want for shared logic.
๐ Master copy โ a plain template you copy from. No version link โ once copied, the instances drift independently. Fine for boilerplate, wrong for fleet-wide logic.
๐ฆ Project library โ travels inside one project. Great for reusing within a machine. Promote to a global library to share across projects and teams.
๐ Global library โ the corporate standard, shared across every project. One blessed FB_Conveyor the whole company builds on.
You want a shared conveyor block where fixing a bug once propagates to all 20 machines (when each is ready). Library type or master copy?