Por que os navegadores criam prefixos de fornecedores para propriedades CSS?

Talvez seja uma resposta óbvia, mas

Por que diabos os navegadores decidiriam criar seus próprios prefixos de fornecedor para border-radius e afins?

Quero dizer: por que eu tenho que digitar:

 -moz-border-radius: 10px; -webkit-border-radius: 10px; border-radius: 10px; 

É porque cada plataforma pensava “Somos legais, vamos chegar a uma maneira melhor de fazer cantos arredondados?” Parece totalmente e inexplicavelmente redundante digitar três linhas para uma.

   

É porque os resources foram implementados pelos fornecedores antes que a especificação atingisse seu estágio final de lançamento.

Os prefixos do fornecedor garantem que não haja conflitos com a alteração da funcionalidade, etc.

Originalmente, o objective dos prefixos de fornecedores era permitir que os criadores de navegadores começassem a suportar declarações experimentais de CSS.

Digamos que um grupo de trabalho do W3C esteja discutindo uma declaração de grade (que, aliás, não seria uma idéia tão ruim). Além disso, digamos que algumas pessoas criam uma especificação de rascunho, mas outras discordam de alguns detalhes. Como sabemos, esse processo pode demorar séculos.

Além disso, vamos dizer que a Microsoft, como um experimento, decide implementar a grade proposta. Neste momento, a Microsoft não pode ter certeza de que a especificação não será alterada. Portanto, em vez de adicionar grade ao seu CSS, ele adiciona o -ms-grid.

O prefixo do fornecedor diz “esta é a interpretação da Microsoft de uma proposta em andamento”. Assim, se a definição final de grade for diferente, a Microsoft poderá adicionar uma nova grade de propriedade CSS sem quebrar páginas que dependam de -ms-grid

Fonte

ATUALIZAÇÃO A PARTIR DE 2016

Como este post de 3 anos, é importante mencionar que agora a maioria dos vendedores entendem que estes prefixo estão apenas criando código duplicado desnecessário e a situação onde você precisa especificar 3 regras css diferentes para obter um efeito trabalhando em todos os navegadores é um um indesejado.

Conforme mencionado neste glossário sobre a visão da Mozilla sobre o Vendor Prefix em May 3, 2016 ,

Os fornecedores de navegadores estão agora tentando se livrar do prefixo do fornecedor para resources experimentais. Eles perceberam que os desenvolvedores da Web os estavam usando em sites de produção, poluindo o espaço global e dificultando o desempenho dos prejudicados.

Por exemplo, apenas alguns anos atrás, para definir um canto arredondado em uma checkbox, você tinha que escrever:

 -moz-border-radius: 10px 5px; -webkit-border-top-left-radius: 10px; -webkit-border-top-right-radius: 5px; -webkit-border-bottom-right-radius: 10px; -webkit-border-bottom-left-radius: 5px; border-radius: 10px 5px; 

Mas agora que os navegadores passaram a suportar totalmente esse recurso, você realmente só precisa da versão padronizada:

 border-radius: 10px 5px;