
Messages in this thread
SubjectRe: I request inclusion of SAS Transport Layer and AIC-94xx into the kernel
On Thu, Sep 29, 2005 at 04:20:13PM -0700, Luben Tuikov wrote:
> A spec defines how a protocol works and behaves. All SCSI specs
> are currently very layered and defined by FSMs.

A spec defines how a protocol works and behaves --- *if* it is
well-specified and unambiguous, and *if* vendors actually implement
the spec correctly. (And sometimes vendors have major economic
incentives to cheat and either intentionally violate the
specification, or simply not bother to test to make sure whether or
not they implemented their hardware correctly.)

Computing history has been literred with specifications that were
incompentently written and/or incompentently implemented --- from the
disaster known as ACPI, to FDDI (early FDDI networking gear was
interoperable only if you bought all of your gear from one vendor,
natch), consumer-grade disks which lied about when data had been
safely written to iron oxide to garner better Winbench scores, and
many, many, many others.

This is one of the reasons why the IETF doesn't bless a networking
standard until there are multiple independent, interoperable
implementations --- and even _then_ there will be edge cases that
won't be caught until much, much later.

In those cases, if you implement something which is religiously
adherent to the specification, and it doesn't interoperate with the
real world (i.e., everybody else, or some large part of the industry)
--- do you claim that you are right because you are following the
specification, and everyone else in the world is wrong? Or do you
adapt to reality? People who are too in love with specifications so
that they are not willing to be flexible will generally not be able to
achieve complete interoperability. This is the reason for the IETF
Maxim --- be conservative in what you send, liberal in what you will
accept. And it's why interoperability testing and reference
implementations are critical.

But it's also important to remember when there is a reference
implementation, or pseudo-code in the specification, it's not the only
way you can implement things. Very often, as Linus has pointed out,
there are reasons why the pseudo-code in the specification is wholely
inappropriate for a particular implementation. But that's OK; the
implementation can use a different implementastion, as long as the
result is interoperable.


- Ted
the body of a message to
More majordomo info at
Please read the FAQ at

 \ /
  Last update: 2005-09-30 07:35    [W:0.164 / U:18.972 seconds]