Incremental builds

Note: this request should be raised as a issue at https://github.com/dita-ot/dita-ot/issues if the need still exists. 

Issue owner:
Steve Anderson <steveo at member dot fsf dot org>

Statement of problem or objective:

Problem:
Changing just one source file (topic or map) requires rebuilding the entire information set.   For large information sets, this can be a very time consuming process.

Objective:
Process the minimum number of files to generate valid output.

Is this architecture, function, fix, or other?
This will probably require changes to the architecture, functions, and xslt stylesheets.

Goals of this proposal:
Make it easier for large information sets to be processed.

Use cases:

Using a large information set of, for example, 20 maps and 1,000 topics.

  1. Change the title of one topic and rebuild.  Only the changed topic should be rebuilt.
  2. Add a navtitle on a  topicref in a map, set locktitle="yes", and rebuild.  What files need to be rebuilt?
  3. Add a topicref to a reltable and rebuild.  Both topics should be rebuilt.
  4. Add a conref to one topic and rebuild.  Only the changed topic should be rebuilt.
  5. Add an exiting image to a topic and rebuild. Only the changed topic should be rebuilt.
  6. Add a new image to a topic and rebuild. The new image should be added to the output.  Only the changed topic should be rebuilt.
  7. Change the image files on disk without changing the image reference in the topic. Rebuild should pick up the new images. (Important for replacing filler screenshots with final, etc.)
  8. Delete a topic, don't remove dependencies, and rebuild   Build should fail
  9. Delete a topic, remove all dependencies, and rebuild.  Only topics with dependencies should be rebuilt.
  10. Move an existing topicref from one map to another and rebuild.  Depends on child parent relationships.  A limited number of files should change.
  11. Add a new map with an existing topic but not reltable.  Rebuild.  No changes?
  12. Add a new map with an existing topic and a reltable that includes a new from this topic to another existing topic.  Rebuild.   Affected dependent files should be rebuilt.
Incremental build scratch pad for considerations

Stakeholders:
List of those who request or need the proposed item.

Interested parties:
Erik Hennum ( ehennum AT us DOT ibm and so on)
Deborah Pickett ( deborah UNDERSCORE pickett AT moldflow.com )

Candidate solutions:
  1. Dependency maps from Erik Hennum (with an addendum about build on request)
  2. Externalized dependencies

Proposed design:

Note: All design discussions should occur on the dita-ot-developer list at the dita-ot sourceforge site.
XML.org Focus Areas: BPEL | DITA | ebXML | IDtrust | OpenDocument | SAML | UBL | UDDI
OASIS sites: OASIS | Cover Pages | XML.org | AMQP | CGM Open | eGov | Emergency | IDtrust | LegalXML | Open CSA | OSLC | WS-I