We thus, need a principled way of configuring and reconfiguring these components without loosing consistency, or at least, not allowing losses in consistency to cause widespread damage.
My previous research and experience makes me believe that to be able to do a good job in configuring and reconfiguring components dynamically we will need to maintain an explicit (reified) representation of the dependencies among components. This will allow the system to reflect about its own structure and thus process reconfigurations properly, cascading configuration-related events to dependent components that need to be notified about the changes and maybe reconfigured themselves.
Also, this configuration changes won't be limited to the applications running on the ULS. The infrastructure itself will need to be reconfigurable, either to evolve or to adapt to changes in the environment. The middleware will need to be reconfigurable and adaptive.
Maybe a way to achieve this is to build the infrastructure as a microkernel that has only the ability to load new infrastructure components and reconfigure the existing ones. Everything else would be implemented as infrastructure components on top of this microkernel.
-- FabioKon