Logging, monitoring and versioning objects in an information system can help
to
improve both, the usability for its users, and the quality of stored
information. While gain in aspects of usability is rather obvious to
most people (in particular to the users of such a system), gain in
aspects of
quality is less known. Despite that the described side-effect can be
observed in
many cases, where transparency and mechanisms of mutual control can
increase the quality of information. This may result from an
interesting
group dynamic process inside the group of information providers and
consumers. This process seems to be driven by the pursuit of
acceptation an individual seeks to get from his very close and even
very wide social environment.
At information systems this process can be easily observed in
teams, small companies, or departments, where users can see which user
created, modified or deleted which information, or vice versa.
Intranets, knowledge systems, versioning systems in
software-development, and many other systems already benefit from this
process.
There are experiences with this phenomenon also in global scale systems
where users can be (more or less theoretically) any human being on our
planet. The
world-wide success of open-source software development like Linux in
dozens of thousands of projects is, not at least, based on the pursuit
of acceptation a programmer wants to receive from other programmers
with good reputation. These principles have also enabled an
overwhelming
success of non-software community projects. Wikipedia is not the only
proof of this (but maybe one of the most famous examples). Even here
this process seems to work, although we can
suppose that there is also some kind of philanthropic motive strongly
involved, while usually in commercial environments this additional
motive is missing.
I made a first pattern on this topic, which covers this issue on a
very straight way. The 'Last log' pattern
provides only some log
information on creation, deletion and the last modification of an
object (or of its assocations). I made this pattern for an inquired
project to fulfill customer's requirements. After discussing this
pattern with the customer (where I stressed that there is no historical
logging of past modifications), demand raised for a pattern that covers
also the entire history of logged modifications. This 'Historical log' pattern
also enables multiple creation and deletion of objects (by a restoring
mechanism which I will describe in a seperate paper later). Comments, questions and
suggestions are welcome.
Note: More patterns may follow, which not only cover logging, but also versioning and monitoring of information.