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:
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"
Examples of methods and features that vendors might use to make their software user extensible, in loose order of frequency:
- Configuration: quantitative values used to modify application execution
- Data Modeling: specifying the format of managed data
- 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.
-
Sandboxed Python in .NET
January 9, 2022
-
Hacker News Thread: Is no-code a future of web development?
January 5, 2022
-
Airtable Scripting
January 5, 2022
Experiments
- Denina: I built a generalized scripting engine designed for text processing. I made an implementation for (then) Episerver CMS. I would do it much differently today, but it was an interesting attempt. See Examples
- Using Server-Side JavaScript in Optimizely Event Handlers: I built a POC to execute server-side JavaScript to handle Optimizely Content Cloud events.
- Logical Processor Abstraction: An very preliminary investigation into building a universal abstraction for logical processing in C#