Every single possible feature in the multiverse is “crucial” for someone, believe me.
(Just take a browse through the rest of the Wish List forum.) Collaboration may be important for some writers, but for writers working individually - which I admit is the paradigm I had in mind when creating Scrivener - this isn’t a fundamental feature. The ability to have all the documents in one place for a first draft and then compile them for sending to an editor or for publication works for most use-cases, and for the vast majority of Scrivener’s published authors. I’m not saying that in the long run I don’t want to provide support for those who do collaborate, but I am saying that, regrettably, it’s not a high priority right now and that, as it is a lot more complicated to implement than most users realise, if it ever does get included then it will only be added when I feel it can be done right. Things like this take time to “brew”, but also I have to be enthusiastic about coding such a big feature either because it’s something I want myself, or because I believe it is something that belongs in Scrivener and the coding challenge it presents interests me. At the moment, I have no time for coding challenges, as the list of things that genuinely has to be done before Scrivener 2.0 can be released is too long to allow for them. So, although I’m happy to hear suggestions and will discuss the if I get the time, bear in mind that I won’t be able to take on board any suggestions regarding collaboration for at least six months or more.
I had already considered the “UUID” idea you suggest, and in fact I started implementing it but dropped it for now (although I may resume work on it post-2.0). It’s pretty ugly, to be honest. Scrivener uses internal IDs to represent documents, and for this approach to work these numbers would need to be incorporated into the exported RTF, e.g:
[ID:198] Title
Text blah blah
[ID:245] Another Title
Text etc etc
The problems here aren’t trivial. You can’t “hide” the ID numbers in the RTF, as I placed them in custom RTF syntax any external RTF editor would wipe them as soon as someone else edited and saved the file. If someone deletes an ID, then the text could end up getting applied to the wrong document when reimported, ignored completely, or created as a new document. A snapshot would need taking of old text, of course, although that’s not a problem. Scrivener would have to try to update titles, but again the end-user could have done all sorts of things to mess this up. But the biggest problem is the one you bring up, the fact that it wouldn’t be possible to restructure the draft to match a reordered document of this type, because there is no way to convert a flat list of documents into a hierarchical one (without flattening it entirely).
Moreover, although this sort of solution would be a nice solution for those who wanted to take their work to a different platform or to send it to a user without Scrivener, it doesn’t solve the issue of editing a single Scrivener file on multiple machines at the same time, which is what the op requested. I’d also argue that it might be more productive just to compile the draft and have the editor make coloured notes and then return it to you so you could incorporate them into the draft manually for this sort of thing, as you would need to evaluate each comment anyway. (Because the export-and-reimport solution would work better for having work edited rather than collaboration.)
As I say, collaboration features definitely aren’t coming with the first version of 2.0. Still, I’m happy to hear all suggestions for possible future consideration. I may not have the time to discuss each one individually, but I do promise to read them all and consider how they would work.
All the best,
Keith