Maybe this analogy will help some people!
Every day when a crow wakes up, it likes to follow the same daily routine, which may involve flying along complex paths, communicating with other creatures, solving problems, responding to external environmental stimuli, and more.
When Crow turns on, it runs a script loaded into its flash memory. That script may involve generating control voltage, responding to control voltage/Lua code, acting as a CV expander for Norns, controlling other devices over the I2C bus, and more.
Typically, the Crow follows its innate biological daily routine.
Typically, Crow runs the default script, default.lua, aka First.
However, your Crow is quite smart, and it can learn a new daily routine to follow whenever you want.
You can upload a User Script onto Crow via Druid, Max, or even a Max4Live device in Ableton. Norns scripts will also redefine how Crow behaves.
Your Crow can return to its innate biological daily routine at anytime by telling it to forget the special daily routine which you delivered to it previously.
Crow can be restored to its default script by clearing the User Script.
Your Crow is also highly adaptable and can communicate with you via a walkie-talkie in real-time over the course of a day. This allows it temporarily deviate from its daily routine. It can send you information that you request about how it feels and what it sees, explore a new path which you radio in to it, change how it responds to environmental stimuli, communicate with other creatures for you, and more! The next day however, it will return to its daily routine, whether that is its biological routine or one which you previously gave it.
You can send your Crow new code to execute on the fly (pun intended) in real-time. This is done by sending Lua code to it over a USB cable. The code may be composed and sent via Druid, Max, Max for Live devices in Ableton, or Norns. That code might redefine how it responds to and generates voltage, it might directly change the state of its inputs or outputs, it might return information to you about its internal state or externally received voltages, it might relay messages to other devices over I2C and more! When you restart Crow, it will return to the behavior defined by the script in flash memory, whether that is default.lua or a User Script.