Whole document tree
    

Whole document tree

Provide Architecture for Extensions and Plugins

5. Provide Architecture for Extensions and Plugins

You'll probably let other Software vendors plug extensions to your product. Since you are the author of the initial Software, is your responsability to organize it in such a way that the user can simply install the extension RPM and use it, without forcing him modify any configuration file. Is is again the famous Install-and-Use that guaratees ease-of-use.

Well, and extension is nothing more that some files in a right format (DLLs that implements the API your Software defined), put in the right folders (directories your Software looks for extensions). We can see many applications requesting the user to change configuration files to "declare" the presence of a new plugin.

The most important thing to consider in your plugin architecture is to not share files between plugins and your Software. You should provide an architecture where plugins will fully install and uninstall themselves by simply putting and removing files in specific directories, documented in you Software. Good candidates are /usr/lib/myproduct/plugins as the plugins directory, and /etc/myproduct/plugins as the plugins configuration files directory. Your Software and plugins must be sufficient inteligent to know how to find files, specially configurations, in these directories. Using this approach, no post-install procedures is required from the user, and from the plugin provider.