To be frank, the real problem is that much of the metadata maintained by Alfresco
is primarily useful for Alfreco's own book-keeping and nothing else really.
For example, the decision to implement even basic services such as locking using
aspects on nodes means that the modified date maintained by Alfresco will never
be any use at all to anybody. Lock a Node (e.g. by creating a working copy) and
then release the lock and the system considers that you have 'modified' the node.
Actually the situation is worse: it's impossible to know the real modification time of
any node on the system when you are trying to decide whether, for instance, it is
synchronised with another node. The normal way to do this would be to lock the
node and then check its modification time (because otherwise it could be modified
between being checked and being locked for any subsequent operation). In Alfresco,
however, the modified time would now be the just time that you locked the node!
In summary, the 'modified' property is pretty much useless for for anything you might
consider doing with it.
This can be somewhat alleviated by careful use of transactions,
but this probably requires deeper involvement with the source code than most people
using or customising the system would want. At the level of, say, JavaScript, one
simply has to hope that operations are wrapped in a transaction which prevents
anything unwanted occurring, but there doesn't appear to be a public spec (other
than the source code) for how this is done, so itnis in any case rather difficult to
be sure what is your 'contract' with the repository as regards asynchronous changes.
It's rather disappointing that Alfresco provides, in this respect, effectively no
support at all to normal operations: different filesystems do vary in the types
of access and modification events whose datestamps they record in a file's metadata,
but imagine trying to use a filesystem which effectively records none of these.