GitHub: Codesuche ohne Anmeldung nicht möglich
(github.com/orgs)- In einer GitHub-Community-Diskussion wurde problematisiert, dass auch die Codesuche in öffentlichen Repositories ohne Anmeldung nicht mehr genutzt werden kann; der Fragesteller kritisierte, dies schade der Zugänglichkeit öffentlichen Codes und der Nutzbarkeit von Open Source
- Ein GitHub-Maintainer antwortete, dass die Suche über alle Repositories hinweg schon seit Langem eine Anmeldung erfordert und dass GitHub diese Anforderung Anfang 2023 mit dem Ausbau der Suchfunktion auch auf die Suche in einzelnen Repositories ausgeweitet habe
- Als Grund nannte GitHub, die Suchlast für Entwickler bewältigen zu müssen und zu reduzieren, dass Server durch anonyme Anfragen etwa von Bots überlastet werden
- Diskussionsteilnehmer stellten infrage, ob die Anmeldepflicht zur Bot-Abwehr ausreicht, da öffentliche Repositories weiterhin geklont und lokal durchsucht werden können; als Alternativen wurden Rate Limits, CAPTCHA und Einschränkungen einfacher Suchvorgänge genannt
- Praktisch können nicht angemeldete Nutzer Links zur Suche in öffentlichem Code nicht mehr direkt öffnen; daher wurden auch Umgehungswege wie grep.app, github1s, lokales
grep, allgemeine Suchmaschinen und Spiegelung über mehrere Git-Forges diskutiert
Für die Suche in öffentlichem Code ist eine Anmeldung erforderlich
- GitHub Community Discussion #77046 behandelt unter dem Titel „Can no longer search code without being logged in“ die Situation, dass Codesuche ohne Anmeldung nicht mehr möglich ist
- Der Fragesteller erklärte, er habe auf einem älteren Gerät etwas in den eigenen Repositories suchen wollen, sei aber wegen der Anmeldepflicht nicht weitergekommen
- Er habe Zugriff auf den Passwortmanager benötigt, außerdem 2FA und einen YubiKey; das alte Notebook habe jedoch keinen USB-C-Port gehabt
- Er erklärte, er habe die Codesuche in öffentlichen Repositories für andere nutzbar machen wollen
- Der Fragesteller kritisierte, dass es schwer nachvollziehbar sei, warum die Web-Codesuche eine Anmeldung erfordert, wenn öffentliche Repositories nach dem Klonen mit spezialisierten Tools durchsucht und analysiert werden können
- Die Diskussion wurde durch die Antwort von GitHub als Answered markiert; auf der Seite werden 19 Kommentare und 58 Antworten angezeigt
GitHubs Antwort und offizielle Begründung
- Der GitHub-Maintainer martinwoodward entschuldigte sich für die Unannehmlichkeiten und antwortete, dass die Suche über alle Repositories hinweg schon seit Langem eine Anmeldung erfordert
- Er erklärte, dass GitHub die Anmeldepflicht Anfang 2023 mit dem Ausbau der Suchfunktion auch auf die Suche in einzelnen Repositories ausgeweitet habe
- Als zugehörige Änderung verwies er auf Code search now requires login
- Hauptziel sei es, die Suchlast für GitHub-Entwickler zu bewältigen und zu verhindern, dass Server durch anonyme Anfragen etwa von Bots überlastet werden
- Ein anderer Teilnehmer verwies in der Diskussion auf The technology behind GitHub’s new code search, einen Beitrag zur neuen Codesuche von GitHub
Kern der Kritik: öffentliche Repositories und Open-Source-Zugänglichkeit
- Mehrere Teilnehmer sahen es als überzogen an, auch die Suche in öffentlichem Code per Login zu blockieren, da Code in öffentlichen Repositories ohne Anmeldung geklont werden kann
- Ein Teilnehmer erklärte, es sei störend, dass externe Nutzer zu einem GitHub-Login gezwungen werden, um seinen öffentlichen Quellcode anzusehen
- Er habe Suchabfragen wie
repo:USER/REPO,path:...undAND NOT path:**/_externalsals einzelne URL oder Schaltfläche teilen wollen - Wegen der Anmeldepflicht müsse er diese nun durch mehrere direkte Datei-URLs ersetzen
- Er habe Suchabfragen wie
- Andere Teilnehmer wiesen auf die Spannung zwischen GitHubs Selbstbeschreibung als „world's largest open source community“ und der Einschränkung der Suche in öffentlichem Code hin
- Einige Kommentare erinnerten daran, dass es ähnliche Einschränkungen bereits vor der Übernahme durch Microsoft gegeben habe, und hielten entgegen, die Einschränkung sei nicht völlig neu
Bot-Abwehr und Kostendebatte
- GitHub führte die Last durch anonyme Bot-Anfragen als Grund an, doch einige Teilnehmer argumentierten, eine Anmeldepflicht halte Betreiber spezialisierter Bots kaum auf
- Als Alternative wurde vorgeschlagen, zunächst Rate Limits anzuwenden und erst beim Erreichen des Limits CAPTCHA oder Login zu verlangen
- Als Gegenargument wurde genannt, dass Bots auf lokale Suche umsteigen könnten, da öffentliche Repositories anonym geklont werden können
- Darauf entgegnete ein anderer Teilnehmer, dass Klonen nicht GitHubs Such-Computing nutzt und daher den Denial-of-Service-Vektor reduziert
- Außerdem wurde angemerkt, dass geklonte Daten schnell veralten können
- Falls die Suchkosten hoch seien, wurde auch eine Aufteilung vorgeschlagen: einfache Abfragen auf einfachere Weise für nicht angemeldete Nutzer anbieten und komplexe Abfragen angemeldeten Nutzern vorbehalten
Einschränkungen der Suchfunktion selbst und Vergleichsfälle
- Ein Teilnehmer erwähnte, dass selbst im angemeldeten Zustand bei einer Suche über alle öffentlichen Repositories nach
path:contributing.mdnur fünf Ergebnisseiten angezeigt werden- Ein anderer Teilnehmer sagte, dies sei nicht nur ein Problem dieser konkreten Abfrage, sondern eine aktuelle Einschränkung der Suche, und verwies auf GitHub Community Discussion #9868
- Ein anderer Teilnehmer verglich das Suchverhalten von SourceForge, Google Code archive, GitLab und Bitbucket
- SourceForge und Google Code archive hätten keine Suche
- GitLab verlange für die globale Suche eine Anmeldung, ermögliche aber die Suche pro Repository
- Die Bitbucket-Suche leite zwar zum Login weiter, wenn man jedoch ein Repository finde, sei die Suche ohne Anmeldung möglich
Umgehungswege und Alternativdienste
- Als Methode, um ein einzelnes Repository ohne Anmeldung schnell zu durchsuchen, wurde ein lokales Klonen mit anschließendem
grepvorgeschlagen- Nach
/dev/shmwechseln git clone https://github.com/user/repo- Ins Repository wechseln und
grep -r "pattern" .ausführen - Das Repository nach der Suche löschen
- Nach
- Für Mustersuchen über ganz GitHub hinweg wurde die Verwendung von
"pattern" site:github.comin allgemeinen Suchmaschinen genannt- Zugleich wurde als Einschränkung genannt, dass dies nicht so mächtig ist wie die integrierte GitHub-Suche und möglicherweise nicht jeder Code indexiert ist
- Als alternatives oder ergänzendes Tool wurde grep.app erwähnt, mit dem Repositories ohne Anmeldung durchsucht werden können
- Ebenfalls geteilt wurde der Tipp, in einer GitHub-URL
github.comdurchgithub1s.comzu ersetzen, um das Repository in einer Online-VS-Code-Ansicht zu öffnen- Als Beispiel wurden
https://github.com/libretro/px68k-libretro/undhttps://github1s.com/libretro/px68k-libretro/verglichen
- Als Beispiel wurden
- Als alternative Git-Forges wurden GitLab, Framagit, Gitea, Forgejo, Codeberg und Gogs genannt; bei einigen könne bei Self-Hosting die Codesuche aktiviert werden
Ratschläge zur Projekt-Hosting-Strategie
- Ein Teilnehmer riet, GitHub nicht als einzige Code-Forge eines Projekts zu behandeln, sondern als einen von mehreren Mirrors
- Da Git ein verteiltes Versionsverwaltungssystem ist, werde GitHub bei ausschließlicher Nutzung zu einem Single Point of Failure
- Als Beispiel wurde genannt, mehrere Remotes hinzuzufügen und jeweils zu GitHub, Codeberg, Framagit und einem privaten Repository zu pushen
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 Kommentare
Hacker-News-Kommentare
Im wohlwollendsten Sinne könnte man sagen, dass die neue GitHub-Code-Suche in der Praxis tatsächlich hervorragend ist und intern deutlich mehr leistet als eine gewöhnliche Suchmaschine, also entsprechend ressourcenintensiv sein kann
Wenn sie auf eingeloggte Konten beschränkt wird, lassen sich erhebliche Server-Ressourcen einsparen, die sonst für das Abwehren oder Bedienen von Crawlern draufgehen würden. Der Trade-off scheint hier ungefähr zu sein: die Suchinfrastruktur 3- bis 4-mal teurer machen oder sich wegen der Login-Pflicht beschimpfen lassen. Ich habe selbst ein Code-Suchtool für GitHub-Repositories gebaut, nutze es aber kaum noch, weil die Standard-Code-Suche von GitHub so nützlich ist: https://simonwillison.net/2020/Nov/28/datasette-ripgrep/
Andererseits können bestehende Nutzer genervt sein, weil ohne Login nicht einmal eine Suche möglich ist. Auf fremden PCs, öffentlichen Rechnern, in Inkognito-Tabs oder mit dem Zeitaufwand für Zwei-Faktor-Authentifizierung ist das ziemlich umständlich. GitHub hätte für nicht eingeloggte Nutzer auch eine billige und schnelle Basissuche lassen können, hat sich aber dagegen entschieden
Im Ergebnis kann man ohne Anmeldung bei GitHub nicht mehr an „auf GitHub gehostetem Open Source“ teilnehmen
grep ist ein 50 Jahre altes Tool, man muss für Textsuche keinen eigenen Code schreiben und kann freie Software verwenden. Wir reden hier nicht über ein Amateur-Startup mit drei Entwicklern und einer CRUD-App, sondern über eines der größten und reichsten Tech-Unternehmen der Welt, das ohne Login nicht einmal eine ordentliche Textsuche hinbekommt. Falls es eine dritte Erklärung gibt, würde ich sie gern hören
Die Erklärung von GitHub klingt größtenteils nach Unsinn. Für einen öffentlichen Endpunkt eine erzwungene Authentifizierung einzuführen, ist keine passende Lösung für das Problem, das sie angeblich lösen wollen. Bot-Betreiber, die an diesem Endpunkt interessiert sind, melden sich dann eben mit einem kostenlosen Konto an, also verhindert das nennenswerte Serverlast auch nicht
Das läuft schon seit mindestens sechs Monaten und wurde auch im Changelog angekündigt: https://github.blog/changelog/2023-06-07-code-search-now-req...
HN-Diskussion: https://news.ycombinator.com/item?id=36230929
Aus geschäftlicher Sicht ist völlig nachvollziehbar, warum sie das gemacht haben. Man macht die Leute buchstäblich zu Nutzern und steigert damit das User-Engagement
Man sollte GitHub jetzt nicht mehr als offene Plattform behandeln
GitHub ist wie jeder andere Dienst ein geschlossener Walled Garden. Dass dort viele der von uns genutzten Open-Source-Projekte gehostet werden, macht es nicht besser, sondern womöglich schlimmer. Denn damit wurde geholfen, einen Teil der Beitragsinfrastruktur dieser Projekte hinter das Schloss eines Unternehmenskontos zu verlagern
Tatsächlich halte ich ein GitHub-Konto sogar für die bessere Variante. Man kann damit an fast unbegrenzt vielen Projekten teilnehmen, ohne ständig neue Konten anzulegen oder sich immer wieder neu anzumelden. Es ist schwer zu sagen, dass GitHub hier gegenüber anderen Optionen in diesem Bereich tatsächlich etwas grundlegend anders oder restriktiver gemacht hätte. GitHub hat gute Software gebaut und kostenlos angeboten, sie ziemlich offen und zugänglich gehalten, dort Standards befolgt, wo es Standards gab, und sonst APIs bereitgestellt. Außerdem stellt GitHub Open-Source-Projekten seit Langem enorme Mengen an Speicher und Rechenleistung kostenlos zur Verfügung
Es gibt Git-Hosting, Wiki-Hosting, Issues, GitHub Actions, GitHub Pages und sogar eine ordentliche API. Es gibt sehr viele gute Gründe, ein Open-Source-Projekt auf GitHub zu hosten
2023 hat sich das Web wirklich geschlossen. StackOverflow, Reddit, GitHub und Twitter haben alle den Scraping- und API-Zugang gebremst
Auslöser war wohl die Kombination aus dem Versuch, AI-Training zu verhindern, und dem Druck auf die Profitabilität. Dazu kamen kommerzielle Realitäten wie die Tech-Flaute, neue Eigentümer bei Stack und X sowie Reddits Vorstoß Richtung IPO. Langfristig dürfte ein Markt für proprietäre Daten weiter wachsen. Suchmaschinen, AI-Tools und alle anderen, die Daten brauchen, werden für Rohdatenströme oder API-Zugriff zahlen müssen, und wenn sich nur die reichsten Unternehmen diese Daten leisten können, könnte das am Ende sogar zu Kartellproblemen führen
Wenn etwas wirklich proprietäre Daten sind, dann sollte die Vergütung an die Eigentümer gehen, nicht an irgendeinen Betreiber eines Git-Servers. Preise und Bedingungen sollten ebenfalls von den Eigentümern festgelegt werden, nicht vom Serverbetreiber. Wenn ein Server Geld verdienen muss, kann er einfach den Basisdienst selbst bepreisen. Wenn umgekehrt jemand etwas geschaffen hat, um es zu teilen, und die Plattform damals einen effektiven Kanal für genau diese Verbreitung bot und sich selbst auch so vermarktet hat, dann ist eine nachträgliche Regeländerung moralisch gesehen Piraterie an der Arbeit dieser Person. Ein erheblicher Teil des Materials auf solchen Plattformen wäre wahrscheinlich nie hochgeladen worden, wenn die eigentlichen Eigentümer mit willkürlichen Einschränkungen und Zugangsgebühren gerechnet hätten. Wenn man die Regeln radikal neu schreiben will, sollte bestehender Content nur dann verkauft werden, wenn die Urheber ausdrücklich zugestimmt haben. Reddit hat jedoch sogar Beiträge aktiv wiederhergestellt, die Autoren massenhaft gelöscht hatten, um genau solchen Missbrauch zu verhindern
https://theoatmeal.com/comics/reaching_people
Nur die Rate Limits sind deutlich strenger. Ein GitHub-Konto anzulegen ist kostenlos und vergleichsweise wenig invasiv. Auch im eingeloggten Zustand haben alle APIs ohnehin Rate Limits, damit niemand die Server lahmlegt. Deshalb haben Tools wie https://gitstar-ranking.com/ Schwierigkeiten, mit einem kostenlosen Konto die GitHub-Stars aller Repositories einzusammeln. Die eigentlich wichtigen Daten, also der Source Code, lassen sich per anonymem Clone über HTTPS abrufen, und darin kann man dann lokal suchen. Drittseiten wie https://grep.app/ funktionieren ebenfalls auf diese Weise. Bei Reddit/Twitter werden die Rohdaten selbst — also Posts, Kommentare, Upvotes und Tweets — nicht mehr per API bereitgestellt, wodurch Dritt-Tools schwer oder gar nicht mehr baubar sind. Bei GitHub sind die Rohdaten dagegen leicht zugänglich; nur die Hilfsebene der Suche ist für nicht eingeloggte Nutzer blockiert, daher ist die Lage deutlich anders
Ich erinnere mich daran, dass StackOverflow bei seinem Start mit ExpertsExchange verglichen wurde und dennoch als „offen“ galt. Es ist jetzt Zeit, von zentralisierten Diensten zu einer stärker verteilten und mikrotransaktionsbasierten Struktur zu wechseln. Viele auf HN werden das nicht mögen, aber Q&A-Foren, News-Link- und Kommentaraggregation, Git-Hosting mit Review-Workflows sowie Wikis und Ticket-Systeme kann man vollständig dezentral umsetzen, und das sollte man auch. Techniken wie Kademlia/BitTorrent, IPFS und CryptoTokens für Mikrotransaktionszahlungen kommen dafür infrage. Nur 100% Dezentralisierung kann solche Dinge dauerhaft „offen“ halten und von Unternehmensgier frei machen. Selbst wenn Gründer mit guten Absichten anfangen, wird das Produkt langfristig immer wieder verkauft und die Kontrolle geht an die Leute aus dem Rechnungswesen über
Wohlwollend betrachtet erfordert Suche ziemlich viel Rechenleistung und ist deshalb ein großer Angriffsvektor für Denial of Service
Ich weiß allerdings nicht, wie viele Verhaltensdaten GitHub von eingeloggten Nutzern sammeln kann und wie nützlich das im Vergleich zum bereits öffentlichen Code ist. Man könnte es nutzen, um herauszufinden, welche Teile des Codes wichtig sind, aber das wirkt nicht wie besonders nutzerspezifische Information
Bei meiner Suchmaschine sind nur etwa 0,5% des Traffics Menschen. Bei anderen Suchmaschinen kenne ich keine vergleichbaren Zahlen
Seit der Übernahme durch MS sehe ich keinen legitimen Grund mehr, warum irgendein Open-Source-Projekt auf dieser Plattform bleiben sollte. Es fehlt auch nicht an guten Alternativen, zu denen man mit einem einzigen
git clonewechseln kannEs gibt also mehrere nachvollziehbare Gründe, eine API zu verriegeln
Wenn ich nicht eingeloggt bin, nutze ich Sourcegraph. Das hat sogar den Vorteil, dass es viel besser ist als die bisherige Suche
Es ist so einfach, dass man einfach eine Repository-URL anhängt, die mit github.com beginnt. Zum Beispiel kann man unter sourcegraph.com/github.com/rust-lang/rust/ nach
unitin diesem Repository suchenEin Teil von Microsofts AI-Burggraben besteht darin, die Fähigkeit von Konkurrenten zu kontrollieren, die Informationen von GitHub zu nutzen
Es würde mich nicht überraschen, wenn als Nächstes sogar
git cloneeingeschränkt würdegit cloneeingeschränkt würde, wäre ich überrascht, wie viele CI-Systeme kaputtgingenDann könnte man sich von großen Teilen von NPM, vom Go-Paketmanagement und von Jenkins-Skripten verabschieden
Soweit ich mich erinnere, drosselt GitHub bereits exzessives Clonen oder API-Nutzung über Rate Limits
Selbst wenn man der Position der Person zustimmt, die die Frage gestellt hat, weiß ich nicht, ob man das unbedingt so sagen muss.
Ich stimme dieser Position auch nicht vollständig zu, weil Suche keineswegs kostenlos ist und für DOS-artige Angriffe genutzt werden kann. Ich verstehe nicht, was Aussagen wie „Reicht es nicht, jede einzelne Ausscheidung zu monetarisieren, dass ihr jetzt auch noch nachverfolgen wollt, welche Codezeile ich mir ansehe?“ bringen sollen. Man sollte sich beruhigen. Auch das grundlegende Argument ist nicht besonders gut. Die Repositories selbst sind nicht hinter einem Login versteckt, öffentliche Repositories bleiben also öffentlich zugänglich, einschließlich
clone. Wenn der Autor möchte, dass sein Repository und sein Code für die Allgemeinheit nützlich sind, dann müssen Beitragende ohnehin eingeloggt sein, sobald sie über bloßes Herunterladen und Suchen hinausgehen und ein Issue erstellen oder einen PR schicken.Das braucht man, um herauszufinden, wie etwas funktioniert, oder wenn man etwas nicht in einem GitHub-Issue diskutiert.
cloneist meist schnell, aber bei sehr großen Repositories nicht unbedingt, und möglicherweise ist auf dem aktuellen Gerät auch gar kein Platz dafür vorhanden. Wenn außerdem viele Leute statt eines Logins jedes Mal klonen, ist fraglich, ob das die Systemlast überhaupt reduziert, zumal ein GitHub-Login wegen Zwei-Faktor-Authentifizierung umständlich sein kann. Außerdem will nicht jeder ein GitHub-Konto haben.HackerNews: Man kann die Startseite nicht mehr ansehen, ohne über Beschwerden zu stolpern, dass nicht eingeloggten Nutzern kein kostenloser und werbefreier Dienst bereitgestellt wird.
In diesem Fall wird dein Code etwa für das Training von Copilot verwendet. Und selbst wenn das nicht so wäre und der Dienst tatsächlich so wohlmeinend wäre, wie du glaubst: Kann man wirklich Beifall dazu klatschen, dass der Dienst für ziemlich viele Nutzer schlechter wird? Ist das interessant und aufregend?
Das einzige Beispiel, das mir einfällt, sind die API-Änderungen bei Reddit, aber das ist schon ziemlich lange her und nur lose mit Logins verbunden.
Wenn du weiterhin Open-Source-Suche nutzen willst: https://sourcegraph.com/search erfordert keinen Login und umfasst auch wichtige Projekte, die nicht auf GitHub sind.
Zur Einordnung: Ich bin CTO von Sourcegraph.
Früher hatte ich gehofft, dass die GitHub-Suche mit
git clone + grepmithalten könnte, aber ich hätte nicht erwartet, dass der Preis dafür eine Login-Hürde sein würde. Soweit ich mich erinnere, war die Login-Hürde nur da, weil es sich um eine Beta-Funktion handelte, und ich hatte erwartet, dass sie verschwindet, sobald die Suche zum Standard wird.