Acho que as perguntas que precisamos fazer para responder às suas são "O que outros idiomas / ecossistemas ganham por ter seu próprio repositório de pacotes centralizado?" e "Isso se aplica ao C / C ++?"
Eu sinto que a resposta para a primeira pergunta tem algo a ver com a promoção inicial de um novo idioma: os primeiros adotantes querem facilitar ao máximo para que os iniciantes entrem no ecossistema, adquiram códigos úteis e testados e contribuam de volta. Por razões óbvias, o "gráfico de uso" sempre tem uma única raiz - o (s) criador (es) do idioma. Geralmente, há uma implementação de referência (pelo menos inicialmente) e, portanto, qualquer código que você queira compartilhar precisa estar em conformidade.
Isso facilita a criação de pacotes que apenas baixam e compilam. Certamente, se C ou C ++ tivesse sido introduzido em 2013, suas comunidades poderiam ter seguido um caminho evolutivo semelhante, mas não o fizeram e não há uma única cadeia de ferramentas predominante para aplicar um gerenciador de pacotes. Isso torna a implementação de um programa muito problemático para valer a pena. (você deve fazer com que os usuários escolham entre libfoo-gcc e libfoo-vs? Você deixa o empacotador resolver? Ou o processo de compilação? Em caso afirmativo, como um pacote é diferente de um tarball direto?)
Então, para resumir minha resposta à primeira pergunta, acho que o padrão de criação de gerenciadores de pacotes serve principalmente para impulsionar a adoção .
Com isso em mente, acho que é bastante fácil ver por que nenhum sistema único surgiu para atender a essa necessidade - porque a necessidade não existe para programadores de C e C ++. O que constitui um problema para a comunidade C e C ++ (ou para qualquer comunidade de programadores, na verdade) é a necessidade originalmente implícita: distribuir, manter-se atualizado e contribuir com o código de retorno. Isso foi resolvido muitas vezes por pessoas diferentes com graus variados de sucesso e, de fato, um sistema está ganhando participação de mercado significativa: o git (e alguns outros sistemas anteriores a isso).
Basicamente, quando os problemas diferem, as soluções também parecem diferentes, mas IMHO a diferença entre digitar gem install
e git clone
é discutível.