1 poin oleh GN⁺ 2023-11-29 | 1 komentar | Bagikan ke WhatsApp
  • 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, grep lokal, 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
  • 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:**/_externals lewat satu URL atau tombol
    • Karena ada kewajiban login, ia mengatakan harus menggantinya dengan daftar beberapa URL file langsung
  • 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.md hanya 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
  • 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.com menjadi github1s.com pada 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

1 komentar

 
GN⁺ 2023-11-29
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/

    • Alasan paling realistis tampaknya adalah orang-orang akan kesal lalu pada akhirnya membuat akun, dan GitHub bisa membanggakan pertumbuhan pengguna baru
      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
    • Alasan teknisnya menarik, tetapi bukan inti masalahnya
      Pada akhirnya, orang tidak lagi bisa berpartisipasi dalam “open source yang dihosting di GitHub” tanpa mendaftar ke GitHub
    • Ada berbagai alasan yang dikemukakan, tetapi sebenarnya kemungkinan besar mereka ingin, atau harus, menghindari scraping konten oleh perusahaan dan peneliti terkait AI
    • Jika ini dilakukan dengan sengaja, Microsoft benar-benar buruk; jika ini hanya ketidakmampuan, tidak mengejutkan bahwa mereka bahkan mengacaukan hal semudah ini
      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
    • Pencarian kode internalnya hanyalah Elasticsearch, jadi tidak ada yang istimewa
      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

    • Agak mengejutkan ini muncul seolah-olah berita baru. Rasanya sudah terjadi bertahun-tahun, sampai saya bahkan tidak terlalu ingat kapan terakhir kali mencari tanpa login
      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

    • Dari sudut pandang pengguna, mendaftar ke “akun korporat”, akun GitLab self-hosted acak, atau Bugzilla, wiki, dan semacam git apa pun, semuanya sama saja
      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
    • Perlu juga dikatakan bahwa GitHub telah membantu pertumbuhan banyak sekali proyek open source
      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

    • Pada akhirnya, sepertinya semua orang akan menganggap wajar bahwa “StackOverflow, Reddit, GitHub, Twitter” menjual hak akses ke konten yang dibuat dan dimiliki orang lain
      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
    • Tren ini sudah ada sejak lebih lama, tetapi tahun ini khususnya lebih banyak yang dikunci
      https://theoatmeal.com/comics/reaching_people
    • Secara adil, GitHub masih menyediakan sebagian besar fungsi selain pencarian kode melalui endpoint API anonim publik
      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
    • Benar dan tidak juga. ExpertsExchange terkenal karena menaruh jawaban di “balik tembok”, dan mirip dengan StackOverflow
      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

    • Ini masalah nyata bagi siapa pun yang menyediakan fitur pencarian
      Hanya sekitar 0,5% traffic mesin pencari saya yang berasal dari manusia. Saya tidak tahu banyak mesin pencari yang tidak memiliki statistik serupa
    • Pengumpulan data perilaku ini persis gaya Microsoft, jadi tidak perlu menerapkan tafsir beritikad baik
      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 clone
    • Faktor lain: jika mengizinkan pencarian regex berfaset secara anonim atas seluruh korpus kode raksasa, pengguna jahat bisa mencari kredensial yang di-hardcode untuk mengakses sistem tambahan, dan sulit juga meninggalkan jejak audit yang memadai
      Jadi 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 unit di repositori ini

  • Sebagian moat AI Microsoft terletak pada kemampuannya mengendalikan kemampuan pesaing memakai informasi dari GitHub
    Berikutnya, saya tidak akan kaget jika mereka mulai membatasi git clone

    • Saya akan kaget jika git clone dibatasi, karena akan ada terlalu banyak sistem CI yang rusak
      Kita harus mengucapkan selamat tinggal pada sebagian besar NPM, manajemen paket Go, skrip Jenkins, dan sebagainya
    • Saya penasaran apakah kode yang berada di balik login, atau bahkan di balik langganan berbayar, tetap bisa disebut open source sesuai lisensi repositorinya
      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

    • Kebutuhan untuk mencari cepat di dalam source code sangat sering terjadi
      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

    • Pepatah bahwa jika gratis maka Andalah produknya, dalam kebanyakan kasus memang benar
      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?
    • Apakah ada dasar untuk klaim itu? Saya melihat HN hampir setiap hari, tetapi tulisan jenis “tanpa login tidak bisa melakukan X” tampaknya bukan termasuk yang populer
      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

    • Karena saya tidak ingin login dengan akun GitHub pribadi di komputer kantor, setiap kali perlu mencari repositori saya selalu memakai 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
    • Saya penasaran mengapa pencarian diizinkan tanpa login, sementara Cody diputuskan tetap membutuhkan login