Luxology's application architecture is called nexus (tm). All the applications we build are based on this same structure. Our flagship application modo (tm) is created using nexus.
As its name implies, nexus is structured like a hub. It has a set of core functionality and systems common to many potential apps, with specific features and options arranged like spokes around the core. This extensible set of feature are called servers, and are implemented as plug-ins. By way of example, here are some common types of objects that can be implemented as plug-in servers.
Loaders & Savers
Loaders read external files, recognize their contents, and translate that into an object inside nexus. Savers do the reverse, storing the contents of a nexus object as an external file.
Every change of state of nexus model data (and a lot of non-model UI data as well) is done through a command. Commands are complex objects with arguments, enable/disable state, default UI behaviors, and optional value queries.
Tools provide an interactive method for editing meshes, doing transforms, or altering items. They support 3D handles and other input methods, and can communicate with other active tools through the tool pipe.
Items represent the scene state in nexus, and can perform a wide range of different functions. Plug-ins can also define new partial item types called packages.