|Research, training, consultancy and software to reduce IT costs|
Truly general-purpose applications do not need complicated metadata. They need a simple model that allows metadata to be created dynamically.
General-purpose applications that can be configured to deliver multiple solutions are very valuable because they enable IT solutions where there is not enough time, money, justification, political will, expertise or clarity for a packaged solution or a custom application.
To be able to deliver multiple solutions, applications need to be able to define the data used by each solution. This usually leads to constraints because the application can only ever manipulate definitions of data that the designer has thought to make available. To overcome this, some applications open up the internals of the application as an object model that the application can modify. This makes setting up solutions complicated and undermines the advantages of a general-purpose application.
I think there is a way to overcome these problems.
The key to is to make the metadata on which the application is built very simple, and yet capable of expressing any solution requirement, including the definition of the metadata itself. I would call this dynamic metadata, because the metadata can represent anything a solution needs.
This requires that the real data and metadata can be expressed in the same way. There are techniques for doing this, such as triple stores and related technologies such as resource description framework (RDF).
On top of this general-purpose data structure, a general-purpose application requires a general-purpose engine that uses the metadata to manage the data and to interact with the user. The core of this is simple. For example, metadata might define that A is of type B, and that things of type B have data X and Y. The engine then knows that when it displays A, it should show A's X and Y value, and when A is edited it should ask for a value for X and Y.
By putting the data and metadata in the same structure, the metadata can be embellished as much as required to create a usable solution, adding more data to guide the engine how to manage data and interact with the user. The application can support multiple levels of metametadata, data which defines data which defines data, until there are simple abstractions for users to create solutions.
This approach can deliver fully on the requirements for a general purpose application. It can store any data, and support any type of interaction with the user. It uses only a small set of concepts. The same concepts and application can be used to build solutions and to use the solutions, so there is no need for a separate development tool. There is no complicated object model to learn.
This all sounds horribly theoretical, and it would require a lot of thought to turn this idea into a practical solution. However, I know it is possible because we have built one. We have, almost accidentally, created a general-purpose application that can deliver database solutions, content management solutions, survey and evaluation solutions and reporting solutions, and pretty much anything else you can imagine.
Next week I will tell the story of why we built it, and what we intend to do with it.Next: The MA2 story 1: why we bet the farm
Minimal IT: research, training, consultancy and software to reduce IT costs.