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

From
Eana Rpradley
Date
2009-07-01T21:57:46+00:00
ID
5d8fb804-ff10-4cc8-8493-58641a1da1d2@default
Thread
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:]
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:] 
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:]
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:] 
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.

    


    
Skype 
    joannhackos

    
 

    

    

    
    

    
From: Dana Spradley 
    [mailto:] 
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:]
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.