and stdio pipes (normally tunnelled by ssh)

I'm not sure what you mean by "stdio" pipes here.  "byte-stream
protocol" might be a less imprecise form...

        In particular, even though the Mercurial community
        is committed to maintaining backwards compatibility in its
        repository file format (binary) and the http- and stdio-based
wire
        protocol, these interfaces are also considered Volatile.  Future
        project maturity may result in the upgrading of the stability of
        these interfaces.

The interface taxonomy isn't all that good as a tool for describing the
inter-release interoperability of "private" file formats and protocols; 
additional text is usually needed to describe the actual commitment
made.

Is the intent of making these Public interfaces to encourage alternate
implementations to read and write these file formats and protocols
directly?  

If not, I'd think these should be considered some form of Private
(presumably Project Private) rather than Public.

The revised interface taxonomy is also very clear that there are
exceptional cases where breaking compatibility more frequently than
allowed by the taxonomy is OK.  To quote the bulk of the "Exceptions"
section for the benefit of the Mercurial developers:

    Although being absolutely stable tends to be good thing for
isotopes,
    relationships and interfaces, there are times when it is in the best
    interest of both the supplier and consumer to break the stability 
    commitment.  The following list contains the known reasons to
violate 
    an interface stability commitment, but does not preclude others.

      1)  Security holes where the vulnerability is inherent in the 
          interface.

      2)  Data corruption (silent or otherwise) where the vulnerability 
          is inherent in the interface.

      3)  Standards violations uncovered by a change in interpretation 
          or enhancement of conformance tests.

      4)  An interface specification which isn't controlled by the 
          final implementation provider has been changed incompatibly 
          and the vast majority of interface consumers expect the newer 
          interface.

      5)  Not making the incompatable change would be incomprehensible 
          to our customers.  One example of this would to have not 
          incompatably changed pcfs when Microsoft abandoned the 8.3 
          naming restrictions.

    Incompatible changes allowed by exception should always be delivered 
    in the "most major" release vehicle possible.  However, often the 
    consequences of the vulnerabilities or contractual branding 
    requirements will force delivery in a patch.

    Every effort should be made to provide prominent and clear notification 
    to the interface consumers as far in advance of the change as is 
    possible and it may be appropriate to provide "impact mitigation"
    tools.

---
Hope this helps.


                                        - Bill

_______________________________________________
tools-discuss mailing list
[email protected]

Reply via email to