Segredos do Windows: Por que nós todos apenas não pode trabalhar juntos?

Um dos perigos de se criar um documento de interoperabilidade é acabar não encontrando alguém que queira implementar alguma das suas especificações.

Raymond Chen

Anos atrás, eu estava almoçando com várias pessoas de outro grupo de projeto no Microsoft. Esta não foi uma coisa planejada. Foi apenas algo que evoluiu de uma decisão espontânea para almoçar com um colega visitando.

Esses tipos de encontros de almoço informal são divertidas. Eu começar a aprender sobre outros povos e os projetos nos quais está trabalhando. Se eu tenho sorte, eu pode coletar algumas histórias mais.

Sentado na mesa foi um dos representantes de Microsoft para um grupo de indústria acusado de desenvolver um documento de interoperabilidade para algo-ou-outro. O foco do documento real não era tão interessante para mim como o insight das maquinações de um grupo de indústria tentar desenvolver um documento de interoperabilidade.

Ele disse que os membros do grupo se dividiram em duas facções. Os membros da facção primeiro queriam criar um documento de interoperabilidade que antecipou todas as possíveis solicitações e inventou esquemas para descrevê-los. "Se um cliente quiser jiggle o frobulator quando o fluxo é demodulated? Precisamos ter uma maneira de especificar uma exceção de modulação."

O povo na segunda facção queria um documento de interoperabilidade que cobria os importantes cenários de design. Qualquer pessoa que leia o documento poderia implementar qualquer cenário com esforço razoável. Eles seriam capazes de obtê-lo feito rapidamente, antes que todos os fornecedores cresceram impacientes e correu adiante com suas próprias implementações personalizadas, nenhuma das quais seria compatível com qualquer outro.

A segunda facção acreditava que seria OK se o documento de interoperabilidade não cobrir todas as possibilidades. Seria eficaz, contanto não exclui a possibilidade de adicionar suporte para esses tipos de recursos no futuro. Meu colega de mesa de almoço pertencia à facção do segunda.

Manter todos felizes

Em resposta a este choque irreconciliável de filosofias, o grupo de indústria concordou em desenvolver dois documentos. O primeiro foi um documento base que cobria os cenários importantes. Esta satisfeito a segunda facção. Houve também um documento estendido que expandiu os recursos do documento base. Esta satisfeito a primeira facção.

Eu suspeito que isso parou a maioria se não todos os argumentos sobre o que deve ir para o documento de interoperabilidade. Em vez disso, os membros do grupo indústria discutiram sobre se um determinado recurso era uma característica de base ou uma funcionalidade estendida.

A primeira facção diria naturalmente que qualquer novo recurso era uma característica de base. A segunda facção diria naturalmente que qualquer novo recurso foi uma funcionalidade estendida. Eles poderiam provavelmente ter resolvido isso, estabelecendo que as pessoas a segunda facção eram o subgrupo"recursos básicos" e torná-los os árbitros finais sobre o que era como uma característica básica.

Meu colega de mesa de almoço foi exasperada. Ele disse que o documento estendido tinha-se tornado tão complicado que as solicitações do cliente começaram a assemelhar-se a programas de computador pequeno. O servidor necessário para executar essas rotinas para determinar se ou não satisfazer o pedido.

Meia-brincadeira sugeri ele propor adicionando uma cláusula simples ao documento estendido: "se um pacote de solicitação é recebido, avaliação de que nunca iria produzir um resultado (resultando em uma negação de serviço se o servidor tentou executá-lo), o servidor de deve rejeitar a solicitação com o erro EWOULDHANG." Em outras palavras, ele iria enganar o grupo indústria que exigem servidores resolver o problema de travar.

Meu colega de mesa de almoço riu com a ideia. "Estou tão tentado a experimentar isso", disse ele. Não sei se ele realmente fez, mas ele acabou por ser irrelevante.

O documento base eventualmente foi aprovado. Fornecedores começaram a implementar as especificações. Trabalhar no documento estendido continuado por vários anos mais tarde. Eventualmente tornou-se claro de falar com os fornecedores que nenhum deles estavam interessados na implementação de qualquer coisa além do documento base.

Depois de descobrir isso, o grupo de indústria formalmente suspendeu as operações. Todos eles tinham que mostrar para seus anos de trabalho foi um quase completo documento que ninguém se preocupava. O grupo de indústria tinha perdido de vista do cliente. Passaram anos trabalhando para criar uma especificação que nunca iria ser implementada.

Raymond Chen

Raymond Chen' s Web site, The Old New Thing e título idêntico livro (Addison-Wesley, 2007) lidar com história de Windows, programação Win32 e roubo de carro inadvertido.

Conteúdo relacionado