A plasmoid is the combination of files that go into creating a plasma plugin. This includes:
* metadata (e.g. .desktop files) * svg images * configuration definitions (KConfigXT) * code (either something Kross groks or a compiled c++ library) * ...
An applet is the code part of a plasmoid, technically because it provides a Plasma::Applet object. To users, this will be an implementation detail they probably never see.
The Corona, a QGraphicsScene subclass, is the Plasma canvas. It contains all of the Containments that exist for the application, providing the "model" for the Views to use.
It handles initiating loading and saving of Containments and Applets and other such canvas-global tasks.
A Containment is a top level grouping of widgets. Each Containment manages the layout and configuration data of its set of widgets independently from other Containments.
A DataEngine is a plugin that provides access to a body of information to visualizations in a standardized manner. Each unit of data is called a "source", and source may be created on demand. Sources are updated either when the data changes (such as in response to a hotplug event for the devices DataEngine) or in a timed interval as requested by the visualization.
The timings and memory management of the sources are handled by DataEngine, making implementation of DataEngines trivial.
The sources themselves are organized into a list, and each source can have zero or more key/value pairs. The values are QVariants and therefore quite flexible.
DataEngines send information to visualizations via the dataUpdated(QString source, Plasma::Data data) slot that all visualizations must implement to receive updates.