Lelucon dan humor yang tersembunyi di API resmi Android
(voxelmanip.se)- Di API publik Android, tersembunyi metode dan konstanta yang jenaka
- Contoh yang paling dikenal adalah metode seperti isUserAMonkey() dan isUserAGoat(), yang memadukan kegunaan nyata dengan unsur lelucon
- DISALLOW_FUN, Log.wtf(), dan lainnya memuat penjelasan bercanda atau perilaku yang menghibur di dalam API resmi
- Penamaan yang kreatif atau parodi (misalnya TWEET_TRANSACTION, GRAVITY_DEATH_STAR_I) sering muncul dalam dokumentasi resmi maupun kode
- Elemen-elemen ini berperan memberi kesenangan kecil dan penemuan menarik bagi para pengembang
Lelucon dan unsur humor di dalam API publik Android
API terbuka Android memuat beragam lelucon cerdas dan elemen easter egg untuk pengembang, berdampingan dengan fungsi nyata
ActivityManager.isUserAMonkey()
- Metode ini digunakan untuk menentukan apakah UI Exerciser Monkey milik alat pengembang sedang berjalan
- Dirancang agar perilaku tertentu bisa dibatasi di lingkungan pengujian stres aplikasi yang mensimulasikan input acak pada UI
- Diperkenalkan agar saat monkey, bukan pengguna nyata, sedang memakai aplikasi, fungsi penting tertentu (misalnya panggilan darurat) dapat dibatasi
- Ditambahkan ke API publik pada Android 2.2 (Froyo, API 8)
- Memiliki latar belakang implementasi yang benar-benar dibuat untuk mengatasi masalah tak disengaja pada masa awal pengembangan Android
UserManager.isUserAGoat()
- Di dokumentasi resmi, metode ini dijelaskan seolah-olah untuk memeriksa apakah pengguna adalah target teleportasi, tetapi itu hanyalah lelucon
- Awalnya selalu mengembalikan false, tetapi setelah Goat Simulator dirilis, perilakunya diubah agar mengembalikan true jika game tersebut terpasang
- Pada Android 11 (API 30) ke atas, nilainya dikunci selalu false demi perlindungan privasi
- Sempat ada logika pendeteksian aplikasi Goat Simulator, tetapi diubah untuk mencegah kebocoran informasi seiring perubahan kebijakan akses daftar aplikasi
- Terinspirasi dari easter egg di Google Chrome Task Manager
UserManager.DISALLOW_FUN
- Ditambahkan pada Android 6 Marshmallow (API 23) sebagai kebijakan pelarangan kesenangan
- Dokumentasi resmi menyatakan bahwa kebijakan ini dapat membatasi pengguna agar tidak merasakan kegembiraan atau hiburan
- Dalam praktiknya, ini dipakai sebagai kebijakan yang memungkinkan pemilik perangkat membatasi sebagian fungsi pengguna
- Beberapa aplikasi atau sistem sendiri dapat mendeteksi kebijakan ini untuk menonaktifkan fitur “menyenangkan” seperti easter egg
- Dapat dimanfaatkan di lembaga pendidikan dan semacamnya untuk menonaktifkan fitur yang mengalihkan perhatian
Chronometer.isTheFinalCountdown()
- Pada Android 8 Oreo (API 26), ditambahkan metode isTheFinalCountdown
- Saat dipanggil, metode ini otomatis membuka video YouTube “The Final Countdown” milik Europe
- Tidak punya kegunaan praktis yang langsung terlihat dan jelas merupakan lelucon/referensi
- Hal ini tampak jelas dari perintah Intent di dalam kodenya
- Memberi hiburan kecil bagi pengembang
PackageManager.FEATURE_TOUCHSCREEN_MULTITOUCH_JAZZHAND
- Ini adalah konstanta untuk menandai dukungan multitouch yang ditambahkan pada Android 2.3 Gingerbread (API 8)
- Namanya merupakan parodi dari jazz hands, gestur dalam pertunjukan musik
- Artinya perangkat dapat mengenali hingga lima jari secara bersamaan
Log.wtf()
- Singkatan dari What a Terrible Failure, digunakan untuk mencatat kondisi yang seharusnya tidak pernah terjadi
- Diklasifikasikan sebagai log serius setingkat assertion
- Menjadi salah satu API bercanda yang paling dikenal di kalangan pengembang
AdapterViewFlipper.fyiWillBeAdvancedByHostKThx()
- Ditambahkan pada Android 3.0 Honeycomb (API 11)
- Memiliki penamaan yang tidak resmi dan ceria, dan dipanggil saat view dilanjutkan oleh host
- Diduga lahir dari ide penamaan yang sengaja dibuat komikal
- Mengekspresikan secara jenaka sulitnya penamaan, salah satu masalah klasik dalam ilmu komputer
IBinder.TWEET_TRANSACTION
- Jenis transaksi ini diperkenalkan pada Android 3.2 Honeycomb (API 13)
- Namanya menyiratkan pengiriman tweet, tetapi sebenarnya tidak melakukan apa pun, dan batas panjang pesan 130 karakter merujuk pada kebijakan Twitter lama
- Namanya sendiri sepenuhnya merupakan parodi
IBinder.LIKE_TRANSACTION
- Ini adalah transaksi LIKE yang ditambahkan pada Android 4.0.3 ICS (API 15)
- Digunakan untuk mengirim sinyal bahwa pemanggil menyukai aplikasi, tetapi tidak ada pencatatan atau penghitung nyata
- Ada penjelasan bercanda bahwa ini membantu meningkatkan rasa percaya diri aplikasi
SensorManager.SENSOR_TRICORDER
- Konstanta ini diambil dari Tricorder dalam Star Trek
- Sudah ada sejak masa Android 1.0, tetapi kemudian diberi status deprecated
- Karena Tricorder adalah perangkat fiksi ilmiah yang tidak benar-benar ada, konstanta ini memberi senyuman bagi pengembang
SensorManager.GRAVITY_*
- Di dalam SensorManager, ada konstanta yang memuat nilai gravitasi berbagai benda langit (matahari, Pluto, dan lain-lain)
- Di antaranya, GRAVITY_DEATH_STAR_I (Death Star dari Star Wars) dan GRAVITY_THE_ISLAND (pulau dari drama LOST) merupakan lelucon
- Sebagian punya makna yang lebih kuat sebagai parodi daripada kegunaan nyata
<blink> tag
- Di sistem layout view Android, ada tag tersembunyi bernama <blink>
- Tag ini membuat view anak berkedip seperti
<blink>lama di HTML - Tidak dijelaskan di dokumentasi resmi, tetapi ditambahkan lewat commit tahun 2011 dan masih ada di AOSP sampai sekarang
- Apakah benar-benar dipakai dalam praktik masih menjadi bahan perdebatan
Kesimpulan
Di berbagai bagian API resmi Android, lelucon, parodi, dan elemen bergaya easter egg sengaja disisipkan
Elemen-elemen ini memberi pengembang kesenangan kecil dan rasa senang saat menemukan sesuatu, sekaligus memperlihatkan budaya komunitas Android yang ceria
2 komentar
Opini Hacker News
Di FB selama bertahun-tahun, ada kebiasaan memberi sufiks seperti
_DO_NOT_USE_OR_YOU_WILL_BE_FIREDpada token yang berbahaya atau sudah usang. Semua orang tahu ini lelucon, tetapi setelah pandemi, ketika proporsi pegawai baru meningkat dan onboarding jarak jauh kurang memadai, muncul juga keluhan bahwa candaan internal seperti ini menimbulkan rasa takut atau ketidakpastian. Ini hanya berdasarkan pengalaman yang pernah saya alamiSaya ingat sejak dulu merasa nama seperti React
__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIREDlucu sekaligus kelewat panjang. Tapi sayangnya, belakangan "humor" semacam ini makin menghilang PR terkaitDulu di Google, ada sebongkah kode raksasa di suatu bagian network stack yang sulit dipahami dan sulit diubah, dan ukurannya terus membesar. Tim kami lalu menamai kode itu "[Foo]Sorcery". Karena namanya terasa seram dan aneh, tidak ada lagi yang mau menambahkan hal baru ke sana, dan sesekali ada yang malah merapikan sebagian lalu menghapusnya. Menurut saya penamaan yang lucu itu efektif
Di source Android, fungsi jenaka favorit saya adalah
android.os.Handler.runWithScissors(), tapi sayangnya itu tidak termasuk dalam public API tautan sourceDi komentar fungsi itu ada kalimat “@hide This method is prone to abuse and should probably not be in the API. If we ever do add it, we should probably rename it to something less funny like runUnsafe().” yang masih membuat saya tertawa
Sedikit disayangkan fungsi ini tidak disebut di artikel utama. Ini salah satu fungsi favorit saya
Contoh yang langsung teringat dari X11 adalah variabel global "party_like_its_1989" tautan kode, dan changelog ekstensi DRI2 penuh dengan ungkapan seperti "Awesomeness!", "True excellence", "Enlightenment attained" tautan changelog
Di BeOS (dan Haiku), ada fungsi "is_computer_on()" dan "is_computer_on_fire()", dan penjelasannya luar biasa bagus tautan referensi
Di Delphi ada exception bernama 'EProgrammerNotFound', dan dokumentasi resminya juga memuat humor yang sangat datar namun serius tautan dokumentasi
Tentu saya paham penamaan seperti ini dibuat untuk lucu-lucuan, tetapi pada komputer modern dengan manajemen daya tingkat lanjut, kondisi seperti ini sebenarnya cukup umum. Sistem operasi memang harus bisa menangani hal-hal seperti bangun dari mode hemat daya sangat dalam atau suhu motherboard yang mencapai 200 derajat sebagai sesuatu yang wajar
Menurut saya akan lebih lucu kalau
is_computer_on_fire()dipakai sebagai trigger berbasis event asinkronUntuk yang penasaran, ada juga tautan ke source terkait tautan kode
Saya suka bahwa selera humor seperti ini masih hidup di codebase perusahaan besar. Saat hanya memakai API kita tidak menyadarinya, tetapi ketika membaca source code langsung, easter egg seperti ini kadang muncul dan benar-benar membuat kita merasa bahwa kode ini ditulis oleh manusia. Software zaman sekarang terasa terlalu dingin, dan justru kontras seperti ini memberi rasa hangat. Sejujurnya saya berharap hal seperti ini lebih banyak lagi
Kalau ingin mencoba sendiri hal-hal seperti isUserAGoat dan isUserAMonkey di Android, saya pernah membuat aplikasi kecil yang menyediakan fungsi-fungsi itu tautan aplikasi. Nanti saya ingin menambahkan lebih banyak easter egg juga
Menambahkan fitur seperti pengecekan kebijakan DISALLOW_FUN mungkin juga akan cukup seru. Saya sempat mencari kodenya di GitHub, dan kebanyakan hanya dipakai oleh aplikasi Settings sistem untuk menyembunyikan easter egg versi. Mungkin saya bisa jadi pihak ketiga pertama yang benar-benar memakai fitur ini secara nyata
Tapi di Android 15 aplikasinya tidak bisa dipasang. Akan bagus kalau aplikasinya diperbarui karena Google mewajibkan minimum compileSdk yang sesuai
Di Chrome Task Manager dulu pernah ada kolom tersembunyi yang menampilkan "jumlah kambing yang diteleportasi oleh proses browser". Sekarang fitur itu sudah hilang, tetapi bisa dilihat di screenshot lama. Dulu bahkan ada 234 kolom, sekarang tinggal 16, jadi agak disayangkan
Saya rindu masa ketika produk teknologi penuh dengan easter egg. Sekarang semua terasa makin korporat dan budaya seperti ini seolah menghilang
Saya ingin menjadikan membalas thread ini sebagai pertanyaan wajib saat wawancara, termasuk ketika saya yang diwawancarai. Ini benar-benar momen “di dunia ini ada dua jenis orang”
Jadi ini soal adanya humor dan lelucon dalam dokumentasi teknis; meski sering dipandang negatif, saya pribadi sangat suka humor dimasukkan ke dalam dokumentasi. Saya pernah menulis soal ini
Apakah ungkapan ‘yuumer’ itu hasil terjemahan oleh AI....? duh duh duh