¿Por qué diferentes navegadores procesan CSS3, HTML 5 y JavaScript de manera diferente?

El lenguaje humano es bastante impreciso cuando se trata de describir las especificaciones del sistema y la forma en que los navegadores se comportan de manera diferente se debe a que cada proveedor de navegadores interpretó las especificaciones de manera ligeramente diferente.

Considere esta frase hipotética de las especificaciones CSS:

El ancho del borde en píxeles debe recogerse de la última hoja de estilo.

Ahora esto parece bastante bien, pero deja muchos detalles menores como:

  • ¿Qué pasa si no se proporciona un ancho de borde, qué tan grueso debería ser entonces?
  • ¿Qué pasa si no se menciona ningún color, de qué color debe ser el borde?

Este tipo de preguntas y muchos otros casos extremos principalmente solo aparecen cuando te pones las manos y empiezas a escribir código y en tal escenario cuando los comités de especificaciones reales no son tan accesibles, los ingenieros que trabajan en la implementación de estas especificaciones toman decisiones sensatas por su cuenta que, por supuesto, podría dejar de ser diferente de lo que otro ingeniero habría hecho en otro equipo implementando e interpretando las mismas especificaciones.

Y si el tamaño de las especificaciones es de alrededor de 4000 páginas, más de esas áreas en blanco se traducirán eventualmente en comportamientos diferentes para las mismas especificaciones en la implementación.

Últimamente, ha habido pruebas para afirmar si un navegador cumple con los estándares o no y, a diferencia de las descripciones / especificaciones textuales, estos son códigos reales contra los cuales se prueba el comportamiento del navegador.

Una de esas pruebas es The Acid3 Test, Chrome en Linux llega a 99 para ello.