GitHub: ya no se puede buscar código sin iniciar sesión
(github.com/orgs)- En una discusión de GitHub Community se señaló como problema que la búsqueda de código en repositorios públicos ya no puede usarse sin iniciar sesión, y quien abrió el tema criticó que esto perjudica la accesibilidad del código público y el aprovechamiento del software de código abierto
- Un mantenedor de GitHub respondió que la búsqueda en todos los repositorios requería inicio de sesión desde hace mucho tiempo y que, al reforzar la función de búsqueda a inicios de 2023, el requisito de iniciar sesión se extendió también a la búsqueda dentro de repositorios individuales
- Según GitHub, la razón es poder soportar la carga de búsqueda para desarrolladores y reducir situaciones en las que el servidor queda saturado por solicitudes anónimas de bots y otros actores
- Quienes participaron en la discusión cuestionaron si exigir inicio de sesión basta realmente para frenar bots, ya que los repositorios públicos siguen pudiendo clonarse y buscarse localmente, y mencionaron alternativas como rate limiting, CAPTCHA o restricciones para búsquedas simples
- En la práctica, como los usuarios sin sesión ya no pueden abrir directamente enlaces de búsqueda de código público, también se discutieron vías alternativas como grep.app, github1s,
greplocal, motores de búsqueda generales y el mirroring en varios Git forge
Se aplica el requisito de iniciar sesión para buscar código público
- La discusión de GitHub Community #77046, titulada “Can no longer search code without being logged in”, trata la situación en la que ya no es posible buscar código sin iniciar sesión
- La persona que abrió el tema explicó que intentó buscar algo en su repositorio desde un dispositivo antiguo, pero no pudo continuar por la exigencia de iniciar sesión
- Dijo que tuvo que acceder a su administrador de contraseñas, que necesitaba 2FA y una YubiKey, y que quedó bloqueado porque su laptop antigua no tenía puerto USB-C
- También señaló que quería que la gente pudiera usar la búsqueda de código en repositorios públicos
- Quien planteó la pregunta criticó que, si un repositorio público puede clonarse y luego buscarse o analizarse con herramientas dedicadas, cuesta entender por qué la búsqueda de código en la web exige iniciar sesión
- La discusión quedó marcada como Answered con una respuesta de GitHub, y la página muestra 19 comentarios y 58 respuestas
Respuesta de GitHub y fundamento oficial
- El mantenedor de GitHub martinwoodward respondió disculpándose por la molestia y señaló que la búsqueda en todos los repositorios requería inicio de sesión desde hace mucho tiempo
- Explicó que, al reforzar la función de búsqueda a inicios de 2023, el requisito de iniciar sesión se amplió también a la búsqueda dentro de repositorios individuales
- Como cambio relacionado, compartió el enlace Code search now requires login
- Indicó que el objetivo principal es soportar la carga de búsqueda para desarrolladores de GitHub y evitar que el servidor quede sobrepasado por solicitudes anónimas de bots y otros actores
- Durante la discusión, otra persona compartió el enlace The technology behind GitHub’s new code search, sobre la nueva implementación de búsqueda de código de GitHub
El núcleo del rechazo: repositorios públicos y accesibilidad del código abierto
- Varios participantes señalaron que, como el código de los repositorios públicos puede clonarse sin iniciar sesión, bloquear con inicio de sesión incluso la búsqueda de código público parece una medida excesiva
- Una persona explicó que le resulta incómodo que usuarios externos tengan que iniciar sesión en GitHub para ver su código fuente público
- Puso como ejemplo que quería compartir consultas como
repo:USER/REPO,path:...,AND NOT path:**/_externalsmediante una sola URL o botón - Dijo que, debido al requisito de iniciar sesión, tiene que sustituir eso por varias URLs directas a archivos
- Puso como ejemplo que quería compartir consultas como
- Otras personas señalaron la tensión entre la limitación de la búsqueda en código público y el hecho de que GitHub se presente como la “world's largest open source community”
- Algunos comentarios recordaron que ya existían restricciones parecidas desde antes de la adquisición por parte de Microsoft, y respondieron que esta limitación no es completamente nueva
Debate sobre bots y costos
- Aunque GitHub argumentó que la carga viene de solicitudes anónimas de bots, algunas personas sostuvieron que exigir inicio de sesión difícilmente detendrá a operadores de bots dedicados
- Como alternativa, se propuso aplicar primero rate limiting y, al llegar al límite, pedir CAPTCHA o inicio de sesión
- También surgió el contraargumento de que, como los repositorios públicos pueden clonarse anónimamente, los bots podrían simplemente pasarse a búsquedas locales
- Frente a eso, otra persona respondió que clonar no consume el cómputo de búsqueda de GitHub, por lo que reduce un posible vector de denegación de servicio
- También se señaló que los datos clonados pueden quedar obsoletos rápidamente
- Si el costo de búsqueda es alto, también se propuso ofrecer consultas simples a usuarios sin sesión mediante un método más sencillo, y reservar las consultas complejas para usuarios con sesión iniciada
Limitaciones de la función de búsqueda y casos comparativos
- Una persona mencionó que, incluso con la sesión iniciada, al buscar
path:contributing.mden todos los repositorios públicos solo aparecen resultados de 5 páginas- Otra persona respondió que no se trata solo de esa consulta específica, sino de una limitación actual de la búsqueda, y mencionó como discusión relacionada GitHub Community Discussion #9868
- Otra persona comparó el funcionamiento de la búsqueda en SourceForge, Google Code archive, GitLab y Bitbucket
- Dijo que SourceForge y Google Code archive no tienen búsqueda
- Señaló que GitLab requiere inicio de sesión para la búsqueda global, pero permite la búsqueda por repositorio
- Indicó que la búsqueda de Bitbucket redirige al inicio de sesión, pero que, si se encuentra el repositorio, luego se puede buscar sin iniciar sesión
Vías alternativas y servicios sustitutos
- Como forma de buscar rápidamente dentro de un solo repositorio sin iniciar sesión, se compartió el procedimiento de clonar localmente y usar
grep- moverse a
/dev/shm git clone https://github.com/user/repo- entrar al repositorio y ejecutar
grep -r "pattern" . - borrar el repositorio después de la búsqueda
- moverse a
- Para buscar patrones en todo GitHub, se mencionó usar en un motor de búsqueda general
"pattern" site:github.com- Sin embargo, también se indicó la limitación de que no es tan potente como la búsqueda integrada de GitHub y que parte del código podría no estar indexado
- Como herramienta alternativa o complementaria, se mencionó grep.app, presentada como una forma de buscar en repositorios sin iniciar sesión
- También se compartió el consejo de reemplazar
github.comporgithub1s.comen la URL de GitHub para abrir el repositorio con una interfaz tipo VS Code en línea- Se compararon como ejemplo
https://github.com/libretro/px68k-libretro/yhttps://github1s.com/libretro/px68k-libretro/
- Se compararon como ejemplo
- Como Git forge alternativos se mencionaron GitLab, Framagit, Gitea, Forgejo, Codeberg y Gogs, y se dijo que algunos permiten activar la búsqueda de código al alojarlos por cuenta propia
Consejo sobre la forma de alojar proyectos
- Una persona aconsejó tratar GitHub no como el único forge de código del proyecto, sino como uno de varios mirrors
- Explicó que Git es un sistema de control de versiones distribuido, por lo que depender solo de GitHub lo convierte en un punto único de falla
- Como ejemplo, se mostró la forma de añadir varios remotes para hacer push por separado a GitHub, Codeberg, Framagit y un repositorio privado
git remote add github https://github.com/user/repo.gitgit remote add codeberg https://codeberg.org/user/repo.gitgit remote add framagit https://framagit.org/user/repo.gitgit remote add private https://example.com/user/repo.git
1 comentarios
Opiniones de Hacker News
Viendo este asunto con la mayor buena fe posible, la nueva búsqueda de código de GitHub en la práctica es realmente muy buena y podría ser una función que consume muchos recursos porque hace internamente mucho más trabajo que un buscador común
Limitarla a cuentas con sesión iniciada puede ahorrar mucho de los recursos de servidor que se habrían usado para atender crawlers. El punto de equilibrio aquí parece estar entre gastar 3 o 4 veces más —o más— en infraestructura de búsqueda, o recibir críticas por exigir iniciar sesión. Hice mi propia herramienta de búsqueda de código para repositorios de GitHub, pero la búsqueda de código predeterminada de GitHub es tan útil que casi no la uso: https://simonwillison.net/2020/Nov/28/datasette-ripgrep/
En cambio, los usuarios existentes pueden enojarse porque ya ni siquiera pueden buscar sin iniciar sesión. En situaciones como usar la PC de otra persona, una PC pública, una pestaña de incógnito o el tiempo que toma la autenticación de dos factores, resulta bastante engorroso. GitHub podría haber dejado una búsqueda básica barata y rápida para usuarios no autenticados, pero no lo hizo
En la práctica, ya no se puede participar en “open source alojado en GitHub” sin registrarse en GitHub
grep es una herramienta de 50 años, no hace falta escribir código propio para buscar texto, y se puede usar software libre. No estamos hablando de una startup amateur con una app CRUD y 3 desarrolladores; que una de las empresas tecnológicas más grandes y ricas del mundo no pueda hacer bien ni una búsqueda de texto sin login es patético. Si hay una tercera explicación, me gustaría escucharla
La explicación de GitHub suena, en general, a puro verso. Poner autenticación obligatoria en un endpoint público no es una solución acorde al problema que dicen tener. Cualquier creador de bots interesado en ese endpoint puede hacer que inicien sesión con una cuenta gratuita, así que eso tampoco evita de forma significativa la carga del servidor
Esto empezó al menos hace 6 meses y también se anunció en el changelog: https://github.blog/changelog/2023-06-07-code-search-now-req...
Debate en HN: https://news.ycombinator.com/item?id=36230929
Desde el punto de vista del negocio, se entiende perfectamente por qué lo hicieron: convierte literalmente a la gente en usuarios y aumenta el engagement de usuarios
Ya deberíamos dejar de tratar a GitHub como una plataforma abierta
GitHub es un jardín vallado cerrado, igual que otros servicios. Que aloje muchos proyectos open source que usamos no lo hace mejor; incluso podría hacerlo peor, porque ayudamos a empujar parte de la infraestructura de contribución de esos proyectos detrás del candado de una cuenta corporativa
De hecho, entre esas opciones, creo que una cuenta de GitHub es mejor. Permite participar en una cantidad casi ilimitada de proyectos sin tener que crear cuentas nuevas todo el tiempo ni iniciar sesión en cada uno. Es difícil decir que GitHub haya bloqueado algo de forma sustancialmente distinta a las demás alternativas de este espacio. GitHub creó buen software y lo ofreció gratis, lo mantuvo bastante abierto y accesible, siguió estándares donde los había, ofreció APIs para el resto y ha dado gratis a proyectos open source una enorme cantidad de almacenamiento y cómputo
Tiene hosting de Git, hosting de wikis, issues, GitHub Actions, GitHub Pages y una API decente. Hay muchísimas razones para subir un proyecto open source a GitHub
En 2023, la web realmente se cerró. StackOverflow, Reddit, GitHub y Twitter pusieron freno al scraping y al acceso por API.
El detonante fue una combinación de evitar el entrenamiento de IA y presión por rentabilidad. También influyeron realidades comerciales como la recesión del sector tecnológico, los nuevos dueños de Stack y X, y el impulso de Reddit hacia su IPO. A largo plazo, parece que crecerá un mercado de datos monopólicos. Los motores de búsqueda, las herramientas de IA o cualquiera que necesite datos tendrá que pagar por flujos de datos originales o por acceso a API; y si solo las empresas más ricas pueden comprar esos datos, eso también podría derivar en problemas antimonopolio.
Si algo realmente son datos exclusivos, la compensación debería ir al propietario, no a un operador cualquiera de un servidor Git. El precio y las condiciones también deberían decidirlos los propietarios, no el operador del servidor. Si el servidor necesita ganar dinero, puede cobrar por el servicio básico en sí. En cambio, si alguien creó algo para compartirlo y, en ese momento, la plataforma ofrecía un canal eficaz para esa distribución y además se promocionaba como adecuada para distribuirlo, cambiar las reglas a mitad de camino es, moralmente, piratear el trabajo de esa persona. Es probable que buena parte del material de esas plataformas nunca se hubiera subido si sus dueños reales hubieran previsto restricciones arbitrarias y cobros por acceso. Si se van a reescribir las reglas de forma radical, el contenido existente debería venderse solo cuando el autor original lo haya aceptado explícitamente. Pero Reddit incluso restauró activamente publicaciones que sus autores habían borrado masivamente para evitar ese abuso.
https://theoatmeal.com/comics/reaching_people
Eso sí, con límites de velocidad mucho más estrictos. Crear una cuenta de GitHub es gratis y tampoco resulta especialmente invasivo. Incluso con sesión iniciada, todas las API tienen límites de velocidad de todos modos para evitar tumbar los servidores. Por eso herramientas como https://gitstar-ranking.com/ tienen dificultades cuando intentan recopilar las estrellas de GitHub de todos los repositorios usando cuentas gratuitas. Los datos realmente importantes, el código fuente, se pueden clonar de forma anónima mediante endpoints HTTPS, y luego buscar código dentro de ese contenido. Sitios de terceros como https://grep.app/ también funcionan de esa manera. En el caso de Reddit/Twitter, los datos originales —publicaciones, comentarios, votos, tuits— ya no se ofrecen por API, lo que volvió difícil o imposible crear herramientas de terceros; pero en GitHub los datos originales siguen siendo fáciles de acceder, y solo la capa auxiliar de búsqueda está bloqueada para usuarios sin sesión, así que la situación es bastante distinta.
Recuerdo que, cuando se lanzó StackOverflow, se lo comparaba con expertsexchange pero también se lo consideraba “abierto”. Ya es hora de pasar de servicios centralizados a una estructura más distribuida y basada en microtransacciones. A mucha gente de HN no le va a gustar, pero los foros de preguntas y respuestas, la agregación de enlaces de noticias y comentarios, el hosting Git con flujos de aprobación, wikis y sistemas de tickets pueden y deben implementarse de forma completamente distribuida. Se podrían usar tecnologías como Kademlia/BitTorrent, IPFS y CryptoTokens para pagos de microtransacciones. Ir hacia algo 100% distribuido es la única forma de mantener estas cosas “abiertas” y libres de la avaricia corporativa. Aunque los fundadores empiecen con buenas intenciones, a largo plazo el producto se vende y los contadores terminan tomando el control; eso se ha repetido una y otra vez.
Interpretándolo de buena fe, la búsqueda requiere bastante cómputo, y por eso puede convertirse en un gran vector de ataque de denegación de servicio.
No sé cuántos datos de comportamiento puede recopilar GitHub de los usuarios que inician sesión, ni qué tan útiles son en comparación con el código que ya es público. Quizá puedan servir para identificar qué partes del código son importantes, pero eso difícilmente puede considerarse información por usuario.
Solo alrededor del 0.5% del tráfico de mi motor de búsqueda es de personas. No conozco muchos motores de búsqueda que no tengan estadísticas similares.
Desde el día de la adquisición por parte de MS, creo que ningún proyecto open source tiene una razón legítima para permanecer en esa plataforma. Y no es que no haya buenas alternativas a las que se pueda migrar con un simple
git clone.Así que hay varias explicaciones posibles para restringir la API.
Cuando no he iniciado sesión, uso Sourcegraph. También tiene la ventaja de ser mucho mejor que la búsqueda existente.
Es tan simple como pegar una URL de repositorio que empiece con github.com. Por ejemplo, se puede buscar
uniten ese repositorio en sourcegraph.com/github.com/rust-lang/rust/.Parte del foso de IA de Microsoft consiste en controlar la capacidad de sus competidores para usar la información de GitHub.
No me sorprendería que después empezaran a restringir incluso
git clone.git clonerompería demasiados sistemas de CI.Habría que despedirse de una gran parte de NPM, de la gestión de paquetes de Go, de scripts de Jenkins, etc.
Por lo que recuerdo, GitHub ya aplica límites de velocidad para frenar clones o usos excesivos de la API.
Aunque esté de acuerdo con la postura de quien hizo la pregunta, no sé si hacía falta decirlo de esa manera.
Tampoco estoy completamente de acuerdo con esa postura, en el sentido de que las búsquedas no necesariamente son baratas y pueden usarse en ataques tipo DoS. No veo en qué ayuda decir cosas como “¿no les basta con monetizar hasta cada evacuación, que ahora quieren rastrear qué líneas de código estoy viendo?”. Hay que calmarse. El argumento de fondo tampoco es tan bueno. Los repositorios en sí no están bloqueados por inicio de sesión, así que los repositorios públicos son accesibles públicamente, incluso mediante clone. Si el autor quiere que su repositorio y su código sean útiles para el público, en cuanto alguien quiera hacer algo más que descargar o buscar, como crear un issue o enviar un PR, de todos modos tendrá que iniciar sesión.
Sirve para entender cómo funciona algo o para discutirlo en lugares que no son issues de GitHub. Clonar suele ser rápido, pero no lo es en repositorios muy grandes, y quizá no haya espacio para clonarlos en el dispositivo actual. Además, si mucha gente empieza a clonar cada vez en lugar de iniciar sesión, sobre todo porque iniciar sesión en GitHub es molesto por la autenticación de dos factores, me pregunto si realmente bajaría la carga del sistema. Tampoco todo el mundo quiere tener una cuenta de GitHub.
Hacker News: ya no se puede ver la portada sin encontrarse con quejas de que no se ofrece un servicio gratuito y sin anuncios a usuarios que no han iniciado sesión.
En este caso, tu código se está usando para entrenar Copilot, entre otras cosas. Incluso si no fuera así y el servicio realmente fuera tan bienintencionado como crees, ¿puedes aplaudir mientras ves que el servicio empeora para muchísimos usuarios? ¿Eso te parece interesante y emocionante?
El único ejemplo que se me viene a la mente es el cambio de API de Reddit, pero eso fue hace bastante tiempo y solo está relacionado de forma bastante indirecta con el inicio de sesión.
Si quieres seguir buscando en open source, https://sourcegraph.com/search no requiere iniciar sesión e incluye proyectos importantes que no están en GitHub.
Como referencia, soy el CTO de Sourcegraph.
Antes esperaba que la búsqueda de GitHub pudiera estar a la altura de
git clone + grep, pero no imaginé que el precio sería una barrera de inicio de sesión. Según recuerdo, esperaba que la barrera de inicio de sesión existiera solo por ser una función beta y que se eliminara cuando se convirtiera en la búsqueda predeterminada.