Extensibility Overview: Part I

JK

Jeff Key

04/21/2014

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.

Scope

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
InRule for JavaScript | inrule said: "[…] couple of weeks ago we announced availability of InRule® for JavaScript through an early adopter program. To our knowledge this is […]".
Dynamic Surveys in Dynamics CRM Part II: Managing Dependencies | inrule said: "[…] this post makes extensive references to my preceding post, Surveys in Dynamics CRM Part I: Don’t Be a Monkey With Your Survey. If you are the type of person who likes to get the full story, you should go back and read the […]".
Josh Elster said: "In the time since this post was published, I've added (via a PR) full Windows Containers example code, DOCKERFILEs and scripts. They share common ancestry with the GH Gists I posted earlier, but are more up-to-date and tested. Here's a direct link to that sub-folder: https://github.com/InRule/Samples/tree/master/Developer%20Samples/WindowsContainers Now that our Samples repository is public, feel free to file Issues if you have problems or features you'd like to see implemented. If you have something you'd like to contribute, then by all means do so! The contributor guidelines and process are listed in the root of the repository. Enjoy! I'll update the body of the post as well with this link.".