1 pontos por GN⁺ 2023-11-29 | 1 comentários | Compartilhar no WhatsApp
  • Em uma discussão da GitHub Community, foi levantado como problema o fato de que até a pesquisa de código em repositórios públicos não pode mais ser usada sem login, e o autor da pergunta criticou isso por prejudicar a acessibilidade do código público e a utilidade do open source
  • Um mantenedor do GitHub respondeu que a busca em todos os repositórios já exigia login há muito tempo e que, no início de 2023, ao reforçar o recurso de busca, a exigência de login foi estendida também à busca em repositórios individuais
  • Segundo o GitHub, o motivo é suportar a carga da busca para desenvolvedores e reduzir situações em que o servidor é sobrecarregado por requisições anônimas de bots e semelhantes
  • Participantes da discussão questionaram se exigir login é suficiente para impedir bots, já que repositórios públicos ainda podem ser clonados e pesquisados localmente, e citaram alternativas como rate limit, CAPTCHA e limitação de buscas simples
  • Na prática, usuários sem login não conseguem mais abrir diretamente links de busca em código público, e por isso também foram discutidas formas de contorno como grep.app, github1s, grep local, mecanismos de busca comuns e espelhamento em vários Git forges

Exigência de login passa a valer para a busca em código público

  • A GitHub Community Discussion #77046, com o título “Can no longer search code without being logged in”, trata da situação em que não é mais possível pesquisar código sem estar logado
  • O autor da pergunta explicou que tentou procurar algo em seu próprio repositório usando um dispositivo antigo, mas não conseguiu prosseguir por causa da exigência de login
    • Ele disse que precisaria acessar o gerenciador de senhas, passar por 2FA e usar uma YubiKey, mas foi bloqueado porque o notebook antigo não tinha porta USB-C
    • Também afirmou que queria permitir que outras pessoas usassem a busca no código do repositório público
  • O autor criticou a exigência de login para a busca de código via web, dizendo que, se o repositório é público, qualquer pessoa pode cloná-lo e usar ferramentas próprias para pesquisar e analisar o código
  • A discussão foi marcada como Answered com uma resposta do GitHub, e a página mostra 19 comentários e 58 respostas

Resposta do GitHub e justificativa oficial

  • O mantenedor do GitHub martinwoodward pediu desculpas pelo incômodo e respondeu que a busca em todos os repositórios já exigia login havia bastante tempo
  • Ele explicou que, no início de 2023, ao reforçar o recurso de busca, a exigência de login foi estendida também à busca em repositórios individuais
  • Ele afirmou que o objetivo principal é suportar a carga da busca para os desenvolvedores do GitHub e evitar que os servidores sejam sobrecarregados por requisições anônimas de bots e similares
  • Durante a discussão, outro participante também compartilhou o link The technology behind GitHub’s new code search, sobre a nova implementação da busca de código do GitHub

O centro da reação: repositórios públicos e acessibilidade do open source

  • Vários participantes disseram que, como o código de repositórios públicos pode ser clonado sem login, bloquear com login até a busca em código público é uma medida excessiva
  • Um participante explicou que é inconveniente obrigar usuários externos a fazer login no GitHub apenas para visualizar seu código-fonte público
    • Como exemplo, disse que queria compartilhar consultas como repo:USER/REPO, path:..., AND NOT path:**/_externals em uma única URL ou botão
    • Por causa da exigência de login, ele disse que teria de substituir isso por uma lista de URLs diretas para arquivos
  • Outros participantes apontaram a tensão entre a imagem do GitHub como “world's largest open source community” e a limitação da busca em código público
  • Alguns comentários lembraram que restrições parecidas já existiam antes da aquisição pela Microsoft, contestando a ideia de que isso seria algo totalmente novo

Debate sobre bots e custos

  • O GitHub alegou que a carga causada por bots anônimos é uma razão importante, mas alguns participantes argumentaram que exigir login dificilmente impede operadores de bots dedicados
  • Como alternativa, foi sugerido aplicar primeiro um rate limit e só pedir CAPTCHA ou login quando o limite fosse atingido
  • Também apareceu o argumento de que, como repositórios públicos podem ser clonados anonimamente, bots podem simplesmente migrar para busca local
    • Em resposta, outro participante rebateu que o clone não usa o processamento de busca do GitHub, então isso reduz o vetor de negação de serviço
    • Também houve a observação de que dados clonados podem ficar stale rapidamente
  • Se o custo da busca for alto, também foi sugerido separar a oferta: consultas simples para usuários sem login e consultas complexas para usuários autenticados

Limitações da própria busca e casos de comparação

  • Um participante comentou que, mesmo logado, ao pesquisar path:contributing.md em todos os repositórios públicos, apenas 5 páginas de resultados aparecem
    • Outro participante respondeu que isso não é um problema daquela consulta específica, mas uma limitação atual da busca, citando como discussão relacionada a GitHub Community Discussion #9868
  • Outro participante comparou o funcionamento da busca em SourceForge, Google Code archive, GitLab e Bitbucket
    • Disse que SourceForge e Google Code archive não têm busca
    • Disse que o GitLab exige login para busca global, mas permite busca por repositório
    • Disse que a busca do Bitbucket redireciona para login, mas que, ao encontrar o repositório, é possível pesquisar sem login

Formas de contorno e serviços alternativos

  • Como forma rápida de pesquisar um único repositório sem estar logado, foi apresentado um procedimento de clone local seguido de grep
    • Ir para /dev/shm
    • git clone https://github.com/user/repo
    • Entrar no repositório e executar grep -r "pattern" .
    • Apagar o repositório após a busca
  • Para pesquisa de padrões em todo o GitHub, foi citada a possibilidade de usar um mecanismo de busca comum com "pattern" site:github.com
    • Mas também foi observada a limitação de que isso não é tão poderoso quanto a busca interna do GitHub e que parte do código pode não estar indexada
  • Como ferramenta alternativa ou complementar, foi mencionado o grep.app, apresentado como capaz de pesquisar repositórios sem login
  • Também foi compartilhada a dica de trocar github.com por github1s.com na URL do GitHub para abrir o repositório em uma interface parecida com o VS Code online
  • GitLab, Framagit, Gitea, Forgejo, Codeberg e Gogs também foram citados como Git forges alternativos, e alguns deles permitem ativar busca de código em hospedagem própria

Conselho sobre a forma de hospedar projetos

1 comentários

 
GN⁺ 2023-11-29
Opiniões do Hacker News
  • Olhando para essa questão da forma mais benevolente possível, a nova busca de código do GitHub é, na prática, excelente, e pode ser um recurso que consome muitos recursos por fazer internamente muito mais trabalho do que um mecanismo de busca comum
    Ao limitar a contas logadas, dá para economizar bastante recursos de servidor que seriam usados para lidar com crawlers. A escolha aqui parece ser algo próximo de gastar 3 a 4 vezes mais, ou até mais, em infraestrutura de busca, ou levar críticas por exigir login. Eu mesmo criei uma ferramenta de busca de código para repositórios do GitHub, mas a busca de código padrão do GitHub é tão útil que quase não a uso mais: https://simonwillison.net/2020/Nov/28/datasette-ripgrep/

    • O motivo mais realista parece ser que as pessoas reclamam, mas acabam criando uma conta, e o GitHub pode se vangloriar de crescimento de novos usuários
      Por outro lado, usuários existentes podem ficar irritados por não conseguirem nem pesquisar sem fazer login. Em situações como usar o PC de outra pessoa, um computador público, uma aba anônima ou o tempo gasto com autenticação de dois fatores, isso é bem inconveniente. O GitHub poderia ter mantido uma busca básica barata e rápida para usuários não logados, mas não fez isso
    • A razão técnica é interessante, mas não é o ponto central
      No fim, tornou-se impossível participar de “open source hospedado no GitHub” sem se cadastrar no GitHub
    • Vários motivos são levantados, mas na prática parece bem provável que eles queiram, ou precisem, evitar scraping de conteúdo por empresas e pesquisadores ligados a IA
    • Se estão fazendo isso de propósito, a Microsoft é realmente péssima; se for simples incompetência, não surpreende que tenham estragado algo tão fácil
      grep é uma ferramenta de 50 anos, não é preciso escrever código do zero para busca de texto, basta usar software livre. Não estamos falando de uma startup amadora com um app CRUD e três desenvolvedores; é patético que uma das maiores e mais ricas empresas de tecnologia do mundo não consiga nem fazer busca de texto direito sem login. Se houver uma terceira explicação, eu gostaria de ouvi-la
    • A busca interna de código é simplesmente Elasticsearch, então não há nada de especial nisso
      A explicação do GitHub soa, em grande parte, como conversa fiada. Colocar autenticação obrigatória em um endpoint público não é uma solução adequada para o problema que eles dizem ter. Qualquer criador de bot interessado nesse endpoint só precisa fazer login com uma conta gratuita, então isso também não reduz de forma significativa a carga nos servidores
  • Isso começou há pelo menos 6 meses e também foi anunciado no changelog: https://github.blog/changelog/2023-06-07-code-search-now-req...
    Discussão no HN: https://news.ycombinator.com/item?id=36230929

    • É surpreendente que isso tenha aparecido como se fosse novidade. Parece algo que já existe há anos, a ponto de eu mal lembrar da última vez em que pesquisei sem estar logado
      Do ponto de vista de negócios, entendo completamente por que fizeram isso. Porque transforma as pessoas literalmente em usuários e aumenta o engajamento dos usuários
  • Agora precisamos parar de tratar o GitHub como uma plataforma aberta
    O GitHub é um jardim murado fechado, como qualquer outro serviço. O fato de hospedar muitos projetos open source que usamos não o torna melhor; talvez até o torne pior, porque ajudamos a empurrar parte da infraestrutura de contribuição desses projetos para trás da fechadura de uma conta corporativa

    • Para o usuário, dá na mesma se cadastrar em uma “conta corporativa”, em alguma conta aleatória de GitLab auto-hospedado, no Bugzilla, em uma wiki ou em alguma coisa de git
      Na verdade, entre essas opções, acho que uma conta do GitHub é melhor. Porque permite participar de uma quantidade quase infinita de projetos sem precisar criar novas contas o tempo todo nem ficar sem login. É difícil dizer que o GitHub bloqueou algo de forma substancialmente diferente das outras opções desse espaço. O GitHub criou um bom software e o ofereceu de graça, manteve-o bastante aberto e acessível, seguiu padrões onde havia padrões, forneceu APIs para o restante e ofereceu gratuitamente uma enorme quantidade de armazenamento e computação para projetos open source
    • Também é preciso dizer que o GitHub ajudou no crescimento de inúmeros projetos open source
      hospedagem Git, hospedagem de wiki, issues, GitHub Actions, GitHub Pages e uma API decente. Existem muitos motivos para colocar um projeto open source no GitHub
  • Em 2023, a web realmente se fechou. StackOverflow, Reddit, GitHub e Twitter todos frearam scraping e acesso via API
    O gatilho foi uma combinação de prevenção contra treinamento de IA e pressão por rentabilidade. Também houve realidades comerciais como a desaceleração do setor de tecnologia, os novos donos do Stack e do X, e o avanço do Reddit rumo ao IPO. No longo prazo, vejo o mercado de dados proprietários crescendo. Mecanismos de busca, ferramentas de IA e qualquer pessoa que precise de dados terão de pagar pelo fluxo de dados de origem ou pelo acesso à API; se só as empresas mais ricas puderem comprar esses dados, isso também pode levar a questões antitruste

    • No fim, parece que todos vão passar a achar normal que “StackOverflow, Reddit, GitHub, Twitter” vendam acesso a conteúdo criado e pertencente a outras pessoas
      Se algo é realmente dado proprietário, a compensação deve ir para o dono, não para um operador aleatório de servidor Git. Preço e condições também devem ser definidos pelo dono, não pelo operador do servidor. Se o servidor precisa ganhar dinheiro, que cobre pelo serviço básico em si. Por outro lado, se alguém criou algo para compartilhar, e a plataforma da época oferecia um canal eficaz para essa distribuição e também se promovia como adequada para isso, mudar as regras no meio do caminho é moralmente uma pirataria do trabalho dessa pessoa. É bem provável que boa parte do material dessas plataformas nunca tivesse sido publicado ali se os donos reais tivessem previsto restrições arbitrárias e taxas de acesso. Se as regras forem reescritas de forma radical, o conteúdo existente só deveria ser vendido quando o autor original concordar explicitamente. Mas o Reddit chegou a restaurar ativamente posts que autores haviam apagado em massa para impedir esse tipo de abuso
    • Essa tendência vinha de bem antes, mas neste ano muita coisa ficou especialmente mais trancada
      https://theoatmeal.com/comics/reaching_people
    • Para ser justo, o GitHub ainda oferece a maioria das funções, exceto a busca de código, como endpoints públicos de API anônima
      Só que com limites de taxa muito mais rígidos. Criar uma conta no GitHub é gratuito e nem chega a ser tão invasivo. Mesmo logado, todas as APIs já têm limites de taxa para impedir que você derrube os servidores. Por isso ferramentas como https://gitstar-ranking.com/ têm dificuldade ao tentar coletar as estrelas do GitHub de todos os repositórios usando uma conta gratuita. O dado realmente importante, o código-fonte, pode ser clonado anonimamente por um endpoint HTTPS, e a busca no código pode ser feita localmente. Sites de terceiros como https://grep.app/ também são possíveis dessa forma. No caso de Reddit/Twitter, os dados de origem — posts, comentários, votos/recomendações e tweets — deixaram de ser oferecidos pela API, o que tornou difícil ou impossível criar ferramentas de terceiros. Já no GitHub, a situação é bem diferente: os dados de origem são facilmente acessíveis, e apenas a camada auxiliar de busca foi bloqueada para usuários não logados
    • Sim e não. O ExpertsExchange era famoso por colocar respostas “atrás de um muro” e era parecido com o StackOverflow
      Lembro que, quando o StackOverflow foi lançado, ele era comparado ao expertsexchange, mas avaliado como “aberto”. Agora é hora de sair dos serviços centralizados e ir para uma estrutura mais distribuída e baseada em microtransações. Muita gente no HN vai odiar, mas fóruns de perguntas e respostas, agregação de links de notícias e comentários, hospedagem Git, fluxos de aprovação, wikis e sistemas de tickets podem e devem ser implementados de forma totalmente distribuída. Tecnologias como Kademlia/BitTorrent, IPFS e CryptoTokens para pagamentos por microtransações são caminhos possíveis. Ir para 100% distribuído é a única maneira de manter essas coisas “abertas” e livres da ganância corporativa. Mesmo quando fundadores começam com boas intenções, no longo prazo o produto acaba sendo vendido e os contadores passam a mandar; isso se repetiu várias vezes
  • Fazendo uma leitura de boa-fé, busca exige bastante computação e, por isso, pode ser um grande vetor de ataque de negação de serviço
    Não sei quantos dados comportamentais o GitHub consegue coletar de usuários logados, nem quão úteis eles são em comparação com código que já é público. Talvez dê para usar isso para entender quais partes do código são importantes, mas é difícil chamar isso de informação específica por usuário

    • É um problema real para qualquer um que ofereça busca
      Cerca de 0,5% do tráfego do meu mecanismo de busca é de humanos. Não conheço muitos mecanismos de busca que não tenham estatísticas parecidas
    • Essa coleta de dados comportamentais é exatamente o jeito Microsoft de fazer as coisas, então não há necessidade de aplicar uma interpretação de boa-fé
      Desde o dia da aquisição pela MS, não vejo nenhum motivo legítimo para qualquer projeto open source permanecer naquela plataforma. E não é como se faltassem boas alternativas para as quais dá para migrar com um único git clone
    • Outro fator: permitir, de forma anônima, busca facetada com regex em uma massa gigantesca de código permite que usuários mal-intencionados encontrem credenciais hardcoded e acessem sistemas adicionais, além de dificultar deixar uma trilha de auditoria adequada
      Então há várias explicações plausíveis para bloquear a API
  • Quando não estou logado, uso o Sourcegraph. Comparado à busca existente, ele ainda tem a vantagem de ser muito melhor
    É simples a ponto de bastar colar a URL do repositório começando por github.com. Por exemplo, em sourcegraph.com/github.com/rust-lang/rust/ dá para pesquisar unit nesse repositório

  • Parte do fosso de IA da Microsoft está em controlar a capacidade dos concorrentes de usar as informações do GitHub
    Eu não ficaria surpreso se, em seguida, começassem até a restringir git clone

    • Eu ficaria surpreso, porque restringir git clone quebraria sistemas de CI demais
      Seria preciso dizer adeus a uma grande parte do NPM, ao gerenciamento de pacotes do Go, a scripts Jenkins etc.
    • Fico me perguntando se, mesmo que o código fique atrás de login ou até de uma assinatura paga, ainda dá para chamá-lo de open source de acordo com a licença do repositório
      Pelo que lembro, o GitHub já aplica limites de taxa para desacelerar clones ou uso excessivo da API
  • Mesmo concordando com a posição de quem fez a pergunta, não sei se havia necessidade de falar daquele jeito
    Também não concordo totalmente com essa posição, já que busca não é necessariamente barata e pode ser usada em ataques do tipo DoS. Não vejo em que ajuda dizer coisas como “não basta monetizar até cada evacuação, agora querem rastrear quais linhas de código eu vejo?”. É preciso se acalmar. O argumento de base também não é tão bom. Os repositórios em si não são bloqueados por login; repositórios públicos continuam acessíveis publicamente, inclusive via clone. Se o autor quer que seu repositório e seu código sejam úteis ao público, no momento em que alguém passa de simples download e busca para abrir uma issue ou enviar um PR, o colaborador de qualquer forma precisa fazer login

    • Há uma necessidade muito frequente de fazer buscas rápidas em código-fonte
      Isso é necessário para entender como algo funciona ou ao discutir em lugares que não são issues do GitHub. Fazer clone costuma ser rápido, mas não em repositórios muito grandes, e pode ser que não haja espaço no dispositivo atual para clonar. Além disso, se muita gente passar a clonar sempre em vez de fazer login, especialmente porque o login do GitHub é incômodo por causa da autenticação em duas etapas, fica a dúvida se a carga no sistema sequer diminuiria. Nem todo mundo quer ter uma conta no GitHub
  • Hacker News: ficou impossível ver a primeira página sem encontrar reclamações de que um serviço gratuito e sem anúncios não é oferecido a usuários não logados

    • O ditado de que, se é grátis, você é o produto, está correto na maioria dos casos
      Neste caso, seu código está sendo usado para treinar o Copilot e coisas do tipo. Mesmo que não fosse assim e o serviço fosse realmente tão bem-intencionado quanto você acredita, dá para aplaudir ao ver o serviço piorando para bastante gente? Isso é interessante e empolgante?
    • Há alguma base para essa afirmação? Vejo o HN quase todos os dias, mas posts do tipo “não dá para fazer X sem login” não parecem ser especialmente populares
      O único exemplo que me vem à mente é a mudança na API do Reddit, mas isso já faz bastante tempo e só tem uma relação frouxa com login
  • Se quiser continuar pesquisando em open source, https://sourcegraph.com/search não exige login e também inclui grandes projetos que não estão no GitHub
    Para referência, sou CTO da Sourcegraph

    • Como não quero fazer login com minha conta pessoal do GitHub no computador da empresa, sempre uso o Sourcegraph quando preciso pesquisar em repositórios
      Antes eu esperava que a busca do GitHub pudesse competir com git clone + grep, mas não imaginava que o preço seria uma barreira de login. Pelo que me lembro, eu esperava que a barreira de login existisse só por ser um recurso beta e que fosse removida quando virasse a busca padrão
    • Fico curioso por que decidiram permitir busca sem login, mas exigir login no Cody