Tag edits are only atomic if you write them to the files, but database syncing and triage currently works and somehow arbitrates even if you don't write the tags to the files.
It still only impacts a single
file. So, if it goes wrong, the damage is limited. A Media View, because they're cascading filters, can have far-ranging impacts across the entire system stemming from a
single invalid change.
I'm also really, really, really not a fan of any sync system that punts and shows a "sync conflict" dialog where the user has to pick between two possible options. That's difficult to avoid, but they are also nearly impenetrable to non-power-users. That's why Dropbox is so special. It never, ever, ever shows you one of those.
The library auto syncs every few seconds, so if you have two different people editing the exact same database entry at the exact same time it's hard, no matter what, but I'm not sure those kinds of collisions are that likely for view editing.
FWIW, other programs that have potential for these kinds of database collisions allow users to decide what to do when the logic can't figure it out (i.e. always prefer changes from x source, choose the latest change, ask me every time, etc.).
Many other applications that do this kind of thing do not have a caching database system. They use a "live" database (often in the cloud) and maybe cache content. That's fine, if you're only tracking limited sets of assets, but then you end up with dismal performance when searching and filtering hundreds of thousands of assets across multiple fields.
I didn't, and don't, intend to suggest it is impossible. I have no doubt that, if they put their minds to it, the team could figure it out. But, is it more important than other things? Not sure. That's also just one example of the kinds of issues it raises. There are also issues just deciding what way it should work. Should all clients see the same Views, for example, or would it be better to have a system where some see them one way, and other see them another? And what about Users? It opens a whole can of worms, and I suspect a bunch of us won't agree on the answers to a lot of the questions.
Again, not impossible. I'd love to see something here, but I think I'd rather see the stuff we have in this realm work in a more reliable fashion first. That is all.
Even just being able to have a button on a client that "locks" the database and allows full-scope editing would be better than being unable to make those kinds of changes on clients at all.
I think this, more modest target, is a good possibility. Some system to do essentially what I've tried to build with my scripts would be awesome. A way for a client to ask the server for read-write access, temporarily. That could be pretty solidly implemented. You do something like:
* Client sends a "give me read/write" command.
* Server forces the client to sync, and tells all other clients to sync.
* Then, once it receives replies (or they time out) it puts itself in read-only mode
* And finally it sends a notification to the requesting client, "ok, you have it, for X amount of time before your token expires."
* The client can automatically extend this time while activity is happening by sending a "re-up" command before the token expiration.
But, to do that, the server would need to know about and track the various clients. That would also be nice, but isn't currently implemented either.