Structuring an application as a well-designed host framework and a set of plug-ins has many benefits to you as an application developer:
You can implement and incorporate application features very quickly.
Because plug-ins are separate modules with well-defined interfaces, you can quickly isolate and solve problems.
You can create custom versions of an application without source code modifications.
Third parties can develop additional features without any effort on the part of the original application developer.
Because plug-ins are language independent, you can reuse legacy code.
End-users also benefit from using applications with a plug-in architecture:
They can customize feature sets to particular workflows.
They can disable unwanted features, potentially simplifying the application’s interface, reducing memory footprint, and improving performance.