Voltar aos artigos

Um terço dos repositórios mais estrelados do GitHub está parado há dois anos

3 min de leituradadosmanutenção

Este artigo foi traduzido automaticamente e não passou por revisão de falante nativo. Ler o original →

Acompanhamos mais de 67 mil repositórios do GitHub com mil estrelas ou mais e registramos seu estado diariamente. Ordená-los por quanto tempo passou desde o último push produz um número incômodo.

Último pushReposParcelaMediana de estrelasIssues abertas / 1k estrelas
Menos de 3 meses27,19142.9%2,42911.5
3–12 meses9,22414.5%1,9839.1
1–2 anos6,57510.4%1,97410.1
Mais de 2 anos20,43932.2%1,7729.0
63,429 repositórios com data de push registrada.

Cerca de um terço não recebeu um único push em mais de dois anos. Menos da metade foi tocada nos últimos três meses.

Esse número convida a duas objeções imediatas. As duas são razoáveis. Nenhuma sobrevive intacta aos dados.

Objeção 1: "Isso tudo é awesome-list"

A intuição é que listas curadas, coletâneas de livros e repositórios de preparação para entrevistas acumulam estrelas sem nunca precisar de um commit. Inflam o grupo parado sem dizer nada sobre software.

O efeito é real. Repositórios sem linguagem de programação detectada são 5,0% do grupo ativamente mantido e 10,8% do grupo frio de dois anos — exatamente o dobro. Somando linguagens de documentação (Markdown, HTML, TeX, Jupyter), o padrão se mantém: 3,4% contra 6,0%.

Mas juntos isso dá cerca de um sexto do grupo frio. Os outros cinco sextos são repositórios com uma linguagem de programação real — software de verdade, intocado por dois anos, com milhares de estrelas apontadas para ele.

Estes são os maiores:

  1. jlevy/the-art-of-command-line161.8k2.1 anos em silêncio
  2. justjavac/free-programming-books-zh_CN117.7k2.0 anos em silêncio
  3. nvbn/thefuck97.6k2.0 anos em silêncio
  4. fighting41love/funNLP81.9k2.2 anos em silêncio
  5. CompVis/stable-diffusion73.2k2.1 anos em silêncio
  6. prakhar1989/awesome-courses69.9k3.2 anos em silêncio
  7. resume/resume.github.com62.9k3.4 anos em silêncio
  8. xingshaocheng/architect-awesome60.8k2.3 anos em silêncio
  9. atom/atom60.8k3.5 anos em silêncio
  10. angular/angular.js58.6k2.3 anos em silêncio

Alguns são de fato material de referência. Outros são software que as pessoas continuam instalando.

Objeção 2: "Parado não é abandonado — bom software fica pronto"

Esta é mais forte. Uma biblioteca pequena e focada que resolveu bem seu problema não precisa de commits. Agitação não é saúde, e um repositório silencioso pode estar simplesmente pronto.

Se essa fosse a história toda, porém, esperaríamos uma assinatura no rastreador de issues. Um projeto abandonado com usuários reais acumula issues que ninguém tria; um projeto realmente pronto não atrai muitas para começar. Então o acúmulo, normalizado pelo tamanho da audiência, deveria parecer bem diferente entre os dois grupos.

Não parece. Veja a última coluna da tabela: as issues abertas por mil estrelas ficam entre 9 e 11,5 em todos os grupos. Projetos ativamente mantidos carregam um acúmulo normalizado ligeiramente maior que os frios de dois anos.

O resultado nos surpreendeu — construímos essa coluna esperando que separasse os grupos, e ela se recusou.

O que essa linha plana provavelmente significa

A leitura mais plausível é que o abandono é mútuo. Projetos raramente ficam em silêncio enquanto usuários seguem martelando o rastreador de issues. A atenção vai embora dos dois lados ao mesmo tempo: quem mantém para de publicar, e quem abriria issues já migrou para outra coisa.

É uma história menos dramática que "milhares de projetos negligenciados com usuários furiosos". Também é uma notícia pior para quem usa estrelas do GitHub para escolher dependências. Um repositório pode ser ao mesmo tempo muito estrelado, visivelmente parado e sem parecer quebrado por fora — porque quem reclamaria já foi embora sem dizer nada.

Convém não esticar demais. O que vemos é um único instantâneo atual da contagem de issues abertas, e o número do GitHub inclui pull requests. Não sabemos se issues foram fechadas em massa, se quem mantém desativou o rastreador, nem como o acúmulo se moveu ao longo do tempo. A linha plana é compatível com o abandono mútuo; não o prova.

A versão prática

A contagem de estrelas registra quantas pessoas um dia acharam que o projeto valia um marcador. Não diz nada sobre se alguém ainda o mantém e — pelos dados de issues — nem muito sobre se alguém ainda o usa.

Antes de adotar uma dependência pela contagem de estrelas, olhe a data do último push. Está a um clique e discorda das estrelas em cerca de um terço das vezes.

O que estes dados não podem dizer

  • A amostra são repositórios que já passaram de 1.000 estrelas, não todo o GitHub. Nada aqui descreve repositórios típicos.
  • pushedAt conta pushes para qualquer branch, incluindo commits automatizados. É um sinal de vida, não uma medida de trabalho significativo.
  • A contagem de issues abertas inclui pull requests, e temos um único instantâneo atual, não um histórico.
  • A atribuição de linguagem segue a detecção do próprio GitHub, que decide por bytes de arquivo e pode rotular um projeto de forma inesperada.
  • Outros 4.123 repositórios não têm data de push utilizável e ficam fora de todos os grupos acima.

As tabelas se atualizam com nossa coleta diária. Você pode ordenar o mesmo corpus por conta própria no ranking.

Todos os números deste artigo são lidos ao vivo do nosso banco de dados e atualizados diariamente.