1. An architecture for dynamically loading plugins, the architecture comprising: a parent context defining one or more reusable software components; and a plugin repository operable to store a first plugin and a second plugin, wherein a first child context is created dynamically when the first plugin is loaded, the first child context being associated with the first plugin, and the first child context inheriting the one or more reusable software components from the parent context.