1. A method comprising: receiving, by one or more processors, information identifying a plugin to be loaded; determining configuration information for the plugin; based on the configuration information, generating a data structure which represents both the forward and reverse dependencies; analyzing the data structure to determine an ordered list of loadings; loading the individual components based on the ordered list of loadings; and indicating that the plugin is ready for execution.