Computer systems are good at storing and processing data as collections of structured measurements of the world. Relational databases have evolved to be very effective at processing data.
But for most of us, our day-to-day lives revolve around information. Facts and figures are just the starting point. Information is about how we interpret the world, and the tangled web of relationships between everything in our lives.
Haplo was created because we needed a toolkit to build information applications. Traditional application frameworks were too focused on data to be able to help us.
Information Applications are software systems which enable diverse groups of users to use collections of information. These collections are built up, over time, through their day-to-day work.
We've found that information applications have distinct characteristics, and specific requirements of the technology used to build them. Here's what we've learnt.
Information does not fit into neat columns in a database. Information has a more complex and varied structure which reflects the real world it describes, and requires sophisticated tools to represent it accurately.
The fundamental building blocks of an information application are records which describe an entity. This may be "things", like people, organisations, books and documents. But these entities are also "concepts" which describe ideas and ways of thinking about the world.
Just as in the real world, everything is interrelated. These relationships are the most powerful way of describing the entities.
Information applications are capable of storing all the different types of information in an organisation: data, information, files, notes and conversation.
This makes it unnecessary to use many applications, each based around one type of information. It creates a fuller picture, by showing and searching all the related information in one place. And it removes the uncertainty caused by duplication in different systems.
Describing things comes naturally to us. Information applications take advantage of our shared understanding of how to describe things with a data model which represents information in a human way.
With a sufficiently flexible data model, descriptions can be entered in the most natural way, directly without interpretation, just by filling in a simple form. You don't have to memorise rules about how to enter data, enabling really accurate and consistent description of information.
Information moves between people as they use it in their work. They may add their interpretations, take an action, and send it on to someone else.
Information applications support the day-to-day use of information with lightweight workflow support. But unlike systems designed for a command and control organisation, they take the humane approach of letting the information control the process, rather than the process controlling the person.
An information application observes the state of the information, and prompts next actions. Any piece of information can be freely edited at any time, and the workflow adjusts accordingly.
An information application is capable of providing access to everyone who needs to use information. Instead of preventing access to information, the focus is on enabling appropriate access. This requires a permission system which is sufficiently flexible to describe what every user should be able to see and do.
This flexibility of access control, combined with a user interface that adapts to whatever subset of information is available, means that everyone in an organisation can benefit from, and contribute to, the organisation's shared knowledge.
Everything changes, whether because of external pressures, changing markets, or new opportunities. An information application is a living system which can adapt to change.
As an information application describes the world, it is inherently flexible enough to change over time and support new uses of the information. Rather than storing an interpretation of the world for a specific use, it is a collection of information which can be used for any purpose.
We created Haplo because we couldn't make information applications with anything else. By using it to build applications for our clients, we learnt more about information applications, and embedded everything we learnt into the platform.
Out of the box, Haplo provides everything you need to manage a collection of information, with no programming required.
Then, once you understand how people want to use the information, write plugins to implement the functionality which is specific to your organisation.