Sobre
O que o catálogo diz, e como ele sabe.
2600 ferramentas de desenvolvimento, cada uma listada com o que substitui. O resto do que você vê em uma ferramenta vem do GitHub, não de quem a adicionou.
O que uma entrada afirma
Cada ferramenta é um pequeno arquivo YAML em data/tools/. Ele indica a ferramenta, seu repositório no GitHub, sua categoria, as ferramentas que ela substitui com um tipo de substituição para cada uma, e uma afiliação, quando houver. É tudo o que um contribuidor pode escrever.
Uma entrada nunca informa estrelas, licença, versão ou descrição. O schema rejeita esses campos, então um pull request não consegue inflar uma contagem de estrelas nem alegar uma release que não existe.
A atualização noturna
Toda noite, e sempre que os dados do catálogo mudam na branch main, o refresh lê cada repositório listado pela API do GitHub:
- descrição, página inicial, linguagem, licença, estrelas, forks e topics
- se o repositório está arquivado, e a data do último push
- a última release, ou a última tag quando não há release, e se ela está assinada
- as cinco últimas releases publicadas, exibidas na página da ferramenta
- os autores dos commits na branch padrão nos últimos 90 dias, dos quais só a contagem é guardada
- os nomes dos arquivos anexados à última release, lidos para identificar os sistemas operacionais e as arquiteturas que eles citam
- o arquivo de mantenedor descrito em verificado
A página da ferramenta transforma esses dados em quão vivo um projeto está, nunca em uma nota. A idade é contada a partir do dia em que o repositório foi criado. O ritmo de releases é o intervalo mediano entre as últimas releases estáveis, exibido a partir de três. Contribuidores ativos são os autores de commits distintos na branch padrão nos últimos 90 dias: contas cujo nome termina em [bot] ficam de fora, e um commit não vinculado a nenhuma conta do GitHub conta pelo email, que nunca é publicado. Só os 500 commits mais recentes são lidos, então um projeto mais movimentado mostra um limite inferior como 40+. Um fluxo com squash merge credita um autor por pull request, independentemente de quem mais tenha escrito junto, e para uma ferramenta que vive em um monorepo a contagem cobre o repositório inteiro, o que a página informa. As plataformas só aparecem quando os nomes dos arquivos da última release as citam, e nada é deduzido quando não citam, nem para uma ferramenta em um monorepo, cuja última release pode ser de outro pacote.
Quando algo muda, o refresh faz commit do novo catálogo e um novo build deste site é publicado. Se o GitHub deixa de retornar o repositório de uma ferramenta listada, porque ele foi excluído ou tornado privado, o refresh não publica nada e falha, para que uma pessoa verifique: uma ferramenta só sai do catálogo por um pull request que remove a entrada dela.
Cada refresh também compara o novo catálogo com o anterior e registra o que mudou: uma licença, o nome de um repositório, um arquivamento, uma nova release, uma ferramenta que entra ou sai. A página o que mudou lista essas mudanças por dia, com um feed RSS para o catálogo inteiro, um para cada ferramenta e um para cada categoria. Uma mudança nas estrelas nunca conta.
Entre duas execuções noturnas, uma release publicada atualiza sua ferramenta em poucos minutos quando o repositório tem o GitHub App do awesome-alternatives instalado, ou executa refresh-action no seu workflow de release.
Selos
- ✓ assinada
- Ao lado da última versão. A tag tem uma assinatura que o GitHub verificou ou, no caso de uma tag leve, o commit para o qual ela aponta tem. Só a última release é verificada.
- Verificado pelos mantenedores
- O próprio repositório da ferramenta tem um arquivo
.awesome-alternativesna raiz da branch padrão, comslug:definido para esta entrada. Só alguém com acesso de escrita ao repositório pode adicioná-lo, então o selo indica que os mantenedores respaldam a entrada. O refresh lê o arquivo toda noite.O selo também é aplicado quando o GitHub App do awesome-alternatives está instalado no repositório, já que instalar um app nele exige permissão de administrador.O arquivo data a verificação pelo seu último commit, e uma entrada editada depois dessa data mostra “editada desde a verificação” até que os mantenedores façam um novo commit no arquivo, para o que basta um comentário # com data.Em cada lista, uma ferramenta verificada vem antes das não verificadas com o mesmo grau de substituição, e as estrelas ordenam o resto. Ela nunca passa à frente de uma substituição melhor. - arquivado
- O repositório está arquivado e não recebe mais alterações. Uma ferramenta arquivada é justamente o que as pessoas querem abandonar, então ela só é aceita como algo que outras entradas substituem, nunca como alternativa, e o aviso sem push não se aplica a ela.
- Other
- Exibido como licença quando o GitHub detecta uma, mas não consegue associá-la a um identificador SPDX. Quando o GitHub não detecta nenhuma, a ferramenta mostra Nenhuma detectada e o aviso sem licença se aplica a ela.
Tipos de substituição
Cada substituição tem um, definido por quem adiciona a entrada.
- Drop-in
- Aceita a configuração ou a interface do original sem mudanças: você troca uma pela outra sem mexer no seu setup. Pedir um drop-in na pesquisa mantém só estas.
- Substituição completa
- Faz o mesmo trabalho, do seu próprio jeito. Conte com migrar a sua configuração.
- Parcial
- Faz parte do trabalho. A nota abaixo da ferramenta diz qual parte.
Avisos
Um aviso nunca remove uma ferramenta. É algo que um mantenedor olha antes de fazer merge de um pull request, e algo que talvez você queira saber antes de depender da ferramenta.
- Repositório movido
- O repositório agora está sob outro nome ou outro dono. O GitHub redireciona o endereço antigo, mas a entrada deveria ser atualizada.
- Nenhuma licença detectada
- O GitHub não detecta nenhuma licença, então os termos sob os quais você pode usar o código não estão claros.
- Sem release nem tag
- O repositório não tem release nem tag, então não há versão para fixar.
- Sem push há um ano
- Nada foi enviado por push há mais de 365 dias. Repositórios arquivados ficam de fora deste aviso.
- Pico incomum de estrelas
- Um dia que ganhou 50 estrelas ou mais, e pelo menos 5 vezes o ritmo diário habitual da ferramenta no último mês, e pelo menos 3% das estrelas que ela tinha no dia anterior, para que um bom dia comum de um projeto grande não conte. Estrelas compradas chegam em rajadas, e um lançamento no Hacker News também, por isso quem decide é uma pessoa. O GitHub não lista mais quem deu estrela em um repositório, então a atualização noturna guarda a contagem de estrelas de cada dia e compara os dias. Ela precisa de uma semana desse histórico antes de julgar, ou seja, uma ferramenta só é verificada depois de listada.
Alguns problemas bloqueiam o pull request: um repositório privado, um fork, arquivado mas oferecido como alternativa, com menos de 30 dias, ou já listado sob outro slug. O guia de contribuição lista todas as verificações.
Afiliação
Quem mantém uma ferramenta, trabalha nela ou é pago por ela precisa declarar isso na entrada. Listar o seu próprio projeto é bem-vindo, não declarar é motivo para remoção. Quando uma entrada tem uma afiliação, a página da ferramenta a mostra como foi escrita.
Como a pesquisa funciona
Sua pesquisa é lida primeiro como palavras-chave: os nomes das ferramentas que outras substituem, as linguagens e licenças do catálogo, e "drop in". Quando nenhuma ferramenta a substituir é citada, um pequeno modelo de embedding multilíngue que roda no servidor de pesquisa compara a pesquisa com a descrição de cada ferramenta, então uma pesquisa escrita em qualquer idioma do site encontra as mesmas ferramentas que a versão em inglês, mesmo que as descrições continuem em inglês, do jeito que o GitHub as retorna. Se uma ferramenta a substituir se destaca claramente, ela é escolhida; caso contrário, os resultados são ordenados pela proximidade com a pesquisa. Só quando nenhuma das duas etapas encontra uma ferramenta a substituir, e o servidor tem uma chave para isso, o texto da pesquisa é enviado ao Jev, um serviço externo, para que ele o interprete. Essa interpretação fica em cache no servidor por um dia. A página de privacidade diz o que é enviado e o que é guardado.
Algumas palavras viram filtros, em todos os idiomas do site. "Open source" ou "código aberto" mantém as ferramentas cuja licença é aberta. "Mantido" descarta as ferramentas arquivadas e as sem push há 365 dias. "Auto-hospedado" mantém as ferramentas de categorias de serviços que você mesmo roda. Uma plataforma ou uma forma de deploy, como Linux ou Docker, é reconhecida mas ainda não verificada, e os resultados dizem isso em vez de fingir.
A partir de um agente de IA
O catálogo também é um servidor Model Context Protocol (MCP) em https://awesome-alternatives.com/api/mcp, via Streamable HTTP, sem chave e sem conta. Um agente pode encontrar alternativas a uma ferramenta ou a um produto, listar ferramentas por categoria, linguagem ou licença, e ler os dados de uma ferramenta. A ferramenta de pesquisa dele lê as pesquisas só com palavras-chave e o modelo deste servidor, nunca com o Jev, e tem um limite por endereço; as outras ferramentas não têm.
Para adicioná-lo ao Claude Code: claude mcp add --transport http awesome-alternatives https://awesome-alternatives.com/api/mcp
Licenças
Os dados do catálogo estão sob CC BY-SA 4.0: pode reutilizá-los livremente, com um link para awesome-alternatives.com e sob a mesma licença. O código do site, da API e dos scripts está sob a licença GNU AGPL v3.