The Malleable Software Challenge

Ken Webb 2010-05-12T13:06:21Z

If software is malleable, then it should be possible to transform it in all sorts of ways without significant degrading or breaking.

The Malleable Software Challenge (MSC)

Start a simple Hello World Xholon application. While it's running, transform it gradually into something completely different. And then transform that new thing into yet another new thing, or continue to add new functionality to the original new thing. The ultimate goal is the ability to continuously transform running software as the requirements evolve. For now, the challenge is only about software that is all running in the same Java virtual machine.

Taking the challenge online

A good test for Xholon would be to run a simple Hello World application online, and let anyone transform the application while it's running. At present, it would fail fairly quickly because it doesn't handle some of the errors associated with invalid XML and other content when dynamically injected into a running Xholon application.


I will run a number of trials with Xholon to get a better idea of what malleable software is in the context of Xholon. In all of these trials, a Xholon application is already running, and the application is somehow modified or enhanced at runtime.

Imagine that the Xholon application is some critical control component that can't be stopped. New features can only be built on top of whatever is already there, and must not interfere with existing functionality. As with biological organisms, the software must be viable at every moment, or the application will become ill or even die.

MSC Trial 1 Add a neutral subtree to a Xholon application at runtime.

MSC Trial 2 Delete a node in an application.

MSC Trial 3 Replace a node with an enhanced or alternative version of the node.

MSC Trial 4 Add a node that interacts with existing nodes.

MSC Trial 5 Weave two separate concerns together.

MSC Trial 6 Add multiple new features to a Xholon application while it's running.

return to main page