The above illustration shows Steps 1-4 in the process of loading a module with dependencies from a Web server. Assume that none of the modules are on the local file system when a request to load C is made. The above example neglects to mention that module dependencies are not limited to modules written in the same language. Thus far, we have considered the mechanics of loading plugins into memory, but we have yet to state what they do once loaded. Internally driven plugins launch one or more threads of execution.
Event driven plugins attach themselves to existing threads of execution.
Finally, externally driven plugins do neither, but are utilized in some other way by the system, i.e. a math library. Knowing which kind of plugin to develop and when takes a little experience, but it should become easy over time. We hope you now have a precursory understanding of how Bamboo works. Obviously, we omitted many details and features, but these general ones provide a broad description of the system. Allowing an application to be dynamically-extensible is good software engineering for several reasons.