OASIS Darwin Information Typing Architecture (DITA) TC

Expand all | Collapse all

some comemnts on the Draft DITA 1.2 architecture spec.

Eliot Kimber

Eliot Kimber07-01-2009 17:02

Eliot Kimber

Eliot Kimber07-01-2009 18:14

  • 1.  some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 06-30-2009 02:37
    
    
    
    
    
    
    
    
    
    
    

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 2.  Small DTD bug fix - value list of Note

    Posted 06-30-2009 14:47
    
    
    
    
    
    
    
    We have extended the type value list of the note element for DITA 1.2 according to ANSI Z535 with the values NOTICE, CAUTION1, CAUTION2 and WARNING (DANGER and CAUTION have already been available).
    According to the announcements of ANSI, they are going to combine CAUTION Level 1 and CAUTION Level 2 für their 2011 release.
     
    To take this attempt into account in DITA 1.2 we can remove the values CAUTION1 and CAUTION2 from the type value list of note, as the values CAUTION and NOTICE will fulfill the requirements well enough.
     
    Best regards
     
    Chris
     

     


    Von: Ogden, Jeff [mailto:jogden@ptc.com]
    Gesendet: Dienstag, 30. Juni 2009 04:37
    An: dita
    Betreff: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 3.  RE: [dita] Small DTD bug fix - value list of Note

    Posted 07-05-2009 11:32
    
    
    
    
    
    
    
    Hi all,
     
    Does anyone object to making this change to the 1.2 DTDs and schema at this time? IMO making this change for 1.2 will prevent folks from using deprecated values later when we fix this in 1.3 (if we don't fix it now). The impact on the spec is marginal -- only changes to the list of values and minor changes to the documentation.
     
    I would like to propose this change for approval at this week's TC meeting, so any discussion on list would help us get to a timely decision.
     
    Gershon


    From: Christian Kravogel [mailto:christian.kravogel@seicodyne.ch]
    Sent: Tuesday, June 30, 2009 5:47 PM
    To: 'dita'
    Subject: [dita] Small DTD bug fix - value list of Note

    We have extended the type value list of the note element for DITA 1.2 according to ANSI Z535 with the values NOTICE, CAUTION1, CAUTION2 and WARNING (DANGER and CAUTION have already been available).
    According to the announcements of ANSI, they are going to combine CAUTION Level 1 and CAUTION Level 2 für their 2011 release.
     
    To take this attempt into account in DITA 1.2 we can remove the values CAUTION1 and CAUTION2 from the type value list of note, as the values CAUTION and NOTICE will fulfill the requirements well enough.
     
    Best regards
     
    Chris
     

     


    Von: Ogden, Jeff [mailto:jogden@ptc.com]
    Gesendet: Dienstag, 30. Juni 2009 04:37
    An: dita
    Betreff: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 4.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 06-30-2009 17:45
    
    
    
    
    
    
    
    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 5.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 06-30-2009 17:52
    
    
    
    
    
    
    
    
    
    
    
    

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?


    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 6.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 06-30-2009 18:02
    
    
    
    
    
    
    
    I'm not sure we can really do that, since specialization would imply another level of hierarchy - the creation of a new root document-type element specialized from this one.
     
    Rather it seem like in this "Specialization" section we need to cover four distinct levels of possible implementor intervention, ranging from the least divergent from the "normative" base we deliver to the most:
    1. just a shell
    2. contraints
    3. specialization
    4. customization
    I've already suggested in my comments we consider revising this section as such.

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?

    -----Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Monday, June 29, 2009 7:37 PM
    To: dita
    Subject: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 7.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 06-30-2009 18:24
    
    
    
    
    
    
    
    
    
    
    
    

    I don’t know if there is a less “drastic” and more appropriate term than “customization”, but I’m sure that “specialization” isn’t the right word to use when someone creates a new document type shell.  Specializations create new DITA types. Modifying a document type shell doesn’t create a new DITA type, but just assembles existing DITA types for use.  One of the goals of the constraints proposal as I remember it was to allow customization without requiring specialization.

    I’ve always thought of “specialization” as being a subset of the larger class of customizations:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Customized Document type shells

    1.3)  Customized Processing

    1.3.1) Transformations

    1.3.2) Stylesheet processing/formatting

    Part of the problem here may be that we don’t have good names for 1.2 and 1.3.

        -Jeff

                                   

     

    From: JoAnn Hackos [mailto:joann.hackos@comtech-serv.com]
    Sent: Tuesday, June 30, 2009 1:52 PM
    To: Dana Spradley; Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?


    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 8.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 06-30-2009 18:35

    The existing definitions are here:
    http://docs.oasis-open.org/dita/v1.1/OS/archspec/integrate.html
    http://docs.oasis-open.org/dita/v1.1/OS/archspec/customize.html

    Michael Priestley, Senior Technical Staff Member (STSM)
    Lead IBM DITA Architect
    mpriestl@ca.ibm.com
    http://dita.xml.org/blog/25



    "Ogden, Jeff" <jogden@ptc.com>

    06/30/2009 02:22 PM

    To
    "JoAnn Hackos" <joann.hackos@comtech-serv.com>, "Dana Spradley" <dana.spradley@oracle.com>, "dita" <dita@lists.oasis-open.org>
    cc
    Subject
    RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.





    I don’t know if there is a less “drastic” and more appropriate term than “customization”, but I’m sure that “specialization” isn’t the right word to use when someone creates a new document type shell.  Specializations create new DITA types. Modifying a document type shell doesn’t create a new DITA type, but just assembles existing DITA types for use.  One of the goals of the constraints proposal as I remember it was to allow customization without requiring specialization.
     
    I’ve always thought of “specialization” as being a subset of the larger class of customizations:
     
    1)      Customization
    1.1)  Specialization
    1.1.1)       Structural Specialization
    1.1.2)       Domain Specialization
    1.2)  Customized Document type shells
    1.3)  Customized Processing
    1.3.1) Transformations
    1.3.2) Stylesheet processing/formatting
     
    Part of the problem here may be that we don’t have good names for 1.2 and 1.3.
     
        -Jeff
                                   
     
    From: JoAnn Hackos [mailto:joann.hackos@comtech-serv.com]
    Sent:
    Tuesday, June 30, 2009 1:52 PM
    To:
    Dana Spradley; Ogden, Jeff; dita
    Subject:
    RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

     
    Should not we always refer to such changes as “specializations” rather than “customizations”?
     
    JoAnn Hackos PhD
    President
    Comtech Services, Inc.
    joann.hackos@comtech-serv.com
    Skype joannhackos
     



    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent:
    Tuesday, June 30, 2009 11:46 AM
    To:
    Ogden, Jeff; dita
    Subject:
    RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

     
    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?


    Some suggestions with additions underlined and blue and deletions strikeout and red:
     

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.
    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.
    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.
    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.
    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.
     
    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..
     
     
     
     
     
    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :
     
    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.
     
     



  • 9.  Re: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 06-30-2009 18:48
    On 6/30/09 1:35 PM, "Michael Priestley" 


  • 10.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 06-30-2009 19:01
    I'm not sure we can limit cutomization to just "custom processing."
    
    Customization - that is, using the DITA architecture and reference implementation as the basis of an incompletely conformant xml application of their own design - is something some implementors are going to do.
    
    We have this section now that tries to convince them not to, or at least to limit their divergence and maintain some way of working backward into full conformance - "Limits of specialization and common pitfalls."
    
    Perhaps it should be broken out into a section on "Customization" and expanded a little.
    
    --Dana
    
    


  • 11.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-01-2009 16:32
    
    
    
    
    
    
    
    I think I'm starting to agree with you Jeff: the entire section should be called "Customization," and specialization should be considered a species of customization.
     
    So the distinction is between using a vendor implementation of DITA off the shelf and out of the box without modification - which some, perhaps many implementors are going to do - and "customizing" that vendor implementation to fit customer requirements.
     
    What this section needs to do in terms of conformance is to spell out vendor and implementor responsibilities for each kind of customization to achieve an interoperable, or at least a harmless, system (to use the RFC phraseology on conformance statements), i.e.:
    • Shells: Vendors MUST support, implementors SHOULD use
    • Constraints: Vendors MUST support, implementors SHOULD use
    • Specialization: Vendors MUST support, implementors MAY use
    • Variation (or whatever we call customization that changes some parts of the DITA vocabulary or violates some of its architectural principles, yet produces valid XML, and perhaps even valid DITA document instances): Vendors SHOULD support, implementors MAY use
     

    I don’t know if there is a less “drastic” and more appropriate term than “customization”, but I’m sure that “specialization” isn’t the right word to use when someone creates a new document type shell.  Specializations create new DITA types. Modifying a document type shell doesn’t create a new DITA type, but just assembles existing DITA types for use.  One of the goals of the constraints proposal as I remember it was to allow customization without requiring specialization.

    I’ve always thought of “specialization” as being a subset of the larger class of customizations:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Customized Document type shells

    1.3)  Customized Processing

    1.3.1) Transformations

    1.3.2) Stylesheet processing/formatting

    Part of the problem here may be that we don’t have good names for 1.2 and 1.3.

        -Jeff

                                   

     

    From: JoAnn Hackos [mailto:joann.hackos@comtech-serv.com]
    Sent: Tuesday, June 30, 2009 1:52 PM
    To: Dana Spradley; Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?

    -----Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Monday, June 29, 2009 7:37 PM
    To: dita
    Subject: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 12.  Re: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-01-2009 17:02
    On 7/1/09 11:33 AM, "Dana Spradley" 


  • 13.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-01-2009 17:56
    
    
    
    
    
    
    
    
    
    
    
    

    Dana,

    I think what you outline makes a lot of sense.  But the DITA specification doesn’t really make a distinction between vendors, implementers, and end user authors. And I’m not sure we should treat these classes of folks differently in the specification. Requirements are requirements and should apply to everyone. We shouldn’t have different requirements for vendors than we do for other implementers or for authors.

    What this all points out is that one of DITA’s strong points is how customizable it is, but the fact that it is so customizable makes it harder to write an understandable and unambiguous standard. Although some might argue that using the words “standard” and “understandable” in the same sentence is a conflict to start with :-).

    Another thing that makes this hard is that the DITA TC only has the DITA Specification to work with or perhaps the DITA Specification plus some best practice documents. If we had something other than the DITA Specification such as an Implementer’s Guide or a User’s Guide that might allow us to focus the specification on true standards issues and focus the other documents on issues that are of more concern to implanters or authors. I guess some of this might be something that the DITA Adoption TC could take on, but it would be a lot of work and isn’t likely to happen soon.

    Given the recent discussions I would update my outline to look something like this:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Stylesheet processing/formatting

    But I would note that the use of “customization” above is different from the definition of customization in the DITA 1.1 spec.  In the DITA 1.1 spec. it seems as if customization, integration, and specialization are peer terms.  If we want to stick with that (we don’t have to), then we need a new word, perhaps “configuration”, and the outline might look like this:

    1)      Configuration

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Customization (stylesheet processing/formatting)

    The items toward the top of the outline are pretty tightly defined by the DITA specification. The items toward the bottom of the outline are less tightly defined or in the case of (1.3.2) Customization, perhaps undefined by the specification.

       -Jeff

    Here are the DITA 1.1 definitions:

    Customization

    When you just need a difference in output, you can use DITA customization to override the default output without affecting portability or interchange, and without involving specialization.

    For example, if your readers are mostly experienced users, you could concentrate on creating many summary tables, and maximizing retrievability; or if you needed to create a brand presence, you could customize the transforms to apply appropriate fonts and indent style, and include some standard graphics and copyright links.

    Use customization when you need new output, with no change to the underlying semantics (you aren’t saying anything new or meaningful about the content, only its display).

    Integration

    Each domain specialization or structural specialization has its own design module. These modules can be combined to create many different document types. The process of creating a new document type from a specific combination of modules is called integration.

    Integration is accomplished using a document type shell, which defines the modules to be integrated and how they will be integrated. Integration defines both what topic types and domains will be allowed in the document type, and how the topic types will be allowed to nest.

    The module for a specific type should contain only the declarations for elements and attributes that are unique to that type, and should not embed any other modules. The shell should contain no markup declarations, and should directly reference all the modules it requires. Nesting shells or nesting modules (having shells that embed other shells, or modules that embed other modules) is discouraged since it adds complexity and may break some tools. Sharing between document types should be accomplished through shared modules, not through direct reference to any other document type. Dependencies between modules should be satisfied by the integrating shell, not through the module itself.

    What is specialization?

    Specialization allows you to define new kinds of information (new structural types or new domains of information), while reusing as much of existing design and code as possible, and minimizing or eliminating the costs of interchange, migration, and maintenance.

    Specialization is used when new structural types or new domains are needed. DITA specialization can be used when you want to make changes to your design for the sake of increased consistency or descriptiveness or have extremely specific needs for output that cannot be addressed using the current data model. Specialization is not recommended for simply creating different output types as DITA documents may be transformed to different outputs without resorting to specialization (see Customization).

    There are two kinds of specialization hierarchy: one for structural types (with topic or map at the root) and one for domains (with elements in topic or map at their root, or the attributes props or base). Structural types define topic or map structures, such as concept or task or reference, which often apply across subject areas (for example, a user interface task and a programming task may both consist of a series of steps). Domains define markup for a particular information domain or subject area, such as programming, or hardware. Each of them represent an “is a” hierarchy, in object-oriented terms, with each structural type or domain being a subclass of its parent. For example, a specialization of task is still a task; and a specialization of the user interface domain is still part of the user interface domain.

    Use specialization when you are dealing with new semantics (new, meaningful categories of information, either in the form of new structural types or new domains). The new semantics can be encoded as part of a specialization hierarchy, that allows them to be transformed back to more general equivalents, and also ensures that the specialized content can be processed by existing transforms.

    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Wednesday, July 01, 2009 12:33 PM
    To: Ogden, Jeff; JoAnn Hackos; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I think I'm starting to agree with you Jeff: the entire section should be called "Customization," and specialization should be considered a species of customization.

     

    So the distinction is between using a vendor implementation of DITA off the shelf and out of the box without modification - which some, perhaps many implementors are going to do - and "customizing" that vendor implementation to fit customer requirements.

     

    What this section needs to do in terms of conformance is to spell out vendor and implementor responsibilities for each kind of customization to achieve an interoperable, or at least a harmless, system (to use the RFC phraseology on conformance statements), i.e.:

    • Shells: Vendors MUST support, implementors SHOULD use
    • Constraints: Vendors MUST support, implementors SHOULD use
    • Specialization: Vendors MUST support, implementors MAY use
    • Variation (or whatever we call customization that changes some parts of the DITA vocabulary or violates some of its architectural principles, yet produces valid XML, and perhaps even valid DITA document instances): Vendors SHOULD support, implementors MAY use

     


    I don’t know if there is a less “drastic” and more appropriate term than “customization”, but I’m sure that “specialization” isn’t the right word to use when someone creates a new document type shell.  Specializations create new DITA types. Modifying a document type shell doesn’t create a new DITA type, but just assembles existing DITA types for use.  One of the goals of the constraints proposal as I remember it was to allow customization without requiring specialization.

    I’ve always thought of “specialization” as being a subset of the larger class of customizations:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Customized Document type shells

    1.3)  Customized Processing

    1.3.1) Transformations

    1.3.2) Stylesheet processing/formatting

    Part of the problem here may be that we don’t have good names for 1.2 and 1.3.

        -Jeff

                                   

     

    From: JoAnn Hackos [mailto:joann.hackos@comtech-serv.com]
    Sent: Tuesday, June 30, 2009 1:52 PM
    To: Dana Spradley; Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?


    Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Monday, June 29, 2009 7:37 PM
    To: dita
    Subject: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 14.  Re: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-01-2009 18:14
    On 7/1/09 12:54 PM, "Ogden, Jeff" 


  • 15.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-01-2009 21:58
    
    
    
    
    
    
    
    Hi Jeff--
     
    I'm not sure why we shouldn't distinguish between vendors, implementors, and authors in the spec.
     
    The HTML spec, for example, distinguishes between authors, users, and user agents, and imposes different kinds and levels of conformance on each.
     
    Also, I think most tools that support DITA also support XML in general - which allows for much greater customizability even than DITA.
     
    So typically if an implementor diverges from the DITA standard, but conforms to more generic XML standards, their vendor toolkit will support them.
     
    For example, the authoring/publishing tool I'm most familiar with has implemented DITA conrefs...but generically, so that any xml application can use them - and call the attribute that supports them by any name it wants to.
     
    So it seems vendors are already going beyond the call of duty to support customers who want to implement standard DITA features, but in various non-standard ways.
     
    Shouldn't the standard indicate where we acknowledge the validity of such divergence - and encourage vendors to support it - and where we absolutely don't - and mandate that vendors do not support it?
     
    --Dana

    Dana,

    I think what you outline makes a lot of sense.  But the DITA specification doesn’t really make a distinction between vendors, implementers, and end user authors. And I’m not sure we should treat these classes of folks differently in the specification. Requirements are requirements and should apply to everyone. We shouldn’t have different requirements for vendors than we do for other implementers or for authors.

    What this all points out is that one of DITA’s strong points is how customizable it is, but the fact that it is so customizable makes it harder to write an understandable and unambiguous standard. Although some might argue that using the words “standard” and “understandable” in the same sentence is a conflict to start with :-).

    Another thing that makes this hard is that the DITA TC only has the DITA Specification to work with or perhaps the DITA Specification plus some best practice documents. If we had something other than the DITA Specification such as an Implementer’s Guide or a User’s Guide that might allow us to focus the specification on true standards issues and focus the other documents on issues that are of more concern to implanters or authors. I guess some of this might be something that the DITA Adoption TC could take on, but it would be a lot of work and isn’t likely to happen soon.

    Given the recent discussions I would update my outline to look something like this:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Stylesheet processing/formatting

    But I would note that the use of “customization” above is different from the definition of customization in the DITA 1.1 spec.  In the DITA 1.1 spec. it seems as if customization, integration, and specialization are peer terms.  If we want to stick with that (we don’t have to), then we need a new word, perhaps “configuration”, and the outline might look like this:

    1)      Configuration

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Customization (stylesheet processing/formatting)

    The items toward the top of the outline are pretty tightly defined by the DITA specification. The items toward the bottom of the outline are less tightly defined or in the case of (1.3.2) Customization, perhaps undefined by the specification.

       -Jeff

    Here are the DITA 1.1 definitions:

    Customization

    When you just need a difference in output, you can use DITA customization to override the default output without affecting portability or interchange, and without involving specialization.

    For example, if your readers are mostly experienced users, you could concentrate on creating many summary tables, and maximizing retrievability; or if you needed to create a brand presence, you could customize the transforms to apply appropriate fonts and indent style, and include some standard graphics and copyright links.

    Use customization when you need new output, with no change to the underlying semantics (you aren’t saying anything new or meaningful about the content, only its display).

    Integration

    Each domain specialization or structural specialization has its own design module. These modules can be combined to create many different document types. The process of creating a new document type from a specific combination of modules is called integration.

    Integration is accomplished using a document type shell, which defines the modules to be integrated and how they will be integrated. Integration defines both what topic types and domains will be allowed in the document type, and how the topic types will be allowed to nest.

    The module for a specific type should contain only the declarations for elements and attributes that are unique to that type, and should not embed any other modules. The shell should contain no markup declarations, and should directly reference all the modules it requires. Nesting shells or nesting modules (having shells that embed other shells, or modules that embed other modules) is discouraged since it adds complexity and may break some tools. Sharing between document types should be accomplished through shared modules, not through direct reference to any other document type. Dependencies between modules should be satisfied by the integrating shell, not through the module itself.

    What is specialization?

    Specialization allows you to define new kinds of information (new structural types or new domains of information), while reusing as much of existing design and code as possible, and minimizing or eliminating the costs of interchange, migration, and maintenance.

    Specialization is used when new structural types or new domains are needed. DITA specialization can be used when you want to make changes to your design for the sake of increased consistency or descriptiveness or have extremely specific needs for output that cannot be addressed using the current data model. Specialization is not recommended for simply creating different output types as DITA documents may be transformed to different outputs without resorting to specialization (see Customization).

    There are two kinds of specialization hierarchy: one for structural types (with topic or map at the root) and one for domains (with elements in topic or map at their root, or the attributes props or base). Structural types define topic or map structures, such as concept or task or reference, which often apply across subject areas (for example, a user interface task and a programming task may both consist of a series of steps). Domains define markup for a particular information domain or subject area, such as programming, or hardware. Each of them represent an “is a” hierarchy, in object-oriented terms, with each structural type or domain being a subclass of its parent. For example, a specialization of task is still a task; and a specialization of the user interface domain is still part of the user interface domain.

    Use specialization when you are dealing with new semantics (new, meaningful categories of information, either in the form of new structural types or new domains). The new semantics can be encoded as part of a specialization hierarchy, that allows them to be transformed back to more general equivalents, and also ensures that the specialized content can be processed by existing transforms.

    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Wednesday, July 01, 2009 12:33 PM
    To: Ogden, Jeff; JoAnn Hackos; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I think I'm starting to agree with you Jeff: the entire section should be called "Customization," and specialization should be considered a species of customization.

     

    So the distinction is between using a vendor implementation of DITA off the shelf and out of the box without modification - which some, perhaps many implementors are going to do - and "customizing" that vendor implementation to fit customer requirements.

     

    What this section needs to do in terms of conformance is to spell out vendor and implementor responsibilities for each kind of customization to achieve an interoperable, or at least a harmless, system (to use the RFC phraseology on conformance statements), i.e.:

    • Shells: Vendors MUST support, implementors SHOULD use
    • Constraints: Vendors MUST support, implementors SHOULD use
    • Specialization: Vendors MUST support, implementors MAY use
    • Variation (or whatever we call customization that changes some parts of the DITA vocabulary or violates some of its architectural principles, yet produces valid XML, and perhaps even valid DITA document instances): Vendors SHOULD support, implementors MAY use

     

    -----Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Tuesday, June 30, 2009 11:23 AM
    To: JoAnn Hackos; Dana Spradley; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I don’t know if there is a less “drastic” and more appropriate term than “customization”, but I’m sure that “specialization” isn’t the right word to use when someone creates a new document type shell.  Specializations create new DITA types. Modifying a document type shell doesn’t create a new DITA type, but just assembles existing DITA types for use.  One of the goals of the constraints proposal as I remember it was to allow customization without requiring specialization.

    I’ve always thought of “specialization” as being a subset of the larger class of customizations:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Customized Document type shells

    1.3)  Customized Processing

    1.3.1) Transformations

    1.3.2) Stylesheet processing/formatting

    Part of the problem here may be that we don’t have good names for 1.2 and 1.3.

        -Jeff

                                   

     

    From: JoAnn Hackos [mailto:joann.hackos@comtech-serv.com]
    Sent: Tuesday, June 30, 2009 1:52 PM
    To: Dana Spradley; Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?

    -----Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Monday, June 29, 2009 7:37 PM
    To: dita
    Subject: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 16.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-02-2009 17:07
    
    
    
    
    
    
    
    I've started to look into some other OASIS specs, and a "Customization" or "Extensibility" section like I describe is fairly typical:
     

    http://docs.oasis-open.org/xliff/v1.2/cs02/xliff-core.html#Struct_Extension :

    At times, it may be useful to extend the set of information available in an XLIFF document by inserting constructs defined in various other XML vocabularies. You can add non-XLIFF elements, as well as attributes and attribute values. Adding elements and attributes use the namespace mechanism [ XML Names]. Adding attribute values generally involves preceding the value by an "x-" (e.g. <context context-type='x-for-engineers'>).

    Although XLIFF offers this extensibility mechanism, in order to avoid a nimiety of information and increase interoperability between tools, it is strongly recommended to use XLIFF capabilities whenever possible, rather than to create non-standard user-defined elements or attributes.

     
     

    From the very beginning, one of the goals of DocBook has been that users should be able to produce customizations that are either subsets of extensions of DocBook.

    Customization is possible in DocBook V4.x, but because of the intricacies of XML DTD syntax and the complex and highly stylized patterns of parameter entitiy usage in DocBook, it's not as easy as we would like it to be.

    In DocBook V5.0, we hope to take advantage of RELAX NGs more robust design (and it's lack of pernicious determinism rules) to make customization easier.

    Three schema design patterns get us most of the way there...

     
     

    Hi Jeff--
     
    I'm not sure why we shouldn't distinguish between vendors, implementors, and authors in the spec.
     
    The HTML spec, for example, distinguishes between authors, users, and user agents, and imposes different kinds and levels of conformance on each.
     
    Also, I think most tools that support DITA also support XML in general - which allows for much greater customizability even than DITA.
     
    So typically if an implementor diverges from the DITA standard, but conforms to more generic XML standards, their vendor toolkit will support them.
     
    For example, the authoring/publishing tool I'm most familiar with has implemented DITA conrefs...but generically, so that any xml application can use them - and call the attribute that supports them by any name it wants to.
     
    So it seems vendors are already going beyond the call of duty to support customers who want to implement standard DITA features, but in various non-standard ways.
     
    Shouldn't the standard indicate where we acknowledge the validity of such divergence - and encourage vendors to support it - and where we absolutely don't - and mandate that vendors do not support it?
     
    --Dana

    Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Wednesday, July 01, 2009 10:55 AM
    To: dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Dana,

    I think what you outline makes a lot of sense.  But the DITA specification doesn’t really make a distinction between vendors, implementers, and end user authors. And I’m not sure we should treat these classes of folks differently in the specification. Requirements are requirements and should apply to everyone. We shouldn’t have different requirements for vendors than we do for other implementers or for authors.

    What this all points out is that one of DITA’s strong points is how customizable it is, but the fact that it is so customizable makes it harder to write an understandable and unambiguous standard. Although some might argue that using the words “standard” and “understandable” in the same sentence is a conflict to start with :-).

    Another thing that makes this hard is that the DITA TC only has the DITA Specification to work with or perhaps the DITA Specification plus some best practice documents. If we had something other than the DITA Specification such as an Implementer’s Guide or a User’s Guide that might allow us to focus the specification on true standards issues and focus the other documents on issues that are of more concern to implanters or authors. I guess some of this might be something that the DITA Adoption TC could take on, but it would be a lot of work and isn’t likely to happen soon.

    Given the recent discussions I would update my outline to look something like this:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Stylesheet processing/formatting

    But I would note that the use of “customization” above is different from the definition of customization in the DITA 1.1 spec.  In the DITA 1.1 spec. it seems as if customization, integration, and specialization are peer terms.  If we want to stick with that (we don’t have to), then we need a new word, perhaps “configuration”, and the outline might look like this:

    1)      Configuration

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Customization (stylesheet processing/formatting)

    The items toward the top of the outline are pretty tightly defined by the DITA specification. The items toward the bottom of the outline are less tightly defined or in the case of (1.3.2) Customization, perhaps undefined by the specification.

       -Jeff

    Here are the DITA 1.1 definitions:

    Customization

    When you just need a difference in output, you can use DITA customization to override the default output without affecting portability or interchange, and without involving specialization.

    For example, if your readers are mostly experienced users, you could concentrate on creating many summary tables, and maximizing retrievability; or if you needed to create a brand presence, you could customize the transforms to apply appropriate fonts and indent style, and include some standard graphics and copyright links.

    Use customization when you need new output, with no change to the underlying semantics (you aren’t saying anything new or meaningful about the content, only its display).

    Integration

    Each domain specialization or structural specialization has its own design module. These modules can be combined to create many different document types. The process of creating a new document type from a specific combination of modules is called integration.

    Integration is accomplished using a document type shell, which defines the modules to be integrated and how they will be integrated. Integration defines both what topic types and domains will be allowed in the document type, and how the topic types will be allowed to nest.

    The module for a specific type should contain only the declarations for elements and attributes that are unique to that type, and should not embed any other modules. The shell should contain no markup declarations, and should directly reference all the modules it requires. Nesting shells or nesting modules (having shells that embed other shells, or modules that embed other modules) is discouraged since it adds complexity and may break some tools. Sharing between document types should be accomplished through shared modules, not through direct reference to any other document type. Dependencies between modules should be satisfied by the integrating shell, not through the module itself.

    What is specialization?

    Specialization allows you to define new kinds of information (new structural types or new domains of information), while reusing as much of existing design and code as possible, and minimizing or eliminating the costs of interchange, migration, and maintenance.

    Specialization is used when new structural types or new domains are needed. DITA specialization can be used when you want to make changes to your design for the sake of increased consistency or descriptiveness or have extremely specific needs for output that cannot be addressed using the current data model. Specialization is not recommended for simply creating different output types as DITA documents may be transformed to different outputs without resorting to specialization (see Customization).

    There are two kinds of specialization hierarchy: one for structural types (with topic or map at the root) and one for domains (with elements in topic or map at their root, or the attributes props or base). Structural types define topic or map structures, such as concept or task or reference, which often apply across subject areas (for example, a user interface task and a programming task may both consist of a series of steps). Domains define markup for a particular information domain or subject area, such as programming, or hardware. Each of them represent an “is a” hierarchy, in object-oriented terms, with each structural type or domain being a subclass of its parent. For example, a specialization of task is still a task; and a specialization of the user interface domain is still part of the user interface domain.

    Use specialization when you are dealing with new semantics (new, meaningful categories of information, either in the form of new structural types or new domains). The new semantics can be encoded as part of a specialization hierarchy, that allows them to be transformed back to more general equivalents, and also ensures that the specialized content can be processed by existing transforms.

    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Wednesday, July 01, 2009 12:33 PM
    To: Ogden, Jeff; JoAnn Hackos; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I think I'm starting to agree with you Jeff: the entire section should be called "Customization," and specialization should be considered a species of customization.

     

    So the distinction is between using a vendor implementation of DITA off the shelf and out of the box without modification - which some, perhaps many implementors are going to do - and "customizing" that vendor implementation to fit customer requirements.

     

    What this section needs to do in terms of conformance is to spell out vendor and implementor responsibilities for each kind of customization to achieve an interoperable, or at least a harmless, system (to use the RFC phraseology on conformance statements), i.e.:

    • Shells: Vendors MUST support, implementors SHOULD use
    • Constraints: Vendors MUST support, implementors SHOULD use
    • Specialization: Vendors MUST support, implementors MAY use
    • Variation (or whatever we call customization that changes some parts of the DITA vocabulary or violates some of its architectural principles, yet produces valid XML, and perhaps even valid DITA document instances): Vendors SHOULD support, implementors MAY use

     

    -----Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Tuesday, June 30, 2009 11:23 AM
    To: JoAnn Hackos; Dana Spradley; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I don’t know if there is a less “drastic” and more appropriate term than “customization”, but I’m sure that “specialization” isn’t the right word to use when someone creates a new document type shell.  Specializations create new DITA types. Modifying a document type shell doesn’t create a new DITA type, but just assembles existing DITA types for use.  One of the goals of the constraints proposal as I remember it was to allow customization without requiring specialization.

    I’ve always thought of “specialization” as being a subset of the larger class of customizations:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Customized Document type shells

    1.3)  Customized Processing

    1.3.1) Transformations

    1.3.2) Stylesheet processing/formatting

    Part of the problem here may be that we don’t have good names for 1.2 and 1.3.

        -Jeff

                                   

     

    From: JoAnn Hackos [mailto:joann.hackos@comtech-serv.com]
    Sent: Tuesday, June 30, 2009 1:52 PM
    To: Dana Spradley; Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?

    -----Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Monday, June 29, 2009 7:37 PM
    To: dita
    Subject: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 17.  Re: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-02-2009 18:58
    One key difference between DITA and DocBook is DocBook has no controlled
    extension mechanism comparable to specialization, so there is *only*
    customization with DocBook. By contrast, DITA enables configuration and
    extension and essentially disallows the type of customization DocBook
    assumes (that is, direct modification of content models, adding new,
    non-standard element types, etc.).
    
    So I continue to suggest that the features DITA provides are materially
    different from what things like DocBook provide and are not, for most part,
    customization.
    
    Cheers,
    
    E.
    
    On 7/2/09 12:07 PM, "Dana Spradley" 


  • 18.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-06-2009 16:41
    I myself could go either way Eliot - we could call the entire section either "Extension" or "Customization" - and the find section either "Customization" or "Variation," respectively.
    
    Or instead of "Variation," something that fits the case of someone basically taking DITA as the basis of constructing their own DITA-based, but more-or-less non-conforming, XML document types. Maybe "Mutation" would fit the Darwinian theme a little better...
    
    This final section could do little more than recognize the possibility that someone might do that - and its validity provided that XML standards are still met to guarantee interoperability at that level - even as we recommend against it and outline ways people can keep their document instances within a single XSL transformation of full compliance.
    
    


  • 19.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-06-2009 16:46
    typo: "and the *final* section either..."
    
    


  • 20.  DocBook vs DITA customization (was RE: [dita] some comemnts on theDraft DITA 1.2 architecture spec.)

    Posted 07-06-2009 17:25
    I agree on your characterization of the difference, Eliot - but disagree that DITA should completely disallow DocBook-style customization.
    
    Different installations have different needs. SGML and XML have a long tradition of using standard vocabularies like DocBook and DITA as the basis of customized vocabularies more closely attuned to an installation's actual content.
    
    The extension mechanisms DITA supplies are limited, and require a fair amount of overhead with little benefit to installations that support only a single flavor of DITA, and do not share their documents with other installations.
    
    While we can and should recommend their use - I don't think we can or should dictate against DocBook-style customization in the DITA standard.
    
    It only makes us look narrow, shortsighted, and a little foolish to do so.
    
    --Dana
    
    


  • 21.  Re: DocBook vs DITA customization (was RE: [dita] some comemnts onthe Draft DITA 1.2 architecture spec.)

    Posted 07-06-2009 17:39
    Unless I'm misunderstanding what you mean by "DocBook-style customization",
    I could not disagree more.
    
    That DITA disallows uncontrolled extension is the reason DITA works at all.
    The DITA standard *must* disallow it in order for DITA to be what DITA is,
    that is, a mechanism that enables blind interchange of content in a way that
    no other XML application can or does.
    
    Note that everything in DITA about modular information and topic-oriented
    writing is really not distinguishing, or for a large potential community of
    users, particularly interesting.
    
    What is distinguishing and compelling about DITA is the specialization
    feature and the attendant constraints around conref and map composition that
    enable blind interchange and interoperation of *any* conforming DITA content
    with any other conforming DITA content. That is the one aspect of DITA that
    *no other standard* offers and, without which, they all fail, to one degree
    or another, to deliver on the promise of generalized markup to enable
    interchange of content and processing. Before DITA, the idea that XML (and
    SGML before it) enabled interchange was a Big Lie because it provably didn't
    work. With DITA it works. But it works because DITA tightens the screws.
    
    That is, content that uses DITA as a base but does not conform to the DITA
    constraints *cannot be* DITA content as sanctioned by the DITA standard
    because such content *is not reliably interchanged*. Of course, within an
    enterprise or community, you are free to do whatever you want, you just
    can't call it DITA conforming if it's not DITA conforming.
    
    The point of the current text, certainly as I understood it's motivation,
    was to make it clear that things that are SOP in other XML applications are
    *absolutely not allowed* in DITA because they break interchange and
    operability but that the TC recognizes there are practical reasons for doing
    those things within your own purview and we just want to be clear that,
    having done those things, what you have is not conforming DITA content.
    
    Cheers,
    
    E.
    
    On 7/6/09 12:26 PM, "Dana Spradley" 


  • 22.  RE: [dita] Re: DocBook vs DITA customization (was RE: [dita] somecomemnts on the Draft DITA 1.2 architecture spec.)

    Posted 07-06-2009 18:33
    I don't think we're fundamentally in disagreement, Eliot - it's more a matter of tone and nuance.
    
    I do disagree, though, that DITA has nothing really distinguishing to offer people who aren't interested in blind interchange. DITA has a great deal to offer someone shopping around for a standard to base their customization on - not only the topic orientation you mention, but code reduction through class attributes tracing element relationships, a well developed element and attribute vocabulary, content-based tables, conrefs, maps, etc. and authoring and publishing tools that support these features in an agnostic fashion, without requiring full DITA conformance.
    
    I think we limit DITA's market acceptance by language in the specification that "tightens the screws," as you say, on people considering DITA who see these features' value, but who see little or no value in their particular case for blind interchange.
    
    As you say, "Of course, within an enterprise or community, you are free to do whatever you want, you just
    can't call it DITA conforming if it's not DITA conforming."
    
    That's all I'm really asking for right now, I think - recognition in the standard that people may choose to apply it in this fashion - the way that most other OASIS standards do, through a section that glances at true customization at the end.
    
    Long term, though, perhaps we should revisit the issue of the cost that strict conformance in support of blind interchange and round-trip generalization places on the architecture and people who adopt it, and consider loosening some requirements and turning them into recommendations or making them entirely optional, or defining a "loose" version of DITA that does this. 
    
    I wonder where members of the Adoption Committee stand on this issue? It seems reasonable to allow DITA to be different things to different people to a certain extent.
    
    --Dana
    
    


  • 23.  RE: [dita] Re: DocBook vs DITA customization (was RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.)

    Posted 07-07-2009 10:58
    Hi Dana,
    
    While I could take your question to the DITA Adoption TC, this is not something anybody has brought up to-date. The folks on the Adoption TC appear to be in favor of the rules DITA enforces. I tend to agree with Eliot that loosening DITA would undermine the rationale behind the whole concept. I don't see that keeping the screws tight would lead to folks not adopting DITA. In fact, the opposite is true. I've seen first-hand projects where folks have claimed their content to be either DocBook or DITA compliant, and in these cases they were not at all compliant or interchangeable with the standard they claimed to be in compliance with. I had to fix the content in order to process it with the other content that was compliant. These were projects where different organizations shared content, for instance an OEM vendor providing content for integration into another vendor's solution.
    
    One of the things the Adoption TC is working on is a compliance article and test suite folks can use to check whether their DITA implementation is compliant with the standard (or to test how compliant they are). This is work in progress and we are far from ready with it yet, but if we loosen the screws I fear the whole compliance thing may just crumble.
    
    Gershon
    
    


  • 24.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-02-2009 19:48
    
    
    
    
    
    
    
    
    
    
    
    

    Dana wrote:

    > I'm not sure why we shouldn't distinguish between vendors, implementers, and authors in the spec.

    I guess we could, but I’m not sure we should.

    Let me give an example:

    ·         Imagine a company, ACME S1000D Works, Inc.

    ·         They develop a set of DITA specializations, constraints, and processing that they package with an editor and an output processor to support S1000D.

    ·         The ACME package does not allow any customization. It does not recognize any DITA document types or specializations beyond those provided by Acme.  It does not allow for customized formatting of the output. It just fatefully implements the S1000D specification as understood by the S1000D experts employed by ACME in a take it or leave it fashion.

    ·         The DITA documents produced by the ACME system can be exchanged with other organizations that do not have access to the ACME product and because they are DITA conforming documents, they can be processed by non-ACME DITA-aware editors and processors.

    ·         ACME claims that their product is a DITA-conforming product.

    ·         Some organizations may not buy the ACME product because it is too limited or too rigid for their needs, others may rush out and buy the ACME product because it is a faithful implementation of the S1000D specification and they do not need to read and understand the 2000+ page S1000D specification themselves or hire a DITA/XML/S1000D expert to implement and maintain a set of customizations.

    The tick for the DITA TC is to write the DITA 1.2 specification in a way that:

    ·         allows ACME to claim that their product is DITA conforming;

    ·         does not require ACME as a vendor or an implementer to include additional support beyond that necessary to allow exchange of their DITA conforming documents with others;

    ·         allows others to create their own DITA-conforming implementations that do allow customization and extensions in ways that ACME does not.

       -Jeff

    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Wednesday, July 01, 2009 5:59 PM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Hi Jeff--

     

    I'm not sure why we shouldn't distinguish between vendors, implementors, and authors in the spec.

     

    The HTML spec, for example, distinguishes between authors, users, and user agents, and imposes different kinds and levels of conformance on each.

     

    Also, I think most tools that support DITA also support XML in general - which allows for much greater customizability even than DITA.

     

    So typically if an implementor diverges from the DITA standard, but conforms to more generic XML standards, their vendor toolkit will support them.

     

    For example, the authoring/publishing tool I'm most familiar with has implemented DITA conrefs...but generically, so that any xml application can use them - and call the attribute that supports them by any name it wants to.

     

    So it seems vendors are already going beyond the call of duty to support customers who want to implement standard DITA features, but in various non-standard ways.

     

    Shouldn't the standard indicate where we acknowledge the validity of such divergence - and encourage vendors to support it - and where we absolutely don't - and mandate that vendors do not support it?

     

    --Dana


    Dana,

    I think what you outline makes a lot of sense.  But the DITA specification doesn’t really make a distinction between vendors, implementers, and end user authors. And I’m not sure we should treat these classes of folks differently in the specification. Requirements are requirements and should apply to everyone. We shouldn’t have different requirements for vendors than we do for other implementers or for authors.

    What this all points out is that one of DITA’s strong points is how customizable it is, but the fact that it is so customizable makes it harder to write an understandable and unambiguous standard. Although some might argue that using the words “standard” and “understandable” in the same sentence is a conflict to start with :-).

    Another thing that makes this hard is that the DITA TC only has the DITA Specification to work with or perhaps the DITA Specification plus some best practice documents. If we had something other than the DITA Specification such as an Implementer’s Guide or a User’s Guide that might allow us to focus the specification on true standards issues and focus the other documents on issues that are of more concern to implanters or authors. I guess some of this might be something that the DITA Adoption TC could take on, but it would be a lot of work and isn’t likely to happen soon.

    Given the recent discussions I would update my outline to look something like this:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Stylesheet processing/formatting

    But I would note that the use of “customization” above is different from the definition of customization in the DITA 1.1 spec.  In the DITA 1.1 spec. it seems as if customization, integration, and specialization are peer terms.  If we want to stick with that (we don’t have to), then we need a new word, perhaps “configuration”, and the outline might look like this:

    1)      Configuration

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Customization (stylesheet processing/formatting)

    The items toward the top of the outline are pretty tightly defined by the DITA specification. The items toward the bottom of the outline are less tightly defined or in the case of (1.3.2) Customization, perhaps undefined by the specification.

       -Jeff

    Here are the DITA 1.1 definitions:

    Customization

    When you just need a difference in output, you can use DITA customization to override the default output without affecting portability or interchange, and without involving specialization.

    For example, if your readers are mostly experienced users, you could concentrate on creating many summary tables, and maximizing retrievability; or if you needed to create a brand presence, you could customize the transforms to apply appropriate fonts and indent style, and include some standard graphics and copyright links.

    Use customization when you need new output, with no change to the underlying semantics (you aren’t saying anything new or meaningful about the content, only its display).

    Integration

    Each domain specialization or structural specialization has its own design module. These modules can be combined to create many different document types. The process of creating a new document type from a specific combination of modules is called integration.

    Integration is accomplished using a document type shell, which defines the modules to be integrated and how they will be integrated. Integration defines both what topic types and domains will be allowed in the document type, and how the topic types will be allowed to nest.

    The module for a specific type should contain only the declarations for elements and attributes that are unique to that type, and should not embed any other modules. The shell should contain no markup declarations, and should directly reference all the modules it requires. Nesting shells or nesting modules (having shells that embed other shells, or modules that embed other modules) is discouraged since it adds complexity and may break some tools. Sharing between document types should be accomplished through shared modules, not through direct reference to any other document type. Dependencies between modules should be satisfied by the integrating shell, not through the module itself.

    What is specialization?

    Specialization allows you to define new kinds of information (new structural types or new domains of information), while reusing as much of existing design and code as possible, and minimizing or eliminating the costs of interchange, migration, and maintenance.

    Specialization is used when new structural types or new domains are needed. DITA specialization can be used when you want to make changes to your design for the sake of increased consistency or descriptiveness or have extremely specific needs for output that cannot be addressed using the current data model. Specialization is not recommended for simply creating different output types as DITA documents may be transformed to different outputs without resorting to specialization (see Customization).

    There are two kinds of specialization hierarchy: one for structural types (with topic or map at the root) and one for domains (with elements in topic or map at their root, or the attributes props or base). Structural types define topic or map structures, such as concept or task or reference, which often apply across subject areas (for example, a user interface task and a programming task may both consist of a series of steps). Domains define markup for a particular information domain or subject area, such as programming, or hardware. Each of them represent an “is a” hierarchy, in object-oriented terms, with each structural type or domain being a subclass of its parent. For example, a specialization of task is still a task; and a specialization of the user interface domain is still part of the user interface domain.

    Use specialization when you are dealing with new semantics (new, meaningful categories of information, either in the form of new structural types or new domains). The new semantics can be encoded as part of a specialization hierarchy, that allows them to be transformed back to more general equivalents, and also ensures that the specialized content can be processed by existing transforms.

    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Wednesday, July 01, 2009 12:33 PM
    To: Ogden, Jeff; JoAnn Hackos; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I think I'm starting to agree with you Jeff: the entire section should be called "Customization," and specialization should be considered a species of customization.

     

    So the distinction is between using a vendor implementation of DITA off the shelf and out of the box without modification - which some, perhaps many implementors are going to do - and "customizing" that vendor implementation to fit customer requirements.

     

    What this section needs to do in terms of conformance is to spell out vendor and implementor responsibilities for each kind of customization to achieve an interoperable, or at least a harmless, system (to use the RFC phraseology on conformance statements), i.e.:

    • Shells: Vendors MUST support, implementors SHOULD use
    • Constraints: Vendors MUST support, implementors SHOULD use
    • Specialization: Vendors MUST support, implementors MAY use
    • Variation (or whatever we call customization that changes some parts of the DITA vocabulary or violates some of its architectural principles, yet produces valid XML, and perhaps even valid DITA document instances): Vendors SHOULD support, implementors MAY use

     


    Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Tuesday, June 30, 2009 11:23 AM
    To: JoAnn Hackos; Dana Spradley; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I don’t know if there is a less “drastic” and more appropriate term than “customization”, but I’m sure that “specialization” isn’t the right word to use when someone creates a new document type shell.  Specializations create new DITA types. Modifying a document type shell doesn’t create a new DITA type, but just assembles existing DITA types for use.  One of the goals of the constraints proposal as I remember it was to allow customization without requiring specialization.

    I’ve always thought of “specialization” as being a subset of the larger class of customizations:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Customized Document type shells

    1.3)  Customized Processing

    1.3.1) Transformations

    1.3.2) Stylesheet processing/formatting

    Part of the problem here may be that we don’t have good names for 1.2 and 1.3.

        -Jeff

                                   

     

    From: JoAnn Hackos [mailto:joann.hackos@comtech-serv.com]
    Sent: Tuesday, June 30, 2009 1:52 PM
    To: Dana Spradley; Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?


    Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Monday, June 29, 2009 7:37 PM
    To: dita
    Subject: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 25.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-02-2009 20:10
    
    
    
    
    
    
    
    
    
    
    
    

    And a slightly different take on this issue.

    Dana wrote:

    I'm not sure why we shouldn't distinguish between vendors, implementers, and authors in the spec.

    You could, but you’d have to do it very carefully. And so far the DITA spec. hasn’t done much of this, so it will be a lot of new work and probably take a lot of discussion to get agreement.

    If you distinguish between people or organizations that have different roles in examples and other non-normative descriptions, it isn’t too hard to do. If you start to try to impose different requirements on different people or organizations, then things get a lot more complex very quickly.

    The draft conformance statement that was originally written by Eliot and revised by me back in March 2008 starts to address these issues, but there hasn’t been much done with this since then. See:

    http://www.oasis-open.org/apps/org/workgroup/dita/download.php/27616/conformance1.2-jcoV2.pdf

    The thing to note in the draft conformance statement is that rather than talking about people and organizations with different roles (vendors, implementers, authors, …) it talks about implementations and the “requirements that must be met for documents, document types, specialization modules, and processors to be considered DITA conforming”.

    Different levels of conformance are allowed for different types of implementation and a DITA conforming implementation does not have to implement all features to be conforming. Some excerpts from the draft conformance statement:  

    ·         DITA conforming implementations MUST include a conformance statement that lists the DITA features that are supported by the implementation and are implemented in accordance with the requirements of the DITA specifications ….

    ·         Documents, document types, specialization modules, and processors that implement the requirements given in the OASIS approved DITA specifications are considered conforming.

    ·         Implementations that include some DITA features, but not others, are considered conforming as long as all REQUIRED features for the category of implementation are included and all of the features that are included follow the requirements given in the DITA specification. An implementation which does not include a particular optional feature MUST be prepared to interoperate with another implementation which does include the feature, though perhaps with reduced functionality. And, while less common, an implementation which does include a particular optional feature MUST be prepared to interoperate with another implementation which does not include the feature.

    ·         Organizations and individuals are free to impose additional constraints on their own use of DITA that go beyond the requirements imposed by the DITA specifications, possibly including enforcement of the constraints by their local tools, as long as the result continues to meet the requirements given in the DITA specifications. For example, a given user community could impose rules on how files must be named or organized even if those rules go beyond the requirements given in the DITA specifications.

    The draft statement goes on to define five Conformance Categories:

    1.     Required and invariant

    2.     Required but variable

    3.     Variable with defaults

    4.     Variable without defaults

    5.     Informative or non-normative

    As well as five types of processors:

    1.     DITA-Aware Processor

    2.     DITA Editor

    3.     Information management system

    4.     Renderer

    5.     Source-to-source Transformer

    And then seven feature groups:

    1.     Documents (required, but variable)

    2.     Document types (required, but variable)

    3.     Specialization Modules (required, but variable)

    4.     Addressing (required and invariant)

    5.     Linking (required, but variable)

    6.     Content reference (required and invariant)

    7.     Rendition behavior (variable with or without defaults)

    The work that I don’t think has been done is to define a more detailed list of DITA features, to state if each feature is required or optional, and place each feature into one of the feature groups listed above or possibly in new feature groups, if none of the existing groups works well for a particular feature.

    All of this is done without talking about vendors, implementers, or authors (people, organizations, or roles).  Instead the people or organizations would identify what it is they have implemented, what type of implementation it is, what features the implementation includes, that all required features for the type of implementation have been included, and that all of the requirements for all included features have been met.  Once all of that is done, they are entitled to claim that they have a “DITA conforming” implementation.

    Or at least that was the thinking from more than a year ago.

    The DITA TC will need to decide how much or how little of this they want to take on for the DITA 1.2 specification. To do this completely and well will be a lot of work.

       -Jeff

    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Wednesday, July 01, 2009 5:59 PM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Hi Jeff--

     

    I'm not sure why we shouldn't distinguish between vendors, implementors, and authors in the spec.

     

    The HTML spec, for example, distinguishes between authors, users, and user agents, and imposes different kinds and levels of conformance on each.

     

    Also, I think most tools that support DITA also support XML in general - which allows for much greater customizability even than DITA.

     

    So typically if an implementor diverges from the DITA standard, but conforms to more generic XML standards, their vendor toolkit will support them.

     

    For example, the authoring/publishing tool I'm most familiar with has implemented DITA conrefs...but generically, so that any xml application can use them - and call the attribute that supports them by any name it wants to.

     

    So it seems vendors are already going beyond the call of duty to support customers who want to implement standard DITA features, but in various non-standard ways.

     

    Shouldn't the standard indicate where we acknowledge the validity of such divergence - and encourage vendors to support it - and where we absolutely don't - and mandate that vendors do not support it?

     

    --Dana


    Dana,

    I think what you outline makes a lot of sense.  But the DITA specification doesn’t really make a distinction between vendors, implementers, and end user authors. And I’m not sure we should treat these classes of folks differently in the specification. Requirements are requirements and should apply to everyone. We shouldn’t have different requirements for vendors than we do for other implementers or for authors.

    What this all points out is that one of DITA’s strong points is how customizable it is, but the fact that it is so customizable makes it harder to write an understandable and unambiguous standard. Although some might argue that using the words “standard” and “understandable” in the same sentence is a conflict to start with :-).

    Another thing that makes this hard is that the DITA TC only has the DITA Specification to work with or perhaps the DITA Specification plus some best practice documents. If we had something other than the DITA Specification such as an Implementer’s Guide or a User’s Guide that might allow us to focus the specification on true standards issues and focus the other documents on issues that are of more concern to implanters or authors. I guess some of this might be something that the DITA Adoption TC could take on, but it would be a lot of work and isn’t likely to happen soon.

    Given the recent discussions I would update my outline to look something like this:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Stylesheet processing/formatting

    But I would note that the use of “customization” above is different from the definition of customization in the DITA 1.1 spec.  In the DITA 1.1 spec. it seems as if customization, integration, and specialization are peer terms.  If we want to stick with that (we don’t have to), then we need a new word, perhaps “configuration”, and the outline might look like this:

    1)      Configuration

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Customization (stylesheet processing/formatting)

    The items toward the top of the outline are pretty tightly defined by the DITA specification. The items toward the bottom of the outline are less tightly defined or in the case of (1.3.2) Customization, perhaps undefined by the specification.

       -Jeff

    Here are the DITA 1.1 definitions:

    Customization

    When you just need a difference in output, you can use DITA customization to override the default output without affecting portability or interchange, and without involving specialization.

    For example, if your readers are mostly experienced users, you could concentrate on creating many summary tables, and maximizing retrievability; or if you needed to create a brand presence, you could customize the transforms to apply appropriate fonts and indent style, and include some standard graphics and copyright links.

    Use customization when you need new output, with no change to the underlying semantics (you aren’t saying anything new or meaningful about the content, only its display).

    Integration

    Each domain specialization or structural specialization has its own design module. These modules can be combined to create many different document types. The process of creating a new document type from a specific combination of modules is called integration.

    Integration is accomplished using a document type shell, which defines the modules to be integrated and how they will be integrated. Integration defines both what topic types and domains will be allowed in the document type, and how the topic types will be allowed to nest.

    The module for a specific type should contain only the declarations for elements and attributes that are unique to that type, and should not embed any other modules. The shell should contain no markup declarations, and should directly reference all the modules it requires. Nesting shells or nesting modules (having shells that embed other shells, or modules that embed other modules) is discouraged since it adds complexity and may break some tools. Sharing between document types should be accomplished through shared modules, not through direct reference to any other document type. Dependencies between modules should be satisfied by the integrating shell, not through the module itself.

    What is specialization?

    Specialization allows you to define new kinds of information (new structural types or new domains of information), while reusing as much of existing design and code as possible, and minimizing or eliminating the costs of interchange, migration, and maintenance.

    Specialization is used when new structural types or new domains are needed. DITA specialization can be used when you want to make changes to your design for the sake of increased consistency or descriptiveness or have extremely specific needs for output that cannot be addressed using the current data model. Specialization is not recommended for simply creating different output types as DITA documents may be transformed to different outputs without resorting to specialization (see Customization).

    There are two kinds of specialization hierarchy: one for structural types (with topic or map at the root) and one for domains (with elements in topic or map at their root, or the attributes props or base). Structural types define topic or map structures, such as concept or task or reference, which often apply across subject areas (for example, a user interface task and a programming task may both consist of a series of steps). Domains define markup for a particular information domain or subject area, such as programming, or hardware. Each of them represent an “is a” hierarchy, in object-oriented terms, with each structural type or domain being a subclass of its parent. For example, a specialization of task is still a task; and a specialization of the user interface domain is still part of the user interface domain.

    Use specialization when you are dealing with new semantics (new, meaningful categories of information, either in the form of new structural types or new domains). The new semantics can be encoded as part of a specialization hierarchy, that allows them to be transformed back to more general equivalents, and also ensures that the specialized content can be processed by existing transforms.

    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Wednesday, July 01, 2009 12:33 PM
    To: Ogden, Jeff; JoAnn Hackos; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I think I'm starting to agree with you Jeff: the entire section should be called "Customization," and specialization should be considered a species of customization.

     

    So the distinction is between using a vendor implementation of DITA off the shelf and out of the box without modification - which some, perhaps many implementors are going to do - and "customizing" that vendor implementation to fit customer requirements.

     

    What this section needs to do in terms of conformance is to spell out vendor and implementor responsibilities for each kind of customization to achieve an interoperable, or at least a harmless, system (to use the RFC phraseology on conformance statements), i.e.:

    • Shells: Vendors MUST support, implementors SHOULD use
    • Constraints: Vendors MUST support, implementors SHOULD use
    • Specialization: Vendors MUST support, implementors MAY use
    • Variation (or whatever we call customization that changes some parts of the DITA vocabulary or violates some of its architectural principles, yet produces valid XML, and perhaps even valid DITA document instances): Vendors SHOULD support, implementors MAY use

     


    Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Tuesday, June 30, 2009 11:23 AM
    To: JoAnn Hackos; Dana Spradley; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I don’t know if there is a less “drastic” and more appropriate term than “customization”, but I’m sure that “specialization” isn’t the right word to use when someone creates a new document type shell.  Specializations create new DITA types. Modifying a document type shell doesn’t create a new DITA type, but just assembles existing DITA types for use.  One of the goals of the constraints proposal as I remember it was to allow customization without requiring specialization.

    I’ve always thought of “specialization” as being a subset of the larger class of customizations:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Customized Document type shells

    1.3)  Customized Processing

    1.3.1) Transformations

    1.3.2) Stylesheet processing/formatting

    Part of the problem here may be that we don’t have good names for 1.2 and 1.3.

        -Jeff

                                   

     

    From: JoAnn Hackos [mailto:joann.hackos@comtech-serv.com]
    Sent: Tuesday, June 30, 2009 1:52 PM
    To: Dana Spradley; Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?


    Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Monday, June 29, 2009 7:37 PM
    To: dita
    Subject: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 26.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-06-2009 16:34
    
    
    
    
    
    
    
    thanks Jeff - I was coming up to speed on the OASIS conformance guidelines - http://docs.oasis-open.org/templates/TCHandbook/ConformanceGuidelines.html - just before reading this, and in that context it makes a lot of sense
     
    you're right - a lot of work would needed to be done to get conformance in order in the 1.2 spec - sorry to hear not much has been done to progress your draft of last March
     
    at this point, perhaps it is best to concentrate on regularizing our conformance clauses to use the standard upper-case vocabulary for 1.2, and work on integrating something along the more robust lines of your draft for 1.3
     
    an issue I have with our vocabulary as it exists in the draft so far, besides its non-standard nature, is that it tends of be overweighted toward the REQUIRED end of the spectrum for features that  are designed to support round-trip generalization and re-specialization, and conrefs between differently constrained document instances - which not every implementation wants or needs to support - and gives less play to the RECOMMENDED and MAY parts of the spectrum, especially for these advanced kinds of features
     
    also, I think the specifications needs a statement at the end that at least recognizes the validity of creating non-conforming DITA variants that are only based on the specification, but derive their interoperability from generic XML standards alone - the way, e.g., that the DocBook standard does

    And a slightly different take on this issue.

    Dana wrote:

    I'm not sure why we shouldn't distinguish between vendors, implementers, and authors in the spec.

    You could, but you’d have to do it very carefully. And so far the DITA spec. hasn’t done much of this, so it will be a lot of new work and probably take a lot of discussion to get agreement.

    If you distinguish between people or organizations that have different roles in examples and other non-normative descriptions, it isn’t too hard to do. If you start to try to impose different requirements on different people or organizations, then things get a lot more complex very quickly.

    The draft conformance statement that was originally written by Eliot and revised by me back in March 2008 starts to address these issues, but there hasn’t been much done with this since then. See:

    http://www.oasis-open.org/apps/org/workgroup/dita/download.php/27616/conformance1.2-jcoV2.pdf

    The thing to note in the draft conformance statement is that rather than talking about people and organizations with different roles (vendors, implementers, authors, …) it talks about implementations and the “requirements that must be met for documents, document types, specialization modules, and processors to be considered DITA conforming”.

    Different levels of conformance are allowed for different types of implementation and a DITA conforming implementation does not have to implement all features to be conforming. Some excerpts from the draft conformance statement:  

    ·         DITA conforming implementations MUST include a conformance statement that lists the DITA features that are supported by the implementation and are implemented in accordance with the requirements of the DITA specifications ….

    ·         Documents, document types, specialization modules, and processors that implement the requirements given in the OASIS approved DITA specifications are considered conforming.

    ·         Implementations that include some DITA features, but not others, are considered conforming as long as all REQUIRED features for the category of implementation are included and all of the features that are included follow the requirements given in the DITA specification. An implementation which does not include a particular optional feature MUST be prepared to interoperate with another implementation which does include the feature, though perhaps with reduced functionality. And, while less common, an implementation which does include a particular optional feature MUST be prepared to interoperate with another implementation which does not include the feature.

    ·         Organizations and individuals are free to impose additional constraints on their own use of DITA that go beyond the requirements imposed by the DITA specifications, possibly including enforcement of the constraints by their local tools, as long as the result continues to meet the requirements given in the DITA specifications. For example, a given user community could impose rules on how files must be named or organized even if those rules go beyond the requirements given in the DITA specifications.

    The draft statement goes on to define five Conformance Categories:

    1.     Required and invariant

    2.     Required but variable

    3.     Variable with defaults

    4.     Variable without defaults

    5.     Informative or non-normative

    As well as five types of processors:

    1.     DITA-Aware Processor

    2.     DITA Editor

    3.     Information management system

    4.     Renderer

    5.     Source-to-source Transformer

    And then seven feature groups:

    1.     Documents (required, but variable)

    2.     Document types (required, but variable)

    3.     Specialization Modules (required, but variable)

    4.     Addressing (required and invariant)

    5.     Linking (required, but variable)

    6.     Content reference (required and invariant)

    7.     Rendition behavior (variable with or without defaults)

    The work that I don’t think has been done is to define a more detailed list of DITA features, to state if each feature is required or optional, and place each feature into one of the feature groups listed above or possibly in new feature groups, if none of the existing groups works well for a particular feature.

    All of this is done without talking about vendors, implementers, or authors (people, organizations, or roles).  Instead the people or organizations would identify what it is they have implemented, what type of implementation it is, what features the implementation includes, that all required features for the type of implementation have been included, and that all of the requirements for all included features have been met.  Once all of that is done, they are entitled to claim that they have a “DITA conforming” implementation.

    Or at least that was the thinking from more than a year ago.

    The DITA TC will need to decide how much or how little of this they want to take on for the DITA 1.2 specification. To do this completely and well will be a lot of work.

       -Jeff

    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Wednesday, July 01, 2009 5:59 PM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Hi Jeff--

     

    I'm not sure why we shouldn't distinguish between vendors, implementors, and authors in the spec.

     

    The HTML spec, for example, distinguishes between authors, users, and user agents, and imposes different kinds and levels of conformance on each.

     

    Also, I think most tools that support DITA also support XML in general - which allows for much greater customizability even than DITA.

     

    So typically if an implementor diverges from the DITA standard, but conforms to more generic XML standards, their vendor toolkit will support them.

     

    For example, the authoring/publishing tool I'm most familiar with has implemented DITA conrefs...but generically, so that any xml application can use them - and call the attribute that supports them by any name it wants to.

     

    So it seems vendors are already going beyond the call of duty to support customers who want to implement standard DITA features, but in various non-standard ways.

     

    Shouldn't the standard indicate where we acknowledge the validity of such divergence - and encourage vendors to support it - and where we absolutely don't - and mandate that vendors do not support it?

     

    --Dana

    -----Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Wednesday, July 01, 2009 10:55 AM
    To: dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Dana,

    I think what you outline makes a lot of sense.  But the DITA specification doesn’t really make a distinction between vendors, implementers, and end user authors. And I’m not sure we should treat these classes of folks differently in the specification. Requirements are requirements and should apply to everyone. We shouldn’t have different requirements for vendors than we do for other implementers or for authors.

    What this all points out is that one of DITA’s strong points is how customizable it is, but the fact that it is so customizable makes it harder to write an understandable and unambiguous standard. Although some might argue that using the words “standard” and “understandable” in the same sentence is a conflict to start with :-).

    Another thing that makes this hard is that the DITA TC only has the DITA Specification to work with or perhaps the DITA Specification plus some best practice documents. If we had something other than the DITA Specification such as an Implementer’s Guide or a User’s Guide that might allow us to focus the specification on true standards issues and focus the other documents on issues that are of more concern to implanters or authors. I guess some of this might be something that the DITA Adoption TC could take on, but it would be a lot of work and isn’t likely to happen soon.

    Given the recent discussions I would update my outline to look something like this:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Stylesheet processing/formatting

    But I would note that the use of “customization” above is different from the definition of customization in the DITA 1.1 spec.  In the DITA 1.1 spec. it seems as if customization, integration, and specialization are peer terms.  If we want to stick with that (we don’t have to), then we need a new word, perhaps “configuration”, and the outline might look like this:

    1)      Configuration

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Integration (via document type shells)

            1.2.1) Modules

            1.2.2) Constraints

    1.3)  Processing

    1.3.1) Transformations

            1.3.1.1) Conditional Processing (filtering and flagging)

            1.3.1.2) Conref processing

            1.3.1.2) Merging properties between maps and topics including key and keyref processing

            1.3.1.3) Default attribute value processing

    1.3.2) Customization (stylesheet processing/formatting)

    The items toward the top of the outline are pretty tightly defined by the DITA specification. The items toward the bottom of the outline are less tightly defined or in the case of (1.3.2) Customization, perhaps undefined by the specification.

       -Jeff

    Here are the DITA 1.1 definitions:

    Customization

    When you just need a difference in output, you can use DITA customization to override the default output without affecting portability or interchange, and without involving specialization.

    For example, if your readers are mostly experienced users, you could concentrate on creating many summary tables, and maximizing retrievability; or if you needed to create a brand presence, you could customize the transforms to apply appropriate fonts and indent style, and include some standard graphics and copyright links.

    Use customization when you need new output, with no change to the underlying semantics (you aren’t saying anything new or meaningful about the content, only its display).

    Integration

    Each domain specialization or structural specialization has its own design module. These modules can be combined to create many different document types. The process of creating a new document type from a specific combination of modules is called integration.

    Integration is accomplished using a document type shell, which defines the modules to be integrated and how they will be integrated. Integration defines both what topic types and domains will be allowed in the document type, and how the topic types will be allowed to nest.

    The module for a specific type should contain only the declarations for elements and attributes that are unique to that type, and should not embed any other modules. The shell should contain no markup declarations, and should directly reference all the modules it requires. Nesting shells or nesting modules (having shells that embed other shells, or modules that embed other modules) is discouraged since it adds complexity and may break some tools. Sharing between document types should be accomplished through shared modules, not through direct reference to any other document type. Dependencies between modules should be satisfied by the integrating shell, not through the module itself.

    What is specialization?

    Specialization allows you to define new kinds of information (new structural types or new domains of information), while reusing as much of existing design and code as possible, and minimizing or eliminating the costs of interchange, migration, and maintenance.

    Specialization is used when new structural types or new domains are needed. DITA specialization can be used when you want to make changes to your design for the sake of increased consistency or descriptiveness or have extremely specific needs for output that cannot be addressed using the current data model. Specialization is not recommended for simply creating different output types as DITA documents may be transformed to different outputs without resorting to specialization (see Customization).

    There are two kinds of specialization hierarchy: one for structural types (with topic or map at the root) and one for domains (with elements in topic or map at their root, or the attributes props or base). Structural types define topic or map structures, such as concept or task or reference, which often apply across subject areas (for example, a user interface task and a programming task may both consist of a series of steps). Domains define markup for a particular information domain or subject area, such as programming, or hardware. Each of them represent an “is a” hierarchy, in object-oriented terms, with each structural type or domain being a subclass of its parent. For example, a specialization of task is still a task; and a specialization of the user interface domain is still part of the user interface domain.

    Use specialization when you are dealing with new semantics (new, meaningful categories of information, either in the form of new structural types or new domains). The new semantics can be encoded as part of a specialization hierarchy, that allows them to be transformed back to more general equivalents, and also ensures that the specialized content can be processed by existing transforms.

    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Wednesday, July 01, 2009 12:33 PM
    To: Ogden, Jeff; JoAnn Hackos; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I think I'm starting to agree with you Jeff: the entire section should be called "Customization," and specialization should be considered a species of customization.

     

    So the distinction is between using a vendor implementation of DITA off the shelf and out of the box without modification - which some, perhaps many implementors are going to do - and "customizing" that vendor implementation to fit customer requirements.

     

    What this section needs to do in terms of conformance is to spell out vendor and implementor responsibilities for each kind of customization to achieve an interoperable, or at least a harmless, system (to use the RFC phraseology on conformance statements), i.e.:

    • Shells: Vendors MUST support, implementors SHOULD use
    • Constraints: Vendors MUST support, implementors SHOULD use
    • Specialization: Vendors MUST support, implementors MAY use
    • Variation (or whatever we call customization that changes some parts of the DITA vocabulary or violates some of its architectural principles, yet produces valid XML, and perhaps even valid DITA document instances): Vendors SHOULD support, implementors MAY use

     

    -----Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Tuesday, June 30, 2009 11:23 AM
    To: JoAnn Hackos; Dana Spradley; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    I don’t know if there is a less “drastic” and more appropriate term than “customization”, but I’m sure that “specialization” isn’t the right word to use when someone creates a new document type shell.  Specializations create new DITA types. Modifying a document type shell doesn’t create a new DITA type, but just assembles existing DITA types for use.  One of the goals of the constraints proposal as I remember it was to allow customization without requiring specialization.

    I’ve always thought of “specialization” as being a subset of the larger class of customizations:

    1)      Customization

    1.1)  Specialization

    1.1.1)       Structural Specialization

    1.1.2)       Domain Specialization

    1.2)  Customized Document type shells

    1.3)  Customized Processing

    1.3.1) Transformations

    1.3.2) Stylesheet processing/formatting

    Part of the problem here may be that we don’t have good names for 1.2 and 1.3.

        -Jeff

                                   

     

    From: JoAnn Hackos [mailto:joann.hackos@comtech-serv.com]
    Sent: Tuesday, June 30, 2009 1:52 PM
    To: Dana Spradley; Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Should not we always refer to such changes as “specializations” rather than “customizations”?

    JoAnn Hackos PhD

    President

    Comtech Services, Inc.

    joann.hackos@comtech-serv.com

    Skype joannhackos


    From: Dana Spradley [mailto:dana.spradley@oracle.com]
    Sent: Tuesday, June 30, 2009 11:46 AM
    To: Ogden, Jeff; dita
    Subject: RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Is "customized"/"customization" really appropriate here? Are is this something we're considering less drastic than customization?

    -----Original Message-----
    From: Ogden, Jeff [mailto:jogden@ptc.com]
    Sent: Monday, June 29, 2009 7:37 PM
    To: dita
    Subject: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Some suggestions with additions underlined and blue and deletions strikeout and red:

    Concrete document types

    A given DITA map or topic document is governed by a concrete document type that defines the set of structural modules (topic or map types), domain modules, and constraints modules that the map or topic can use, as well as the degree of topic nesting that is allowed within the document type. While the DITA specification includes a starter set of concrete document types for common combinations of modules, those document types are not mandatory and, for most many DITA users, include more things definitions than they need for their documents. In general, any production use of DITA involves definition of the DITA users are encouraged to create their own customized concrete document types that include the set of modules best suited to local requirements. This always customization requires the creation of "local shell" document types, even if all they do is omit unneeded modules or apply constraints to the standard DITA-defined vocabulary. Thus you should expect in any production use of DITA that the first step is to define local concrete document types.

    Note: The simplest form of local shell is an unaltered copy of one of the DITA TC-provided shells to which is associated a new public identifier or absolute URI, reflecting ownership of the new shell by its creator. For example, to create a local shell DTD for generic maps, simply copy the TC-provided file "map.dtd" to a local location, possibly using a new name for the file to avoid confusion, and create an entity mapping catalog that binds the new copy of map.dtd to a public ID or absolute URI you define, e.g. PUBLIC "-//example.com/DTD DITA NewMap//EN or urn:public:example.dom/dita/doctypes/map urn:example.com:names:dita:xsd:newmap.xsd.

    Concrete DITA document types must SHOULD follow the implementation design patterns defined in this specification. This ensures consistency of implementation and also serves to make the task of creating concrete document types almost entirely mechanical.

    ·         Modularization and integration of design
    Specialization hierarchies are implemented as sets of vocabulary modules, each of which declares the markup and entities that are unique to a specialization. The modules must be integrated into a document type before they can be used.

    ·         DTD syntax specialization design patterns
    To be extensible and backward compatible,
    DITA requires that a DTD implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the DTD shells included as part of the DITA specification and described in this topic.

    ·         XSD schema specialization design patterns
    To be extensible and backward compatible,
    DITA requires that an XML schema implementation of structural and domain specialization modules SHOULD conform to well-defined the design patterns used for the XML schema shells included as part fo the DITA specification and described in this topic.

    While we can require that customized concrete document types follow the rules as outlined in the DITA 1.2 speciication, I don’t think that we can require that they follow the design patterns or that the design patterns are well enough specified to allow them to be a requirement.  At this stage I think the design patters are more of a “best practice” than a requirement that must be followed and so they SHOULD be followed rather than MUST be followed.

    It seems likely that the section on “Modularization and integration of design” should be deleted since it is almost entirely repeating information that has been provided in the main section..

    For the page dita-1.2-spec/arch/20090617/createConstraintsDomainSpec.html :

    I don’t have any comments on the main topic other than to say that it feels as of this topic is saying the same thing two or even three times and that probably isn’t a good idea.



  • 27.  Re: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-06-2009 16:50
    I feel very strongly that we need to have a real conformance clause in the
    spec--without such a clause, it's not a standard.
    
    Also, I believe OASIS rules now require us to have a conformance clause. I'm
    willing to take responsibility for that part of the spec.
    
    Cheers,
    
    E.
    
    On 7/6/09 11:35 AM, "Dana Spradley" 


  • 28.  RE: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-06-2009 17:06
    I'm inclined to agree Eliot.
    
    Systematically written conformance clauses that distinguish between the levels of conformance required by various conformance targets, and that assign REQUIRED keywords to normative statements that support those features that are most likely to be used by installations, and OPTIONAL keywords to normative statements that support features that are least likely to be used, would go a long way toward making DITA a more precise and flexible standard than our current conformance language does.
    
    But we don't want this exercise to get out of hand and seriously delay delivery of 1.2, do we?
    
    We need to keep it within bounds, I think.
    
    


  • 29.  Re: [dita] some comemnts on the Draft DITA 1.2 architecture spec.

    Posted 07-06-2009 17:15
    On 7/6/09 12:06 PM, "Dana Spradley"