2 poin oleh GN⁺ 2024-07-10 | 1 komentar | Bagikan ke WhatsApp
  • Google Chrome menyediakan API yang hanya mengizinkan situs *.google.com mengakses penggunaan CPU sistem/tab, penggunaan GPU, penggunaan memori, informasi prosesor terperinci, dan akses backchannel logging
  • Karena API yang sama tidak diekspos ke situs lain, muncul perdebatan apakah vendor browser boleh memberikan hak istimewa khusus ke situs mereka sendiri
  • DMA mengkodifikasikan dalam hukum gagasan bahwa vendor browser sebagai gatekeeper internet harus menyediakan fungsi yang sama untuk semua pihak, dan bergantung pada interpretasi, pemberian informasi tambahan hanya ke properti Google dapat menjadi pelanggaran DMA
  • Zoom bisa berada pada posisi yang kurang menguntungkan dalam persaingan karena tidak mendapatkan fitur debugging CPU seperti Google Meet
  • Fitur ini diimplementasikan sebagai ekstensi Chrome bawaan yang tidak bisa dinonaktifkan dan tidak muncul di panel ekstensi, dan fungsi yang sama juga tersedia di Microsoft Edge dan Brave hanya untuk domain *.google.com

Informasi yang Diekspos oleh API Khusus *.google.com

  • Chrome menyediakan informasi status sistem dan data yang mendekati debugging hanya untuk situs *.google.com
    • Penggunaan CPU sistem dan tab
    • Penggunaan GPU
    • Penggunaan memori
    • Informasi prosesor terperinci
    • Backchannel logging
  • API yang sama tidak diekspos ke situs lain dan hanya dapat digunakan pada domain *.google.com

Cara Implementasi dan Perilaku Browser Turunan Chromium

  • Fitur ini diimplementasikan sebagai ekstensi Chrome bawaan yang tidak bisa dinonaktifkan dan tidak ditampilkan di panel ekstensi
  • Kode sumbernya ada di jalur Chromium hangout_services
  • Awalnya tidak jelas apakah ekstensi yang sama juga disertakan di browser turunan Chromium lain, tetapi pembaruan berikutnya mengonfirmasi perilaku berikut
    • Di Microsoft Edge, fitur ini juga tersedia khusus untuk domain *.google.com
    • Di Brave, ekstensi yang memungkinkan Google mengambil informasi ini hanya dari *.google.com juga telah diprainstal, dan menunjukkan perilaku yang sama seperti Chrome dan Edge

Isu Persaingan dan Regulasi

  • Jika browser menyediakan informasi sistem hanya untuk domain miliknya sendiri, layanan web lain akan kesulitan mengimplementasikan fitur diagnostik pada tingkat yang sama
  • Zoom disebut sebagai contoh yang tidak mendapatkan fitur debugging CPU seperti Google Meet, dan hal ini dapat mengarah pada masalah pengutamaan layanan sendiri oleh vendor browser
  • Dari sudut pandang DMA, isu utamanya tetap apakah gatekeeper harus memberikan akses fungsi secara setara kepada semua pihak

1 komentar

 
GN⁺ 2024-07-10
Komentar Hacker News
  • Melihat nama hangout_services, ini tampak seperti hack teknis lama yang bersifat utang teknis, dibuat untuk memudahkan pengembangan Google Hangouts
    Sepertinya tujuannya untuk mengalirkan data telemetri langsung ke tim Hangouts. Hangouts adalah aplikasi pertama yang mengimplementasikan panggilan video di browser, dan ini kemudian menjadi WebRTC. Modul ini mengekspos penggunaan CPU/GPU/RAM serta informasi hardware yang sebenarnya tidak bisa dilihat aplikasi. Google kemungkinan akan melihat thread Twitter ini lalu menghapusnya begitu saja. Hangouts sudah menjadi produk mati, dan sekalipun kode sisi server masih menggunakannya, sekarang cakupan penggunaan WebRTC jauh lebih luas, jadi tim Chrome mungkin memantau performa secara langsung dengan pendekatan multisitus

    • Bukan, ini sekarang dipakai di Google Meet. Jika membuka panel "Troubleshooting" di meet.google.com pada Chrome, penggunaan CPU seluruh sistem terlihat secara real time :)
    • Terlepas dari pelanggaran privasi, rasanya ini jelas isu antimonopoli. Google menyalahgunakan dominasi browser untuk memberi keunggulan pada produknya sendiri di pasar konferensi video
    • Mungkin ini dipakai untuk melacak penggunaan CPU/GPU dan sejenisnya agar bisa menyetel secara halus kualitas stream video yang digunakan
      Memang nonstandar, tapi kalau ini aplikasi native, hal semacam ini rasanya sangat mungkin dilakukan
  • Sepertinya saya bisa sedikit menjelaskan bagian ini. Sebagai catatan, saya mantan karyawan Google
    Dulu saya pernah bekerja di GVC, platform konferensi video internal Google. Pada 2010–2011, banyak perangkat konferensi video perusahaan saat itu berupa perangkat proprietary seperti Cisco Tandberg, dan karena mahal, biayanya besar untuk diterapkan di ribuan ruang rapat. Pada periode yang mirip, tim lain sedang mengembangkan Hangouts, dan saya agak lupa apakah saat itu namanya Google Meet atau baru kemudian menjadi demikian. Nama Hangouts sepertinya diadopsi ketika Google+ keluar dan produk itu diintegrasikan ke dalamnya. Konfigurasi GVC bermacam-macam, tetapi yang paling umum adalah kombinasi monitor/komputer All-in-One (AIO), dan itu PC Intel sepenuhnya. Jadi platform GVC adalah distro Linux kustom, dirancang untuk berkomunikasi dengan layanan Google dan mendistribusikan pembaruan software. Mereka juga menyimpan distro lama untuk berjaga-jaga jika boot gagal, dan ada berbagai masalah seperti penamaan perangkat. Dukungan untuk beragam hardware seperti panel sentuh, kamera PTZ besar, dan beberapa mikrofon juga diperlukan. Pada akhirnya Hangouts menjadi stack dasar GVC, menggantikan hampir semua Tandberg dan menghemat banyak uang. Sistem ini setidaknya masih digunakan sampai 2017, setelah itu saya tidak tahu. Pemantauan juga merupakan bagian dari itu, jadi jika terlihat API khusus *.google.com, perlu dilihat dengan tepat. Dari Tweet saja tidak bisa diketahui apakah Google dapat mengkueri semua instance Chrome di seluruh dunia, atau hanya bisa dari google.com. Namun, melihat nama hangouts_services dan pembatasan domain, tampaknya besar kemungkinan ini adalah dukungan pemantauan Chrome tertanam untuk GVC. Bisa saja saya salah

    • Sepertinya bukan itu. Saya baru saja mencoba panggilan Meet di Firefox, dan saat menekan tombol pemecahan masalah, grafik CPU dinonaktifkan dan muncul teks "coba gunakan Chrome untuk melihat penggunaan CPU"
      Di Chrome, saya tidak tahu apakah itu CPU yang dipakai Meet atau seluruh sistem, tetapi penggunaan CPU bisa dilihat, dan dalam kedua kasus tampaknya ini bukan sesuatu yang mungkin dilakukan dengan API umum. Saya cek dengan beberapa pekerjaan latar belakang yes, dan jelas itu seluruh sistem. Tambahan lagi, kebingungan nama memang selalu terjadi, tetapi GVC benar-benar nama yang jelas dan bagus
    • Ceritanya menarik, tetapi kasus ini tampaknya tidak mungkin terhubung bahkan secara tidak langsung. Rasanya tidak mungkin orang-orang yang mengoperasikan platform GCV dengan distro Linux kustom memilih “mari masukkan ekstensi kustom buatan kita ke semua instalasi Chrome di seluruh dunia” sebagai cara melaporkan statistik mesin
      Ini bisa dicoba langsung di halaman *.google.com mana pun:
      chrome.runtime.sendMessage("nkeimhogjdpnpccoofpliimaahmaaome", {"method":"cpu.getInfo"}, (resp) => { console.log(resp); });
    • Saya kurang paham perbedaan antara “apakah Google bisa mengkueri semua instance Chrome di seluruh dunia, atau hanya bisa dari google.com”
      API itu tampaknya memang hanya diekspos ke konten yang berjalan di *.google.com, tetapi itu hampir sama dengan “Google bisa mengkueri semua instance Chrome yang mengunjungi situsnya.” Bahkan jika tidak menggunakan layanan Google, Chrome secara default mengambil konten halaman tab baru dari Google, jadi secara praktik mendekati hampir 100%. Saya tidak menganggap ini akan digunakan dengan niat jahat, tetapi jika Google bisa mendiagnosis masalah dengan cara seperti ini sementara kompetitor di bidang yang sama tidak bisa, itu tetap masalah. Zoom tidak punya API semacam ini, bukan?
    • Saya belum pernah bekerja di Google, tetapi penjelasan ini sulit saya terima
      Maksudnya, demi mengamati penggunaan CPU pada appliance internal untuk platform konferensi video internal, mereka memasukkan plugin bundel ini ke Google Chrome untuk pengguna umum?
    • Menarik. Mungkin sebagian besar Google pun sampai sekarang tidak tahu bahwa ini bisa dilakukan
      Sekarang sepertinya puluhan manajer produk sedang mendekati tech lead produk mereka dengan kalimat “oke, dengarkan dulu…”
  • Fitur ini tampaknya ditambahkan pada Oktober 2013: https://github.com/chromium/chromium/commit/422c736b82e7ee76...
    Ini adalah commit yang membundel ekstensi Hangouts Services ke Chrome. BUG=291271, URL review: https://codereview.chromium.org/35873003. URL review tersebut adalah https://codereview.chromium.org/35873003

  • Saya tidak tahu persis API ini apa dan mengapa ada, tetapi Firefox juga melakukan hal serupa
    Ada API khusus yang hanya bisa digunakan di domain Mozilla dan Firefox, seperti untuk membantu pemasangan ekstensi atau pengalaman saat pertama kali dijalankan. Kurang dari 12 bulan lalu ada artikel blog terkait yang naik di Hacker News, tetapi sulit ditemukan

    • Itu tidak nyaris sama
      API-nya terbuka dan terdokumentasi, dan daftar domain yang diizinkan juga ada di UI serta about:config. Versi Android Play Store adalah pengecualian karena menyembunyikan semuanya, entah apakah tujuannya membuat browser itu menjadi sampah total. Dan jika Anda membawa use case yang bagus lalu meminta dengan sopan di Bugzilla, para pengembang sepertinya setidaknya akan mempertimbangkan untuk menambahkan domain default
    • Itu untuk situs web yang terkait langsung dengan pengoperasian browser. Sebaliknya, Chrome mengekspos API yang digunakan oleh produk Google terpisah seperti Google Meet
      Itu memanfaatkan monopoli di satu pasar, yakni browser, untuk mendapatkan keuntungan di pasar lain, yakni konferensi video, sehingga mungkin melanggar hukum antimonopoli
    • Dulu saya pernah menulis tentang bagian UITour: https://www.mkelly.me/blog/content-uitourjs/
      Di antara browser, ini cara yang cukup standar. Tingkat risikonya seharusnya mirip dengan jika seseorang memalsukan domain tempat browser mengunduh pembaruan perangkat lunak, dan jika benar-benar tidak suka, Anda bisa mematikannya di preferensi
    • Bulan lalu ada commit Quirks.cpp dari WebKit yang dibagikan [0]. Mungkin bukan yang Anda cari, tetapi nuansanya mirip
      [0] https://news.ycombinator.com/item?id=40631439
    • API semacam itu terkait dengan fitur browser dan onboarding. Itu tidak dimasukkan untuk membuat produk Mozilla lain lebih unggul daripada produk serupa dari perusahaan lain
  • Sebagai catatan, saya bekerja di Google, tetapi bukan penanggung jawab Chrome atau API ini
    Menurut saya penjelasannya cukup biasa. Misalnya, jika Anda membuka Google Meet, memulai rapat kosong, yaitu “rapat instan”, lalu menekan “Pemecahan masalah & bantuan” di menu “...”, Anda akan melihat berbagai grafik statistik termasuk penggunaan CPU. Sepertinya saat mesin terbebani selama panggilan Meet, Meet juga dengan ramah menyarankan agar Anda menutup tab. Cukup berguna, jadi kadang saya memeriksanya. Dipikir-pikir lagi, saya tidak yakin apakah saran untuk menutup tab itu benar-benar ada; yang benar-benar pernah saya gunakan hanya layar statistiknya

    • Bertentangan dengan penjelasan “cukup biasa”, ini sama sekali tidak biasa. Ini contoh sempurna pemberian keunggulan kompetitif yang tidak adil kepada produk sendiri
      Pengguna Meet mendapat panduan mengapa rapat tidak berjalan dengan baik, tetapi jika Zoom, Teams, dan Slack tidak bisa melakukan hal yang sama, pengalaman pengguna Meet pasti menjadi lebih baik. Tidak heran semua layanan rapat lain sangat mendorong penggunaan aplikasi desktop. Aplikasi desktop Google Meet pada dasarnya adalah Chrome
    • Justru itu intinya. Alat konferensi video lain tidak bisa menyediakan opsi debugging seperti ini, dan seperti yang baru saja dikatakan, fitur itu berguna
    • Pesaingnya, Zoom, punya versi browser. Bisakah mereka memakai API ini untuk mendiagnosis masalah performa? Jika tidak bisa, regulator Eropa mungkin akan tertarik
      Mungkin ini salah satu alasan Meet berjalan baik di browser sementara Zoom tidak, sehingga terutama ketika peserta rapat banyak, pengguna Zoom akhirnya memakai aplikasi native jika menginginkan performa yang layak
    • Hebat sekali Google membuat browser antikompetitif yang menyediakan fitur berguna hanya untuk mereka sendiri
      Terima kasih kepada karyawan Google yang mengatakan langsung bagian yang seharusnya dilewatkan diam-diam
    • Pengalihan kekuatan monopoli bukan hal biasa, melainkan ilegal
  • Sepertinya judul kiriman sedikit keliru saat diubah dari judul asli. Sejauh yang saya pahami, begini
    Chrome memiliki ekstensi bawaan yang menggunakan Chrome API publik yang juga mudah dipakai oleh ekstensi Chrome lain. Masalahnya adalah ekstensi ini membagikan informasi tersebut saat berkomunikasi dengan domain milik Google sendiri, tetapi situs web lain tidak bisa melakukannya. Tidak ada “API tersembunyi khusus”

    • “Khusus” berarti ekstensi itu bawaan Chrome, bukan dipasang oleh pengguna seperti ekstensi lain
      “Tersembunyi” berarti ekstensi itu tidak terlihat dalam daftar meskipun Anda membuka chrome://extensions. Dan seperti sudah dikatakan, itu juga Chrome API
    • Jika Anda menempelkan ini ke konsol Chrome DevTools di situs Google, ini terlihat seperti API khusus:
      chrome.runtime.sendMessage( 'nkeimhogjdpnpccoofpliimaahmaaome', { method: 'cpu.getInfo' }, response => { console.log('CPU Info:\n', JSON.stringify(response, null, 2)); } );
    • Jika sebuah “ekstensi bawaan” tidak bisa dinonaktifkan, itu tetap bagian dari browser
    • Ada juga penjelasan yang tidak berbahaya dan sederhana. Bisa dibayangkan bahwa sebagian fungsi browser diimplementasikan sebagai webapp bertanda tangan google.com, bukan sebagai C++ yang dikompilasi/ditautkan
      Akan aneh jika kode browser yang diimplementasikan sebagai PWA harus meminta izin terpisah untuk mengakses informasi sistem, karena itu memang bagian dari fungsi browser itu sendiri. Penggunaan lain dari API nonpublik yang sudah lama ada adalah mengintegrasikan situs web khusus Google yang menyediakan fungsi inti, seperti Chrome Web Store, dengan browser Chrome agar halaman web dapat mengizinkan pemasangan dan penghapusan ekstensi
    • Secara fungsional, itu hal yang sama
  • Ini tampaknya memakai API chrome.system.cpu, yang bisa diakses ekstensi apa pun jika memiliki izin "system.cpu"
    https://developer.chrome.com/docs/extensions/reference/api/s...
    Semua izin yang diminta ekstensi ini bisa dilihat di sini:
    https://source.chromium.org/chromium/chromium/src/+/main:chr...

    • Benar, dan itulah masalahnya. Google membundel ekstensi yang tidak berkaitan dengan perilaku browser itu sendiri ke dalam Chrome, lalu memberi akses istimewa ke produk lain, yaitu Hangouts
      Aplikasi konferensi video lain tidak punya akses seperti ini kecuali pengguna melewati langkah besar untuk memasang ekstensi terpisah secara manual
  • Tidak terlalu mengejutkan. Ini sangat khas Google. Pertanyaannya, apakah ini juga ada di browser Chromium lain. Bagaimana dengan Edge, Brave, Chromium, Ungoogled Chromium?

    • Saya tidak tahu yang lain, tetapi ungoogled chromium mungkin tidak memilikinya karena proyek itu sengaja mengacak semua bagian kode yang memuat string "google" untuk menghindari hal seperti ini
    • Di Edge, ini aktif. Jika membuka pemecahan masalah Google Meet di Edge, Anda bisa melihat CPU sistem
      Jika dicoba di Firefox, muncul pesan “untuk melihat penggunaan CPU, coba gunakan Google Chrome”
  • Safari juga punya fitur khusus Apple. Misalnya, saat login ke situs web lain dengan akun Apple, Safari bisa menampilkan dialog khusus yang berperilaku berbeda dari passkey atau autofill kata sandi
    Browser lain diarahkan melalui alur berbasis redirect. Saya selalu penasaran bagaimana ini diimplementasikan di JavaScript. Apakah semacam WebAuthn dengan argumen proprieter?

  • Google pernah melakukan hal seperti ini sebelumnya. Detailnya agak kabur, tetapi sepertinya Native Client dibuat hanya berfungsi di Hangouts melalui allowlist tingkat domain, atau semacam itu