Compartir a través de


Windows Confidential: ¿Por qué no podemos todos trabajamos juntos?

Un peligro de diseñar un documento de interoperabilidad es que se podría encontrar que nadie quiere implementar cualquiera de sus especificaciones.

Raymond Chen

Hace años, estaba teniendo comida con varias personas de otro grupo de proyecto dentro de Microsoft. Esto no fue algo planificado. Fue algo que evolucionó de una decisión espontánea para almorzar con un colega visitante.

Estos tipos de tertulias de almuerzo informal son divertidos. Llego a conocer otras personas y los proyectos en los que está trabajando. Si tengo suerte, puedo recoger unas historias más.

Sesión en la Mesa fue uno de los representantes de Microsoft a un grupo de la industria encargada de elaborar un documento de interoperabilidad para algo-o-otros. El enfoque del documento real no era tan interesante para mí como la visión de las maquinaciones de un grupo de la industria tratando de desarrollar un documento de interoperabilidad.

Dijo que los miembros del grupo se habían dividido en dos facciones. Los miembros de la primera facción querían diseñar un documento de interoperabilidad que prevé todas las solicitudes de posibles e inventó esquemas para describirlas. "¿Qué sucede si un cliente quiere jiggle el frobulator cuando el flujo se desmodula? Es necesario tener una manera de especificar una excepción de modulación".

La gente en la segunda facción quería diseñar un documento de interoperabilidad que cubría los escenarios importantes. Alguien leyendo el documento podría implementar cualquier escenario con esfuerzo razonable. Serían capaces de conseguir que se haga rápidamente, antes de que todos los proveedores crecieron impacientes y corrían hacia adelante con sus propias implementaciones personalizadas, ninguno de los cuales sería compatibles con cualquier otro.

La segunda facción cree que sería aceptar que el documento de interoperabilidad no cubre todas las posibilidades. Sería eficaz como no excluye la posibilidad de agregar compatibilidad para este tipo de funciones en el futuro. Mi colega de mesa de almuerzo pertenecía a la facción de segunda.

Mantener a todos contentos

En respuesta a este choque de filosofías irreconciliable, el grupo de industria acordó desarrollar dos documentos. El primero fue un documento base que abarca los escenarios importantes. Esto satisface a la segunda facción. También fue un documento extendido que amplió las capacidades del documento base. Esto satisface a la primera facción.

Sospecho que esto detuvo la mayoría si no todos los argumentos sobre lo que debe ir en el documento de interoperabilidad. En su lugar, los miembros del grupo de industria discutieron sobre si una característica particular era una función de base o un extendido.

Naturalmente, la primera facción argumentan que cualquier nueva función es una función de base. La segunda facción naturalmente argumentan que cualquier nueva característica era una función extendida. Podría probablemente resolvieron esto estableciendo que las personas en la segunda facción fueron el "subgrupo de características básicas" y hacen los árbitros finales sobre lo que consideran una característica básica.

Mi colega de mesa de almuerzo estaba exasperada. Dijo que el documento extendido se había convertido en tan complicado que las solicitudes del cliente comenzaron a parecerse a programas informáticos diminutos. El servidor debe ejecutar estas rutinas para determinar o no la solicitud de honor.

Sugerí medio bromeando proponen agregar una cláusula simple al documento extendido: "si se recibe un paquete de solicitud, evaluación de los cuales nunca produciría un resultado (resultando en una denegación de servicio si el servidor ha intentado ejecutarlo), el servidor debe rechazar la solicitud con el error EWOULDHANG." En otras palabras, él sería engañar al grupo de la industria que requieren servidores resolver el problema de detener.

Mi colega de mesa de almuerzo merecieron la idea. "Estoy tan tentado a probar eso", dijo. No sé si realmente lo hizo, pero resultó para ser irrelevante.

Finalmente se aprobó el documento base. Proveedores comenzaron a aplicar las especificaciones. Trabajar en el documento extendido continuado durante varios años después. Finalmente quedó claro de hablar con los proveedores que ninguno de ellos estaban interesado en la aplicación nada más allá del documento base.

Después de descubrir esto, el grupo de la industria formalmente suspendió sus operaciones. Todos tenían que mostrar por sus años de trabajo fue un documento completo sobre todo que nadie importaba. El grupo de la industria había perdido de vista del cliente. Pasaron años tratando de diseñar una especificación que nunca se ejecutaría.

Raymond Chen

Raymond Chen' s Libro titulado idénticamente (Addison-Wesley, 2007), The Old New Thing y sitio Web Windows historia, programación de Win32 y robo de autos involuntaria.

Contenido relacionado