In addition to books, we have release notes for all products, published every six weeks for each product. The release notes bookmaps share common topic files within product families. Both books and release notes share common company-wide template topics. In addition, some topics are reused across books and release notes with conditionalization.
The takeaway from all this is that if a file or directory is renamed, it could affect one or more books, one or more release notes, or some combination of all of it.
If I add all ~100 books (but not release notes) to Master Files, reference adjustment after a file/directory rename takes an average of 80 seconds, which is not practical.
In addition, master files consume entries in the DITA Maps Manager context, which is quite problematic. We have issue EXM-45202 filed for this.
Next I tried working sets. The documentation on working sets is brief and left me with questions:
- Does the "working sets" feature require Master Files to be enabled?
- Does the "working sets" feature require the set contents to be a subset of the Master Files list?
- Where is the working set configuration stored? (I don't see it in the .xpr file.)
I noticed that the Resource Hierarchy/Dependencies feature has similarly long runtime to renaming via Master Files, so perhaps they both use a similar file-scanning approach. Interestingly, both complete quickly for unreferenced files *not* in any maps - does this mean map-to-topic references are cached, but topic-to-topic references are not?
With release notes maps being created for 50-ish products every six weeks, any solution that requires maps to be manually added or enumerated in a list is suboptimal.
Can Oxygen have a feature that comprehends all .ditamap files in the project and efficiently handles renaming reference adjustment (and dependency analysis?) without manually being fed information? (I know this is not easy, or it would already be done!)
A random thought to finish up:
I see that Oxygen already indexes content via Apache Lucene. Are href values included in the indexing? Maybe there is some clever trick to perform fast leaf filename or directory name matches (just "topic.dita" or "dirname") that can then invoke more expensive content-aware analysis to see if there is a dependency?