Windows Confidential: Warum können wir alle nur nicht zusammen arbeiten?
Ein Risiko beim Entwerfen eines Interoperabilitätsdokuments besteht darin, dass möglicherweise niemand Ihre Spezifikationen implementieren möchte.
Raymond Chen
Vor Jahren hatte ich Mittagessen mit mehreren Personen aus einem anderen Projektgruppe innerhalb von Microsoft. Dies war eine geplante Sache nicht. Es war nur etwas, das auf eine spontane Entscheidung für ein Mittagessen mit einem Besuch Kollegen entwickelt.
Diese Art von informellen Mittagessen Zusammenkünfte sind Spaß. Ich bekomme zu erfahren Sie mehr über andere Menschen und die Projekte, an denen sie arbeiten. Wenn ich Glück habe, kann ich ein paar weitere Geschichten sammeln.
Sitzend am Tisch war einer der Microsoft-Vertreter zu einer Industriegruppe mit der Entwicklung eines Dokuments Interoperabilität für etwas oder Sonstiges. Der Schwerpunkt des aktuellen Dokuments war nicht so interessant für mich wie die Einsicht in die Machenschaften einer Industrie-Gruppe, die versuchen, ein Dokument für Interoperabilität zu entwickeln.
Er sagte, dass die Mitglieder der Gruppe in zwei Fraktionen geteilt hatte. Die Mitglieder der ersten Fraktion wollte eine Interoperabilität Dokument entwerfen, die alle mögliche Anforderungen erwartet und erfand Schemata zu beschreiben. "Was passiert, wenn ein Client möchte die Frobulator wackeln, wenn die Strömung demoduliert ist? Wir brauchen eine Möglichkeit, eine Modulation Ausnahme anzugeben."
Die Menschen in der zweiten Fraktion wollte eine Interoperabilität Dokument zu entwerfen, die die wichtigsten Szenarien behandelt. Jeden Leser des Dokuments konnte jedes Szenario mit vertretbarem Aufwand implementieren. Wären sie können ankommen es schnell, bevor alle Anbieter ungeduldig wurde und lief voran mit ihren eigenen benutzerdefinierten Implementierungen, von denen keines wäre kompatibel mit anderen erledigt.
Die zweite Fraktion glaubte, dass es OK wäre, wenn das Interoperabilität Dokument jede Möglichkeit decken nicht. Wirksamer wäre es, solange es nicht, die Möglichkeit entgegen, Unterstützung für diese Art von Features in der Zukunft hinzufügen. Kollege Tabelle Mittagessen gehörte die zweite Fraktion.
Halten Sie alle glücklich
Als Reaktion auf diese unversöhnlichen Kampf der Philosophien vereinbart die Industry Group, zwei Dokumente zu entwickeln. Das erste war ein base-Dokument, das die wichtigsten Szenarien behandelt. Dies erfüllt die zweite Fraktion. Es gab auch eine erweiterte Dokument, das die Funktionen des base-Dokuments erweitert. Dies erfüllt die erste Fraktion.
Ich vermute, dass dies nicht mehr die meisten wenn nicht alle Argumente über was in dem Dokument der Interoperabilität gehen sollte. Stattdessen argumentiert der Industrie Mitglieder darüber, ob ein bestimmtes Feature ein Basis-KE oder ein erweitertes Feature war.
Die erste Fraktion würde natürlich argumentieren, dass jede neue Funktion ein Basis-KE wurde. Die zweite Fraktion würde natürlich argumentieren, dass jede neue Funktion eine erweiterte Funktion wurde. Sie könnte wahrscheinlich gelöst haben dies durch die Festlegung, dass die Menschen in der zweiten Fraktion waren die "Grundfunktionen Untergruppe", und sie die endgültigen Schiedsrichter auf, was als ein grundlegendes Merkmal gezählt.
Mein Mittagessen Tabelle Kollege war verärgert. Er sagte, dass das erweiterte Dokument so kompliziert geworden, die Anforderungen vom Client fing an, kleine Computerprogramme ähneln. Der Server benötigt diese Routinen, um zu bestimmen, ob oder nicht zu Ehren die Anforderung ausführen.
Ich halb im Scherz schlug er vorschlagen, die erweiterte Dokument eine einfache Klausel hinzufügen: "Wenn ein Anforderungspaket eingeht, Bewertung von denen würde nie ein Ergebnis (führt einen Denial of Service, wenn der Server versucht, es auszuführen), produzieren die Server muss mit dem Fehler EWOULDHANG den Antrag ablehnen." Mit anderen Worten, würde er die Industry Group zu verleiten zu erfordern Servern zur Lösung des Problems Einhalt zu Gebieten.
Mein Mittagessen Tabelle Kollege lachte bei dem Gedanken. "Ich bin also versucht, die versuchen," sagte er. Ich weiß nicht, ob er tatsächlich, aber es erwies sich als irrelevant.
Das Basisdokument wurde schließlich genehmigt. Anbieter mit der Umsetzung der Spezifikationen begonnen. Erweiterte Dokument für einige Jahre danach weiter bearbeiten. Es wurde schließlich klar aus Gesprächen mit Anbietern, dass keiner von ihnen bei der Umsetzung etwas jenseits des Basisbelegs interessiert waren.
Nach der Entdeckung dieses, ausgesetzt die Industry Group offiziell Operationen. Alles, was sie für ihre Jahre der Arbeit zeigen musste war ein weitgehend vollständiges Dokument, dem niemand kümmerte. Die Industry Group hatte der Kunde aus den Augen verloren. Sie verbrachte Jahre, um eine Spezifikation zu entwerfen, die nie umgesetzt werden würde.
Raymond Chen' s Website The Old New Thing und gleichnamigen Buch (Addison-Wesley, 2007) befassen sich mit Windows Geschichte, Win32-Programmierung und unbeabsichtigte Kfz-Diebstahl.