A Glossary of Node-RED terms

For those not used to it, the terminology used in Node-RED can occasionally be confusing. Due in part to the overloading of some terms.
So I’ve come up with this glossary to help keep myself from getting confused.

A draft set of terminology for Node-RED, the flow-based visual programming tool.

Node: The source definition for nodes that can be used in Node-RED Flows. Defined normally by an npm Package (though actually defined by 3 files: package.json, an html file for the admin UI and a JavaScript file for the server process).

Node Instance: An instance of a Node added to a flow. A Node (definition) may have many instances in Flows.

node(s): same as Node Instance(s).

wire(s): The logical connectors between nodes. Conceptually, messages “travel” between nodes. In reality, they don’t, data is simply passed by reference (except for the edge cases where a message copy is forced).

message(s): Often referred to by the short name msg which is the variable name generally used to reference the message. This is the data object used to communicate between nodes. Typically, it has the minimal definition: {{_msgid: uid, topic: undefined|string, payload: Object|Array|string|number}} but other than requiring _msgid (which is added by Node-RED), it may contain any valid, serialisable JavaScript.

userDir: The server folder that contains the Flows file, settings.js and other Node-RED configuration information. Typically residing at ~/.node-red.

Project: a Flows file and other configuration files that allow rapid switching between Flows. Note that a project shares the same set of Packages (and therefore Nodes) and global Node-RED settings as all other projects. Only the Flows file, matching credentials, a README and a minimalist package.json are part of a project. Projects are designed to enable teams to work together and can use GIT to manage the data collaboration.