User Extensible Software

This is a space to explore some concepts behind software that can be extended and modified by the user.

Roughly speaking, this is my working definition of “User Extensible Software” or UES:

Software that a non-developer can make function differently and extend in ways not planned for by the original developers, without access to nor modification of the source code or anything else that runs in the main execution process.

Or, more plainly, user extensibility seeks to answer the common question:

How much can we do without a developer?

First, it’s key to understand this point:

What is "Root Access"?

Now, knowing that, let’s talk about how UES is different than “normal” extensibility, then some definitions that make it easier to discuss.

"Extensibility" vs. "User Extensibility"

definitions

Examples of methods and features that vendors might use to make their software user extensible, in loose order of frequency:

  • config: quantitative values used to modify application execution
  • Data Modeling: specifying the format of managed data
  • Structured Document Templating: providing executable code used by the main execution to create output
  • Batch Processing (STUB): a system where-by “jobs” can execute, either as scheduled or on-demand processes
  • Import / Export (STUB): tools to allow the aggregate movement of data into or out of the system
  • Data Filtering (STUB): progressively modifying data which is acted upon by the software
  • webhooks (STUB): executing HTTP calls to external resources in response to internal events
  • Remote APIs (STUB): endpoints which can be accessed from outside the environment in order to retrieve or modify data
  • scripting (STUB): providing code which is executed in a computational sandbox, with the results incorporated into the main execution
  • Query Tools (STUB): providing tools to form queries and filters
  • External Event Bus (STUB): external tools that can respond to system event to perform tasks

Unintegrated Notes

Random notes and links that I haven’t integrated into any other content in this section. I’ll might remove some of these as I evaluate them and move them into other resources.

Experiments