Extensibility Overview: Part I
Wikipedia defines extensibility as:
“…a system design principle where the implementation takes future growth into consideration. It is a systemic measure of the ability to extend a system and the level of effort required to implement the extension. Extensions can be through the addition of new functionality or through modification of existing functionality. The central theme is to provide for change – typically enhancements – while minimizing impact to existing system functions.”
That’s a mouthful. In this post I’ll present an overview of extensibility and provide some real-world examples. Subsequent posts will dive deeper into InRule’s authoring extensibility.
Empowering the user
Most applications are configurableto some degree. They allow the user to change the appearance of the application and sometimes even the behavior, usually via a settings or options window. But application developers can only make so many features customizable – and many users and companies have requirements unique to them.
Extensibility allows third-party developers to enhance the functionality of applications they didn’t write. In companies this is often realized with domain-specific plug-ins for Microsoft Office applications, SharePoint web parts and so on. The general public most frequently sees them in web browser extensions, such as AdBlock, LastPass and many more.
The type of application and the services it provides to third-party developers determines the level of extensibility.
- Microsoft Word is a word processing application with a rich set of services. Extension developers can do a great deal in this environment with extensions, but at the end of the day the functionality is document-centric.
- Desktop web browsers also provide a rich set of services. Extension developers can write extensions that work with all websites (such as AdBlock), or focus on a single one (Gmail Offline). While the reach of web browsers is considerably larger than Word’s document model, extending third-party web applications is mostly limited to modifying the user interface.
- Microsoft Visual Studio is a Windows application framework that provides a wealth of services for writing Windows applications. It is the primary means for delivering its programming development tools and may also be used solely as an application host. For example, Visual Studio knows nothing about C# or the .NET Framework. Microsoft ships extensions with most versions of Visual Studio that provides the C# functionality.
The last point is important and worth repeating: Visual Studio, without extensions, “does” nothing. Unlike Microsoft Word and desktop browsers, which allow extensions to enhance functionality, Visual Studio depends on extensions to provide functionality. This results in a much more interesting world, where application functionality is boundless and extensions can interoperate with other extensions. For example, ReSharper (a very popular developer tool for .NET) is a Visual Studio extension that enhances the C#, VB.NET and ASP.NET extensions (if they’re installed).
InRule irAuthor extensibility
InRule’s rule authoring tool, irAuthor, is most like Visual Studio. It is a shell and rich set of services that make it very easy to write rule-enabled applications. Like most versions of Visual Studio, it ships with a core set of extensions that provide rich functionality out of the box as well as full access to these services for third-party developers. There is no “secret sauce” – irAuthor was written with InRule’s SDK, allowing third party developers to:
- Add custom functionality
- Modify existing functionality
- Remove existing functionality
In short, irAuthor’s extensibility model allows customers to very easily change the tool to meet their needs, if desired, oftentimes negating the need for ad-hoc utilities or even custom authoring environments.
Stay tuned for my next posts which will cover:
- irAuthor’s extensibility model and services
- Real-world examples of irAuthor extensions