GitHub: Pencarian kode tidak bisa dilakukan tanpa login
(github.com/orgs)- Dalam diskusi GitHub Community, muncul masalah bahwa bahkan pencarian kode pada repositori publik kini tidak bisa digunakan tanpa login, dan penanya mengkritik hal ini karena merusak aksesibilitas kode publik serta kegunaan open source
- Seorang maintainer GitHub menjawab bahwa pencarian di seluruh repositori memang sudah lama memerlukan login, dan saat fitur pencarian diperkuat pada awal 2023, syarat login juga diperluas ke pencarian dalam repositori individual
- Alasan dari GitHub adalah untuk menangani beban pencarian bagi pengembang dan mengurangi situasi ketika server kewalahan oleh permintaan anonim dari bot dan sejenisnya
- Para peserta diskusi mempertanyakan apakah kewajiban login cukup efektif untuk mencegah bot, karena repositori publik tetap bisa di-clone lalu dicari secara lokal, dan mereka menyebut alternatif seperti rate limit, CAPTCHA, atau pembatasan pencarian sederhana
- Secara praktis, pengguna tanpa login kini tidak bisa langsung membuka tautan pencarian kode publik, sehingga turut dibahas berbagai cara mem-bypass seperti grep.app, github1s,
greplokal, mesin pencari umum, dan mirroring di berbagai Git forge
Persyaratan login kini diterapkan pada pencarian kode publik
- GitHub Community Discussion #77046 berjudul “Can no longer search code without being logged in” membahas situasi di mana pencarian kode tidak lagi bisa dilakukan tanpa login
- Penanya menjelaskan bahwa ia mencoba mencari sesuatu di repositori mereka dari perangkat lama, tetapi tidak bisa melanjutkan karena diminta login
- Ia harus mengakses pengelola kata sandi, memerlukan 2FA dan YubiKey, dan terhalang karena laptop lamanya tidak memiliki port USB-C
- Ia mengatakan ingin orang-orang bisa menggunakan pencarian kode pada repositori publik
- Penanya mengkritik bahwa jika repositori publik bisa di-clone lalu dicari dan dianalisis dengan alat khusus, maka sulit memahami alasan mewajibkan login untuk pencarian kode di web
- Diskusi ini ditandai Answered dengan jawaban dari pihak GitHub, dan halaman tersebut menampilkan 19 komentar serta 58 balasan
Jawaban GitHub dan dasar resminya
- Maintainer GitHub martinwoodward meminta maaf atas ketidaknyamanan ini dan menjawab bahwa pencarian yang menargetkan seluruh repositori memang sudah lama memerlukan login
- Ia menjelaskan bahwa pada awal 2023, saat fitur pencarian diperkuat, syarat login juga diperluas ke pencarian dalam repositori individual
- Sebagai perubahan terkait, ia menyertakan tautan Code search now requires login
- Ia menyatakan bahwa tujuan utamanya adalah mendukung beban pencarian untuk pengembang GitHub dan mencegah server kewalahan oleh permintaan anonim dari bot dan sejenisnya
- Dalam diskusi, peserta lain juga membagikan tautan The technology behind GitHub’s new code search yang membahas implementasi pencarian kode baru GitHub
Inti penolakan: repositori publik dan aksesibilitas open source
- Beberapa peserta berpendapat bahwa karena kode repositori publik bisa di-clone tanpa login, maka langkah memblokir pencarian kode publik dengan login terasa berlebihan
- Seorang peserta menjelaskan bahwa ia merasa tidak nyaman ketika pengguna luar dipaksa login ke GitHub hanya untuk melihat source publik miliknya
- Sebagai contoh, ia ingin membagikan query pencarian seperti
repo:USER/REPO,path:...,AND NOT path:**/_externalslewat satu URL atau tombol - Karena ada kewajiban login, ia mengatakan harus menggantinya dengan daftar beberapa URL file langsung
- Sebagai contoh, ia ingin membagikan query pencarian seperti
- Peserta lain menyoroti ketegangan antara klaim GitHub sebagai “world's largest open source community” dan pembatasan pencarian kode publik
- Beberapa komentar membantah bahwa ini sepenuhnya baru, dengan mengingat adanya pembatasan serupa bahkan sebelum akuisisi Microsoft
Perdebatan soal pencegahan bot dan biaya
- GitHub menyebut beban dari permintaan bot anonim sebagai alasan, tetapi beberapa peserta berargumen bahwa kewajiban login sulit menghentikan operator bot yang memang berdedikasi
- Sebagai alternatif, diusulkan agar rate limit diterapkan lebih dulu, lalu CAPTCHA atau login hanya diminta saat batas tercapai
- Muncul juga bantahan bahwa karena repositori publik bisa di-clone secara anonim, bot tetap bisa beralih ke pencarian lokal
- Menanggapi hal ini, peserta lain membalas bahwa clone tidak memakai komputasi pencarian GitHub sehingga mengurangi vektor denial-of-service terhadap layanan tersebut
- Ada juga catatan bahwa data hasil clone bisa cepat menjadi stale
- Jika biaya pencarian memang besar, ada pula usulan untuk memberikan query sederhana kepada pengguna tanpa login dengan metode yang lebih sederhana, sementara query kompleks hanya tersedia bagi pengguna yang login
Keterbatasan fitur pencarian itu sendiri dan kasus perbandingan
- Seorang peserta menyebut bahwa bahkan saat sudah login, pencarian seluruh repositori publik dengan
path:contributing.mdhanya menampilkan hasil sampai 5 halaman- Peserta lain mengatakan ini bukan masalah pada query tertentu saja, melainkan batasan pencarian saat ini, dan menyebut GitHub Community Discussion #9868 sebagai diskusi terkait
- Peserta lain membandingkan perilaku pencarian di SourceForge, Google Code archive, GitLab, dan Bitbucket
- Ia mengatakan SourceForge dan Google Code archive tidak memiliki pencarian
- GitLab memerlukan login untuk pencarian global, tetapi pencarian per repositori dimungkinkan
- Pencarian Bitbucket diarahkan ke login, tetapi jika repositorinya sudah ditemukan, pencarian bisa dilakukan tanpa login
Cara bypass dan layanan alternatif
- Sebagai cara cepat mencari dalam satu repositori tanpa login, dibagikan prosedur menggunakan clone lokal lalu
grep- Pindah ke
/dev/shm git clone https://github.com/user/repo- Masuk ke repositori lalu jalankan
grep -r "pattern" . - Hapus repositori setelah pencarian selesai
- Pindah ke
- Untuk pencarian pola di seluruh GitHub, disebut cara menggunakan mesin pencari umum dengan
"pattern" site:github.com- Namun disebut juga keterbatasannya: tidak sekuat pencarian bawaan GitHub, dan sebagian kode mungkin tidak terindeks
- Sebagai alat alternatif atau pelengkap, grep.app disebut dan diperkenalkan sebagai layanan yang memungkinkan pencarian repositori tanpa login
- Ada juga tip bahwa mengganti
github.commenjadigithub1s.compada URL GitHub akan membuka repositori dalam bentuk VS Code online - Git forge alternatif yang disebut antara lain GitLab, Framagit, Gitea, Forgejo, Codeberg, dan Gogs, dan beberapa di antaranya disebut bisa mengaktifkan pencarian kode saat self-host
Saran terkait cara hosting proyek
- Seorang peserta menyarankan agar GitHub diperlakukan bukan sebagai satu-satunya code forge proyek, melainkan hanya sebagai salah satu mirror
- Ia menjelaskan bahwa Git adalah sistem version control terdistribusi, jadi hanya memakai GitHub akan menciptakan single point of failure
- Sebagai contoh, ia menunjukkan cara menambahkan beberapa remote agar bisa melakukan push masing-masing ke GitHub, Codeberg, Framagit, dan repositori private
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 komentar
Komentar Hacker News
Jika melihat isu ini dengan prasangka paling baik, pencarian kode GitHub yang baru memang sangat bagus saat dicoba, dan bisa jadi merupakan fitur yang memakan banyak sumber daya karena secara internal melakukan jauh lebih banyak hal dibanding mesin pencari biasa
Dengan membatasinya ke akun yang login, mereka bisa menghemat banyak sumber daya server yang sebelumnya dipakai untuk menangani crawler. Komprominya di sini tampak lebih seperti memilih antara menghabiskan biaya infrastruktur pencarian 3–4 kali lipat atau lebih, atau menerima kritik karena mewajibkan login. Saya pernah membuat alat pencarian kode untuk repositori GitHub sendiri, tetapi pencarian kode bawaan GitHub begitu berguna sampai alat itu hampir tidak pernah saya pakai: https://simonwillison.net/2020/Nov/28/datasette-ripgrep/
Sebaliknya, pengguna lama bisa marah karena bahkan pencarian pun tidak bisa dilakukan tanpa login. Dalam situasi seperti memakai PC orang lain, PC publik, tab incognito, atau waktu yang dibutuhkan untuk autentikasi dua faktor, ini cukup merepotkan. GitHub sebenarnya bisa saja menyisakan pencarian dasar yang murah dan cepat untuk pengguna yang tidak login, tetapi mereka tidak melakukannya
Pada akhirnya, orang tidak lagi bisa berpartisipasi dalam “open source yang dihosting di GitHub” tanpa mendaftar ke GitHub
grep adalah alat berusia 50 tahun, dan untuk pencarian teks mereka tidak perlu menulis kode sendiri; cukup gunakan perangkat lunak bebas. Ini bukan startup amatir dengan satu aplikasi CRUD dan tiga developer, melainkan salah satu perusahaan teknologi terbesar dan terkaya di dunia, jadi menyedihkan kalau mereka bahkan tidak bisa menyediakan pencarian teks dengan benar tanpa login. Kalau ada penjelasan ketiga, saya ingin mendengarnya
Penjelasan GitHub pada umumnya terdengar seperti omong kosong. Memaksakan autentikasi pada endpoint publik bukanlah solusi yang sesuai untuk masalah yang mereka klaim. Pembuat bot yang tertarik pada endpoint ini tinggal membuat botnya login dengan akun gratis, jadi ini juga tidak benar-benar menahan beban server secara berarti
Ini sudah dimulai setidaknya 6 bulan lalu dan juga diumumkan di changelog: https://github.blog/changelog/2023-06-07-code-search-now-req...
Diskusi HN: https://news.ycombinator.com/item?id=36230929
Dari sudut pandang bisnis, saya sepenuhnya paham mengapa mereka melakukannya. Karena itu secara harfiah membuat orang menjadi pengguna sekaligus menaikkan keterlibatan pengguna
Kita harus berhenti memperlakukan GitHub seperti platform terbuka
GitHub adalah taman berpagar yang tertutup, sama seperti layanan lain. Fakta bahwa mereka menghosting banyak proyek open source yang kita pakai tidak membuatnya lebih baik; malah bisa jadi lebih buruk. Sebab kita ikut membantu mendorong sebagian infrastruktur kontribusi proyek-proyek ini ke balik kunci akun korporat
Justru di antara semua itu, saya rasa akun GitHub lebih baik. Karena orang bisa berpartisipasi di nyaris tak terbatas jumlah proyek tanpa terus-menerus membuat akun baru atau login ke sana-sini. Sulit mengatakan bahwa GitHub secara nyata memblokir sesuatu yang berbeda dari opsi lain di bidang ini. GitHub membuat perangkat lunak yang bagus dan menyediakannya gratis, menjaganya cukup terbuka dan mudah diakses, mengikuti standar ketika ada standar, menyediakan API untuk sisanya, serta telah memberi proyek open source kapasitas penyimpanan dan komputasi dalam jumlah besar secara gratis
Ada hosting Git, hosting wiki, issue, GitHub Actions, GitHub Pages, sampai API yang lumayan. Ada sangat banyak alasan untuk menaruh proyek open source di GitHub
Pada 2023, web benar-benar tertutup. StackOverflow, Reddit, GitHub, dan Twitter semuanya mengerem scraping dan akses API
Pemicunya adalah gabungan antara upaya mencegah pelatihan AI dan tekanan profitabilitas. Ada juga realitas komersial seperti lesunya sektor teknologi, pemilik baru Stack dan X, serta dorongan IPO Reddit. Dalam jangka panjang, tampaknya pasar data proprietary akan membesar. Mesin pencari, alat AI, atau siapa pun yang membutuhkan data harus membayar biaya untuk stream data sumber atau akses API, dan jika hanya perusahaan terkaya yang mampu membeli data itu, ini juga bisa berujung pada masalah antimonopoli
Jika sesuatu benar-benar data proprietary, kompensasinya seharusnya diberikan kepada pemiliknya, bukan operator server Git sembarang. Harga dan ketentuannya juga harus ditentukan oleh pemilik, bukan operator server. Jika server perlu menghasilkan uang, layanan dasarnya saja yang bisa dikenakan biaya. Sebaliknya, jika seseorang membuat sesuatu dengan niat untuk membagikannya, dan pada saat itu platform menyediakan kanal yang efektif untuk distribusi semacam itu serta mempromosikan dirinya sebagai tempat yang cocok untuk distribusi, maka mengubah aturan di tengah jalan secara moral adalah pembajakan terhadap karya orang itu. Banyak materi di platform semacam itu kemungkinan besar tidak akan pernah diunggah sejak awal seandainya pemilik aslinya memperkirakan adanya pembatasan sewenang-wenang dan biaya akses. Jika ingin menulis ulang aturan secara radikal, konten lama seharusnya hanya dijual bila pembuat aslinya secara eksplisit menyetujui. Namun Reddit bahkan secara aktif memulihkan postingan yang dihapus massal oleh penulisnya untuk mencegah penyalahgunaan seperti itu
https://theoatmeal.com/comics/reaching_people
Hanya saja batas kecepatannya jauh lebih ketat. Membuat akun GitHub gratis dan relatif tidak invasif. Bahkan jika login, semua API tetap memiliki rate limit agar server tidak bisa dijatuhkan. Karena itu, alat seperti https://gitstar-ranking.com/ kesulitan saat mencoba mengambil semua bintang GitHub dari semua repositori dengan akun gratis. Data yang benar-benar penting, yaitu source code, bisa di-clone secara anonim lewat endpoint HTTPS, lalu pencarian kode bisa dilakukan di dalamnya. Situs pihak ketiga seperti https://grep.app/ juga dimungkinkan dengan cara ini. Untuk Reddit/Twitter, data sumber berupa postingan, komentar, upvote, dan tweet tidak lagi disediakan lewat API sehingga membuat alat pihak ketiga menjadi sulit atau mustahil. Namun di GitHub, data sumber masih mudah diakses dan hanya lapisan tambahan berupa pencarian yang diblokir untuk pengguna tanpa login, jadi situasinya cukup berbeda
Saya ingat ketika StackOverflow diluncurkan, ia dibandingkan dengan expertsexchange tetapi dinilai “terbuka”. Sekarang saatnya berpindah dari layanan tersentralisasi ke struktur yang lebih terdistribusi dan berbasis microtransaction. Banyak orang di HN mungkin tidak suka, tetapi forum tanya jawab, agregasi tautan berita dan komentar, hosting Git beserta alur approval, wiki, dan sistem tiket bisa dan seharusnya diimplementasikan secara sepenuhnya terdistribusi. Teknologi seperti Kademlia/BitTorrent, IPFS, dan CryptoTokens untuk pembayaran microtransaction memungkinkan hal itu. Hanya dengan beralih 100% terdistribusi, hal-hal ini bisa tetap “terbuka” dan bebas dari keserakahan korporasi. Meski pendirinya memulai dengan niat baik, dalam jangka panjang produknya berulang kali dijual dan orang-orang akuntansi mengambil alih kendali
Jika ditafsirkan dengan itikad baik, pencarian membutuhkan komputasi yang cukup besar, sehingga bisa menjadi vektor serangan denial-of-service yang besar
Saya tidak begitu tahu seberapa banyak data perilaku yang bisa dikumpulkan GitHub dari pengguna yang login, atau seberapa bergunanya data itu dibandingkan kode yang sudah publik. Mungkin bisa dipakai untuk memahami bagian kode mana yang penting, tetapi itu sulit disebut sebagai informasi per pengguna
Hanya sekitar 0,5% traffic mesin pencari saya yang berasal dari manusia. Saya tidak tahu banyak mesin pencari yang tidak memiliki statistik serupa
Sejak hari akuisisi oleh MS, menurut saya tidak ada alasan yang sah bagi proyek open source mana pun untuk tetap berada di platform itu. Bukannya tidak ada alternatif bagus yang bisa dituju hanya dengan sekali
git cloneJadi ada beberapa penjelasan masuk akal untuk mengunci API
Saat tidak login, saya memakai Sourcegraph. Kelebihannya, dibandingkan pencarian lama, ini jauh lebih baik
Caranya sesederhana menempelkan URL repositori yang dimulai dari github.com. Misalnya, di sourcegraph.com/github.com/rust-lang/rust/ Anda bisa mencoba mencari
unitdi repositori iniSebagian moat AI Microsoft terletak pada kemampuannya mengendalikan kemampuan pesaing memakai informasi dari GitHub
Berikutnya, saya tidak akan kaget jika mereka mulai membatasi
git clonegit clonedibatasi, karena akan ada terlalu banyak sistem CI yang rusakKita harus mengucapkan selamat tinggal pada sebagian besar NPM, manajemen paket Go, skrip Jenkins, dan sebagainya
Seingat saya, GitHub sudah menerapkan rate limit untuk memperlambat clone atau penggunaan API yang berlebihan
Meski saya setuju dengan posisi orang yang mengajukan pertanyaan itu, saya tidak tahu apakah perlu mengatakannya sampai seperti itu
Saya juga tidak sepenuhnya setuju dengan posisi itu, karena pencarian jelas tidak selalu murah dan bisa digunakan untuk serangan ala DoS. Saya tidak tahu apa gunanya mengatakan hal seperti, “tidak cukup memonetisasi sampai tiap buang air besar, sekarang kalian mau melacak baris kode mana yang saya lihat?” Perlu tenang. Klaim dasarnya juga tidak terlalu bagus. Repositorinya sendiri tidak dibatasi login; repositori publik bisa diakses publik, termasuk dengan clone. Jika penulis ingin repositori dan kodenya bermanfaat bagi publik, begitu kontributor melampaui sekadar mengunduh dan mencari lalu membuat issue atau mengirim PR, mereka pada akhirnya tetap harus login
Itu diperlukan saat memahami bagaimana sesuatu bekerja, atau saat berdiskusi di luar GitHub issue. Clone biasanya cepat, tetapi tidak demikian untuk repositori yang sangat besar, dan bisa saja tidak ada ruang untuk clone di perangkat saat ini. Selain itu, jika banyak orang memilih clone setiap kali alih-alih login—terutama karena login GitHub merepotkan akibat autentikasi dua faktor—saya juga ragu beban sistem akan berkurang. Tidak semua orang juga ingin punya akun GitHub
HackerNews: sekarang Anda tidak bisa melihat halaman depan tanpa melihat keluhan bahwa layanan gratis tanpa iklan tidak disediakan untuk pengguna yang belum login
Dalam kasus ini, kode Anda digunakan untuk pelatihan Copilot dan sebagainya. Bahkan andaikata tidak demikian dan layanan itu benar-benar sebaik yang Anda yakini, bisakah Anda bertepuk tangan saat melihat layanan itu memburuk bagi cukup banyak pengguna? Apakah itu hal yang menarik dan menggembirakan?
Satu-satunya contoh yang terlintas adalah perubahan API Reddit, tetapi itu sudah cukup lama dan hanya berkaitan longgar dengan login
Jika ingin terus mencari open source, https://sourcegraph.com/search tidak memerlukan login dan juga mencakup proyek-proyek besar yang tidak ada di GitHub
Sebagai catatan, saya adalah CTO Sourcegraph
Dulu saya berharap pencarian GitHub bisa menandingi
git clone + grep, tetapi tidak menyangka harga yang harus dibayar adalah penghalang login. Seingat saya, hambatan login itu hanya ada karena masih fitur beta, dan saya memperkirakan akan dihapus saat menjadi pencarian default