1 puan yazan GN⁺ 2023-11-29 | 1 yorum | WhatsApp'ta paylaş
  • GitHub Community tartışmasında, herkese açık depolardaki kod aramasının da artık giriş yapmadan kullanılamaması sorun olarak gündeme getirildi; soruyu soran kişi bunun herkese açık kodun erişilebilirliğine ve açık kaynak kullanımına zarar verdiğini eleştirdi
  • GitHub bakım sorumlusu, tüm depolarda aramanın zaten uzun süredir giriş gerektirdiğini, 2023 başında arama özelliği güçlendirilirken tekil depo aramasına da giriş zorunluluğunun genişletildiğini söyledi
  • GitHub’ın gerekçesi, geliştiricilere yönelik arama yükünü karşılamak ve botlar gibi anonim isteklerin sunucuları bunaltmasını azaltmak
  • Tartışmaya katılanlar, herkese açık depoların hâlâ clone edilip yerelde aranabildiğini belirterek giriş zorunluluğunun bot engellemek için yeterli olup olmadığını sorguladı; rate limit, CAPTCHA ve basit arama kısıtları gibi alternatifler de anıldı
  • Pratikte giriş yapmamış kullanıcılar artık herkese açık kod arama bağlantılarını doğrudan açamıyor; bu yüzden grep.app, github1s, yerel grep, genel arama motorları ve çeşitli Git forge yansıları gibi dolaylı yöntemler de tartışıldı

Herkese açık kod aramasında giriş zorunluluğu uygulanıyor

  • GitHub Community Discussion #77046, “Can no longer search code without being logged in” başlığıyla, giriş yapmadan kod aramasının imkânsız hâle gelmesini ele alıyor
  • Soruyu soran kişi, eski bir cihazda kendi depolarında bir şey aramaya çalıştığını ancak giriş zorunluluğu yüzünden devam edemediğini anlattı
    • Parola yöneticisine erişmesi gerektiğini, 2FA ve YubiKey gerektiğini, ayrıca eski dizüstünde USB-C bağlantı noktası olmadığı için bunun engel olduğunu söyledi
    • İnsanların herkese açık depo kod aramasını kullanabilmesini istediğini de belirtti
  • Soruyu soran kişi, herkese açık depo ise clone edildikten sonra özel araçlarla arama ve analiz yapılabildiğinden, web kod aramasına neden giriş şartı konduğunu anlamakta zorlandığını eleştirdi
  • Bu tartışma GitHub’ın yanıtıyla Answered olarak işaretlendi; sayfada 19 yorum ve 58 yanıt görünüyor

GitHub’ın yanıtı ve resmî gerekçe

  • GitHub bakım sorumlusu martinwoodward, yaşanan rahatsızlık için özür dileyerek tüm depoları kapsayan aramanın zaten uzun süredir giriş gerektirdiğini söyledi
  • 2023 başında arama işlevi güçlendirilirken tekil depo aramasına da giriş zorunluluğunun genişletildiğini açıkladı
  • Asıl amacın GitHub geliştiricileri için arama yükünü desteklemek ve botlar gibi anonim isteklerin sunucuları bunaltmasını önlemek olduğunu belirtti
  • Tartışma sırasında başka bir katılımcı, GitHub’ın yeni kod arama uygulamasını anlatan The technology behind GitHub’s new code search bağlantısını paylaştı

Tepkinin odağı: herkese açık depolar ve açık kaynak erişilebilirliği

  • Birçok katılımcı, herkese açık depo kodlarının giriş yapmadan clone edilebildiğini, bu yüzden herkese açık kod aramasını da girişle engellemenin aşırı bir önlem olduğunu düşündü
  • Bir katılımcı, dış kullanıcıların kendi herkese açık kaynaklarını görmek için GitHub girişine zorlanmasının rahatsız edici olduğunu anlattı
    • Örnek olarak repo:USER/REPO, path:..., AND NOT path:**/_externals gibi arama sorgularını tek bir URL veya düğmeyle paylaşmak istediğini söyledi
    • Giriş zorunluluğu nedeniyle bunun yerine birden çok doğrudan dosya URL’si listesi kullanmak zorunda kaldığını belirtti
  • Başka katılımcılar, GitHub’ın kendisini “world's largest open source community” olarak tanıtmasıyla herkese açık kod aramasına koyduğu kısıtlar arasındaki gerilime işaret etti
  • Bazı yorumlar, Microsoft satın almasından önce de benzer kısıtların olduğunu hatırladığını söyleyerek bunun tamamen yeni bir durum olmadığını savundu

Bot engelleme ve maliyet tartışması

  • GitHub, anonim bot isteklerinden kaynaklanan yükü gerekçe gösterse de bazı katılımcılar giriş zorunluluğunun özel bot işletenleri durdurmakta zorlanacağını öne sürdü
  • Alternatif olarak önce rate limit uygulanması, sınıra ulaşıldığında ise CAPTCHA veya giriş istenmesi önerildi
  • Herkese açık depolar anonim olarak clone edilebildiği için botların yerel aramaya geçebileceği yönünde karşı argüman da sunuldu
    • Buna karşı başka bir katılımcı, clone işleminin GitHub’ın arama hesaplama altyapısını kullanmadığını, dolayısıyla hizmet reddi vektörünü azalttığını söyledi
    • Clone edilmiş verinin hızla stale hâle gelebileceği de belirtildi
  • Arama maliyeti yüksekse, basit sorguların giriş yapmamış kullanıcılara daha basit bir yöntemle sunulması, karmaşık sorguların ise giriş yapan kullanıcılara bırakılması gibi bir ayrım da önerildi

Arama işlevinin kendi kısıtları ve karşılaştırmalar

  • Bir katılımcı, giriş yapmış durumda bile path:contributing.md ile tüm herkese açık depolarda arama yapıldığında yalnızca 5 sayfa sonuç geldiğini belirtti
    • Başka bir katılımcı bunun tek bir sorguya özgü olmadığını, mevcut aramanın genel bir sınırı olduğunu söyleyerek ilgili tartışma olarak GitHub Community Discussion #9868’i andı
  • Başka bir katılımcı SourceForge, Google Code archive, GitLab ve Bitbucket’ın arama davranışlarını karşılaştırdı
    • SourceForge ve Google Code archive’ta arama olmadığını söyledi
    • GitLab’ın genel arama için giriş gerektirdiğini, depo bazlı aramanın ise mümkün olduğunu belirtti
    • Bitbucket aramasının giriş sayfasına yönlendirdiğini, ancak depo bulunduğunda giriş yapmadan aramanın mümkün olduğunu söyledi

Dolaylı yöntemler ve alternatif hizmetler

  • Giriş yapmadan tek bir depoda hızlı arama yapmanın yolu olarak, yerelde clone edip grep kullanma adımları paylaşıldı
    • /dev/shm dizinine geç
    • git clone https://github.com/user/repo
    • Depoya geçtikten sonra grep -r "pattern" .
    • Arama bittikten sonra depoyu sil
  • GitHub genelinde desen araması için genel arama motorlarında "pattern" site:github.com kullanma yöntemi de anıldı
    • Ancak bunun GitHub’ın yerleşik araması kadar güçlü olmadığı ve bazı kodların dizine eklenmemiş olabileceği sınırlaması da belirtildi
  • Alternatif ya da yardımcı araç olarak grep.app anıldı; giriş yapmadan depo araması yapabildiği söylendi
  • GitHub URL’sinde github.com yerine github1s.com yazılırsa deponun çevrimiçi VS Code benzeri bir görünümde açılabildiği ipucu da paylaşıldı
  • Alternatif Git forge olarak GitLab, Framagit, Gitea, Forgejo, Codeberg ve Gogs anıldı; bazılarında self-host edildiğinde kod aramasının etkinleştirilebildiği belirtildi

Proje barındırma yaklaşımına dair öneri

1 yorum

 
GN⁺ 2023-11-29
Hacker News görüşleri
  • Bu meseleye en iyi niyetli açıdan bakarsak, yeni GitHub kod araması gerçekten kullanıldığında çok başarılı olabilir ve genel arama motorlarına göre içeride çok daha fazla iş yaptığı için kaynakları çok tüketen bir özellik olabilir.
    Aramayı oturum açmış hesaplarla sınırlamak, crawler'ları işlemeye harcanacak sunucu kaynaklarından ciddi ölçüde tasarruf sağlayabilir. Buradaki ödünleşim, arama altyapısı maliyetini 3-4 kat ya da daha fazla artırmak mı, yoksa oturum açma zorunluluğu nedeniyle tepki çekmek mi gibi görünüyor. GitHub depoları için kendi kod arama aracımı yaptım, ama varsayılan GitHub kod araması o kadar kullanışlı ki neredeyse hiç kullanmaz oldum: https://simonwillison.net/2020/Nov/28/datasette-ripgrep/

    • En gerçekçi neden, insanların sinirlenip sonunda hesap açması ve GitHub'ın yeni kullanıcı artışı ile övünebilmesi gibi görünüyor.
      Buna karşılık mevcut kullanıcılar da oturum açmadan arama bile yapamadıkları için öfkelenebilir. Başkasının bilgisayarı, ortak bilgisayar, gizli sekme, iki aşamalı doğrulamaya harcanan zaman gibi durumlarda epey zahmetli. GitHub, oturum açmamış kullanıcılara ucuz ve hızlı bir temel arama bırakabilirdi ama bırakmadı.
    • Teknik gerekçe ilginç ama asıl mesele değil.
      Sonuçta GitHub'a kaydolmadan “GitHub'da barındırılan açık kaynak”a katılmak imkânsız hale geldi.
    • Çeşitli gerekçeler öne sürülüyor ama gerçekte yapay zeka bağlantılı şirketlerin ve araştırmacıların içerik kazımasını engellemek istedikleri ya da engellemek zorunda oldukları için olma ihtimali yüksek görünüyor.
    • Bunu bilinçli yapıyorlarsa Microsoft gerçekten berbat; basit bir beceriksizlikse de bu kadar kolay bir işi bile batırmış olmaları şaşırtıcı değil.
      grep 50 yıllık bir araç ve metin aramak için kendi kodunuzu yazmanız bile gerekmiyor; özgür yazılım kullanmak yeterli. Bir CRUD uygulaması ve 3 geliştiricili amatör bir startup değil; dünyanın en büyük ve en zengin teknoloji şirketlerinden birinin oturum açmadan metin aramasını bile doğru düzgün yapamaması acınası. Üçüncü bir açıklama varsa duymak isterim.
    • İçerideki kod araması sadece Elasticsearch, yani özel bir tarafı yok.
      GitHub'ın açıklaması genel olarak saçmalık gibi geliyor. Herkese açık endpoint'e zorunlu kimlik doğrulama koymak, iddia ettikleri soruna uygun bir çözüm değil. Bu endpoint'le ilgilenen bot geliştiricileri, botu ücretsiz bir hesapla oturum açtırır, olur biter; bu yüzden sunucu yükünü anlamlı şekilde engellemiş de olmaz.
  • En az 6 ay önce başladı ve değişiklik günlüğünde de duyuruldu: https://github.blog/changelog/2023-06-07-code-search-now-req...
    HN tartışması: https://news.ycombinator.com/item?id=36230929

    • Bunun yeni haber gibi gündeme gelmesi şaşırtıcı. Sanki yıllardır böyleymiş gibi geliyor; oturum açmadan en son ne zaman arama yaptığımı bile pek hatırlamıyorum.
      İş açısından bakınca neden yaptıklarını tamamen anlıyorum. İnsanları kelimenin tam anlamıyla kullanıcıya dönüştürerek kullanıcı etkileşimini artırıyor.
  • Artık GitHub'ı açık platform gibi görmeyi bırakmalıyız.
    GitHub da diğer hizmetler gibi kapalı bir duvarlı bahçe. Kullandığımız birçok açık kaynak projeyi barındırması onu daha iyi yapmıyor; hatta daha kötü bile olabilir. Çünkü bu projelerin katkı altyapısının bir kısmını kurumsal hesap kilidinin arkasına itmeye yardımcı oldu.

    • “Kurumsal hesap”a kaydolmak da, rastgele bir self-hosted GitLab hesabına kaydolmak da, Bugzilla'ya, wiki'ye ve herhangi bir git şeyine kaydolmak da kullanıcı açısından aynı şey.
      Hatta bunların arasında GitHub hesabının daha iyi olduğunu düşünüyorum. Çünkü sürekli yeni hesap açmadan ya da oturum açmadan neredeyse sınırsız sayıda projeye katılabiliyorsunuz. GitHub'ın bu alandaki diğer seçeneklerden anlamlı biçimde farklı olarak bir şeyi engellediğini söylemek zor. GitHub iyi bir yazılım yaptı ve ücretsiz sundu; onu oldukça açık ve erişilebilir tuttu; standart olan yerde standartları izledi, geri kalanı için API sağladı; açık kaynak projelere devasa depolama ve işlem gücünü ücretsiz sağladı.
    • GitHub'ın sayısız açık kaynak projenin büyümesine yardımcı olduğunu da söylemek gerekir.
      Git barındırma, wiki barındırma, issue'lar, GitHub Actions, GitHub Pages ve fena olmayan bir API var. Açık kaynak bir projeyi GitHub'a koymak için çok fazla neden var.
  • 2023'te web gerçekten kapandı. StackOverflow, Reddit, GitHub ve Twitter'ın hepsi scraping ve API erişimine fren koydu
    Tetikleyici, yapay zeka eğitiminin engellenmesi ile kârlılık baskısının birleşimiydi. Teknoloji sektöründeki durgunluk, Stack ve X'in yeni sahipleri, Reddit'in IPO hamlesi gibi ticari gerçekler de vardı. Uzun vadede tekelci veri pazarının büyüyeceğini düşünüyorum. Arama motorları, yapay zeka araçları ve veriye ihtiyaç duyan herkes kaynak veri akışları ya da API erişimi için ödeme yapmak zorunda kalacak; en zengin şirketler bu veriyi satın alabiliyorsa bu da antitröst sorunlarına yol açabilir

    • Sonunda herkes “StackOverflow, Reddit, GitHub, Twitter”ın başkalarının üretip sahip olduğu içeriklere erişim hakkını satmasını doğal karşılar hâle gelecek gibi
      Bir şey gerçekten özel/tekel niteliğinde bir veriyse, ücret rastgele bir Git sunucusu işletmecisine değil sahibine gitmeli. Fiyatı ve koşulları da sunucu işletmecisi değil, sahibi belirlemeli. Sunucunun para kazanması gerekiyorsa temel hizmetin kendisini ücretlendirebilir. Buna karşılık biri bir şeyi paylaşmak için oluşturduysa, o dönemde platform bu dağıtım için etkili bir kanal sunup kendisini de dağıtıma uygun diye tanıttıysa, kuralları sonradan değiştirmek ahlaken o kişinin emeğini korsanlamaktır. Böyle platformlardaki materyallerin önemli bir kısmı, gerçek sahipleri keyfî kısıtlamalar ve erişim ücretleri öngörmüş olsaydı muhtemelen en başta yüklenmezdi. Kurallar kökten yeniden yazılacaksa mevcut içerikler yalnızca asıl üretici açıkça onay verdiyse satılmalı. Oysa Reddit, böyle bir kötüye kullanımı engellemek için yazarların topluca sildiği gönderileri bile aktif olarak geri yükledi
    • Bu eğilim daha eskiden beri vardı, ama bu yıl özellikle daha fazla şey kilitlendi
      https://theoatmeal.com/comics/reaching_people
    • Adil olmak gerekirse GitHub, kod araması dışında çoğu özelliği hâlâ herkese açık anonim API endpoint'leri olarak sunuyor
      Sadece hız sınırları çok daha sıkı. GitHub hesabı oluşturmak ücretsiz ve pek müdahaleci de sayılmaz. Giriş yapsanız bile sunucuyu öldüremeyesiniz diye tüm API'lerde zaten hız sınırı var. Bu yüzden https://gitstar-ranking.com/ gibi araçlar, ücretsiz hesapla tüm depoların GitHub yıldızlarını kazımaya çalışırken zorlanıyor. Asıl önemli veri olan kaynak kodu HTTPS endpoint'i üzerinden anonim olarak clone edilebilir; sonra kod araması onun içinde yapılabilir. https://grep.app/ gibi üçüncü taraf siteler de bu yöntemle mümkün oluyor. Reddit/Twitter tarafında kaynak veri olan gönderiler, yorumlar, oylar ve tweet'ler artık API ile sunulmadığı için üçüncü taraf araçlar yapmak zor ya da imkânsız hâle geldi; GitHub'da ise kaynak veriye kolayca erişilebiliyor ve yalnızca arama denen yardımcı katman oturum açmamış kullanıcılara kapatılmış durumda, bu yüzden durum epey farklı
    • Hem doğru hem değil. ExpertsExchange, yanıtları “duvarın arkasında” tutmasıyla ünlüydü ve StackOverflow'a benziyordu
      StackOverflow çıktığında expertsexchange ile karşılaştırıldığını ama yine de “açık” diye değerlendirildiğini hatırlıyorum. Artık merkezi hizmetlerden daha dağıtık ve mikro işlem tabanlı bir yapıya geçme zamanı. HN'deki birçok kişi bundan hoşlanmayacaktır ama soru-cevap forumları, haber bağlantıları ve yorum agregasyonu, Git barındırma, onay akışları, wiki'ler ve ticket sistemleri tamamen dağıtık biçimde uygulanabilir ve uygulanmalı. Kademlia/BitTorrent teknolojileri, IPFS, mikro işlem ödemeleri için CryptoTokens gibi yöntemler mümkün. Bu şeyleri “açık” tutmanın ve kurumsal açgözlülükten uzak kılmanın tek yolu %100 dağıtığa gitmek. Kurucu iyi niyetle başlasa bile uzun vadede ürünün satıldığı ve muhasebecilerin kontrolü ele aldığı tekrar tekrar görüldü
  • İyi niyetli bakarsak arama epey bilgi işlem gerektiriyor ve bu yüzden büyük bir hizmet engelleme saldırısı vektörü olabilir
    GitHub'ın oturum açmış kullanıcılardan ne kadar davranış verisi toplayabildiğini ve bunun zaten açık olan kodla karşılaştırıldığında ne kadar faydalı olduğunu pek bilmiyorum. Kodun hangi kısımlarının önemli olduğunu anlamak için kullanılabilir ama bunun kullanıcıya özgü bilgi sayılması zor

    • Arama işlevi sunan herkes için gerçek bir sorun
      Arama motoru trafiğimin yalnızca yaklaşık %0,5'i insan. Benzer istatistiklere sahip olmayan arama motorlarını pek bilmiyorum
    • Bu davranış verisi toplama tam olarak Microsoft usulü bir yaklaşım; bu yüzden iyi niyetli yorumu uygulamaya gerek yok
      MS'in satın alma gününden beri hiçbir açık kaynak projesinin o platformda kalması için meşru bir neden olmadığını düşünüyorum. Bir git clone ile geçilebilecek iyi alternatifler yok da değil
    • Bir başka etken de şu: devasa kod bütününde anonim olarak facet'li düzenli ifade aramasına izin verirseniz kötü niyetli kullanıcılar sabit kodlanmış kimlik bilgilerini bulup ek sistemlere erişebilir ve düzgün bir denetim izi bırakmak da zor olur
      Bu yüzden API'yi kilitlemeyi açıklayabilecek birkaç neden var
  • Giriş yapmadığımda Sourcegraph kullanıyorum. Mevcut aramayla karşılaştırınca çok daha iyi olması gibi bir avantajı da var
    github.com ile başlayan depo URL'sini yapıştırmak kadar basit. Örneğin sourcegraph.com/github.com/rust-lang/rust/ üzerinde bu deponun unit ifadesini arayabilirsiniz

  • Microsoft'un yapay zeka hendeğinin bir kısmı, rakiplerin GitHub'daki bilgileri kullanma becerisini kontrol etmekte yatıyor
    Sırada git cloneu bile kısıtlamaya başlamalarına şaşırmam

    • git cloneu kısıtlarlarsa bozulacak o kadar çok CI sistemi var ki şaşırırım
      NPM'in büyük bir kısmına, Go paket yönetimine, Jenkins betiklerine vb. elveda demek gerekir
    • Kod girişin arkasında, hatta ücretli aboneliğin arkasında olsa bile, depo lisansına uygun olarak buna açık kaynak denip denemeyeceğini merak ediyorum
      Hatırladığım kadarıyla GitHub aşırı clone ya da API kullanımını yavaşlatmak için zaten hız sınırı uyguluyor
  • Soruyu soran kişinin tutumuna katılsam bile, bunu illa o şekilde söylemeye gerek var mı emin değilim
    Aramanın mutlaka ucuz olmadığını ve DOS tarzı saldırılarda kullanılabileceğini düşününce o tutuma da tamamen katılmıyorum. “Dışkılamamın her bir anını bile paraya çevirmek yetmedi de şimdi hangi kod satırına baktığımı mı izlemeye çalışıyorsunuz?” gibi sözlerin ne işe yaradığını anlamıyorum. Sakin olmak gerek. Temel argüman da pek iyi değil. Depoların kendisi oturum açmayla kapatılmış değil; herkese açık depolara clone dahil herkes erişebiliyor. Yazar kendi deposunun ve kodunun kamuya yararlı olmasını istiyorsa, basit indirme ve aramanın ötesine geçip issue açtığınız ya da PR gönderdiğiniz anda katkı sağlayan kişi zaten oturum açmak zorunda

    • Kaynak kodda hızlıca arama yapma ihtiyacı çok sık ortaya çıkıyor
      Bir şeyin nasıl çalıştığını anlamak ya da GitHub issue’ları dışında bir yerde tartışmak gerektiğinde lazım oluyor. clone genelde hızlıdır ama çok büyük depolarda öyle değildir; ayrıca o anki cihazda clone için yer olmayabilir. Üstelik birçok kişi oturum açmak yerine her seferinde clone ederse, özellikle GitHub oturumu iki faktörlü kimlik doğrulama nedeniyle zahmetliyken, sistem yükünün azalacağından da emin değilim. Herkes GitHub hesabı sahibi olmak da istemiyor
  • HackerNews: Oturum açmamış kullanıcılara ücretsiz ve reklamsız bir hizmet sunulmadığından şikâyet edenleri görmeden ana sayfaya bakamaz hâle geldik

    • Ücretsizse ürün sizsiniz sözü çoğu durumda doğru
      Bu durumda kodunuz Copilot eğitimi vb. için kullanılıyor. Öyle olmasa ve hizmet gerçekten sandığınız kadar iyi niyetli olsa bile, epey çok kullanıcı için hizmetin kötüleşmesini alkışlayabilir misiniz? Bu ilginç ve heyecan verici bir şey mi?
    • Bu iddia için bir dayanak var mı? HN’yi neredeyse her gün okuyorum ama “oturum açmadan X yapılamıyor” türü yazıların popüler olduğunu pek görmüyorum
      Aklıma gelen tek örnek Reddit’in API değişikliği; o da epey eski ve oturum açmayla yalnızca gevşek biçimde ilgili
  • Açık kaynak araması yapmaya devam etmek istiyorsanız https://sourcegraph.com/search oturum açmayı gerektirmiyor ve GitHub’da olmayan büyük projeleri de kapsıyor
    Bu arada ben Sourcegraph CTO’suyum

    • Kişisel GitHub hesabımla şirket bilgisayarında oturum açmak istemediğim için, depo araması gerektiğinde her zaman Sourcegraph kullanıyorum
      Eskiden GitHub aramasının git clone + grep ile yarışabilecek hâle gelmesini umuyordum ama bunun bedelinin oturum açma engeli olacağını düşünmemiştim. Hatırladığım kadarıyla yalnızca beta özellik olduğu için oturum açma engeli vardı ve temel arama hâline gelince kaldırılacağını bekliyordum
    • Aramaya oturum açmadan izin verirken Cody için neden oturum açma şartı koymaya karar verdiniz merak ediyorum