Jumat, 19 November 2010

OS Hybrid Blackberry adalah usaha yang sia-sia

Salah satu hal yang menarik bagi saya di komunitas BB adalah adanya OS Hybrid. OS Blackberry terdiri atas banyak modul, dan OS Hybrid ini adalah gabungan modul-modul dari berbagai versi OS. Teorinya katanya begini: di OS versi X browsingnya cepat, tapi memorinya boros, di OS versi Y memorinya hemat tapi browsingnya lambat, nah untuk mendapatkan hasil terbaik, modul-modul kedua OS tersebut digabung, supaya browsingnya cepat dan memorinya hemat.

Sebagai programmer, hal yang terpikir oleh saya adalah: bagaimana caranya orang-orang ini tahu modul mana yang harus dipilih? Jangan-jangan mereka hanya ngasal saja. Berdasarkan penyeledikan saya, kesimpulan yang saya dapatkan adalah: ya mereka cuma ngasal saja. Atau boleh dibilang 99% Hybrid sebenarnya tidak perlu (akan saya jelaskan yang 1% itu di bagian akhir).

Kenapa “menuduh” demikian? Saya tidak menuduh, saya menggunakan metode ilmiah untuk membuktikannya. Mengapa saya menghabiskan waktu cukup banyak (beberapa jam) untuk menyelediki hal ini? pertama saya penasaran, kenapa ada banyak sekali hybrid, dan nasihatnya kebanyakan sama: “dicoba aja dulu”, dan “cari yang mana yang cocok”. Kalau memang OS hybrid tersebut bagus, seharusnya akan berjalan dengan baik di semua handset (yang hardwarenya sama persis). Jadi saya kemudian mulai meragukan OS hybrid, dan ingin membuktikan bahwa OS hybrid ini adalah hal yang sia-sia. Siapa tahu tulisan saya ini bisa membujuk banyak orang agar menghemat bandwidth (tidak mendownload OS hybrid), dan menghemat waktu (instalasi dan boot Blackberry butuh waktu lama).

Pertama perlu diketahui bahwa setiap versi OS Blackberry, terdiri atas dua bagian penting, bagian pertama adalah firmware (disebut juga file radio). Firmware ini hanya berupa satu file. Dan bagian kedua adalah file module Java (.cod), ada banyak modul (banyak file .cod) dalam sebuah paket OS.

Isi file firmware adalah yang paling penting, di situlah JVM (Java Virtual Machine) dan segala driver hardware (termasuk driver GSM, driver kamera). Di OS 6, komponen terpenting browser (rendering engine) juga berada di firmware. Firmware ini ditulis dalam bahasa C, dan dikompilasi untuk target ARM. Beberapa komponen yang membutuhkan kecepatan tinggi juga ditulis dalam C (seperti misalnya Video decoder/encoder, lalu SQL engine yang menggunakan SQLite). Saat ini belum ada yang bisa memodifikasi file firmware ini, karena file ini ditandatangani secara digital oleh RIM, dan belum ada yang bisa (atau mau meluangkan waktu) untuk mencari kelemahan bootloadernya. Yang dilakukan oleh para pembuat Hybrid hanyalah memakai firmware versi sebelumnya atau sesudahnya (jadi mereka tidak bisa memodifikasi file ini).

Bagian yang disusun oleh para pembuat hibrid adalah file-file/modul .cod. File dari berbagai OS bisa dicampur menjadi satu, dan inilah yang disebarkan. Klaim dari para pembuat hibrid biasanya adalah: pemakaian memori lebih sedikit, lebih stabil, dan batere akan tahan lebih lama. Kadang ada juga klaim kamera akan lebih baik gambarnya.

Secara teori beberapa hal bisa diatur dari file cod milik sistem. Misalnya di engineering screen (escreen), kita bisa mengubah beberapa parameter firmware. Tapi hasil penyelidikan saya menunjukkan bahwa nilai yang digunakan adalah selalu nilai default dari firmware, dan tidak ada ada modul RIM yang mengubah-ubah parameter GPS, kamera, atau signal radio GSM/GPRS/3G/CDMA. Jadi secara praktis: menukar COD dari satu versi OS ke versi yang lain tidak akan mempengaruhi kinerja GPS, signal, atau kamera.

Lalu bagaimana membuktikan bahwa OS hybrid itu kebanyakan hanya ngawur saja? Lalu apa penjelasannya yang setelah memakai hybrid, pemakaian memorinya turun atau baterenya bisa bertahan lebih lama?. Pertama saya jelaskan dulu pembuktiannya, lalu saya akan mencoba menjawab pertanyaan mengapa hybrid tampaknya “berhasil”.

Logika pembuktiannya sederhana:

Coba download OS asli, coba download OS hybrid. Bandingkan versi modulnya

Untuk versi modul yang berbeda, bandingkan isinya, benarkah modul pengganti lebih baik dari modul yang ada di OS aslinya. Jika sama saja atau lebih jelek, berarti mereka hanya asal saja mencampur versi.

Pertama saya download beberapa OS asli, dan beberapa OS hybrid (saya pilih beberapa OS hybrid yang paling terkenal, tidak perlu saya sebutkan namanya). Untungnya di Thailand sini internet sangat cepat (saya memiliki ADSL 8mbps), jadi proses download tidak memakan banyak waktu. Kemudian saya menggunakan program buatan saya untuk melihat versi modul dari semua file .cod yang ada di OS asli (yang menjadi base untuk hybrid), dan versi hybrid. Kemudian saya bisa membuat tabel perbedaan antara versi yang ada di OS asli dan versi yang ada di OS hybrid.

Berikut ini cuplikan kira-kira output program pembanding versi, versi di kiri adalah dari OS asli, dan kanan adalah dari OS hyhrid. Perhatikan bahwa di sebelah kiri versi modul semuanya sama (dalam hal ini 822) dan di sebelah kanan versi modulnya berbeda (ada yang 938, ada yang 977).


net_rim_cldc_srp_diagnostics 5.0.0.822 5.0.0.938
net_rim_bb_smime 5.0.0.822 5.0.0.977
net_rim_bb_videorecorder 5.0.0.822 5.0.0.938
net_rim_services_impl 5.0.0.822 5.0.0.938

Perlu diketahui bahwa ketika merilis versi OS baru, RIM akan menyamakan semua nomor versi modul, meskipun modul tersebut sama sekali tidak berubah dari versi sebelumnya. Ada beberapa modul yang masih sama persis dari sejak versi 5 pertama hingga versi 6 terbaru. Perubahan ini agak sulit dilihat tanpa tools khusus, karena kadang versinya berbeda, ukuran filenya berbeda, tapi isi programnya masih sama persis.


Logika berikutnya yang saya pakai adalah: jika para pembuat hybrid ini tahu apa yang mereka lakukan, mereka hanya akan mengganti modul-modul yang memang berpengaruh untuk mengoptimasi. Jadi jika base OS-nya 822, lalu modul X tidak berubah sampai versi 900, maka tidak perlu mengganti file versi 822 ini dengan versi 900 (tidak berpengaruh sama sekali). Berikutnya saya punya program untuk mendisassemble isi file .COD, dengan program ini saya bisa melihat dengan tepat perubahan apa yang ada antara versi asli dengan versi pengganti. Ternyata sebagian besar file yang diganti tidak berubah sama sekali isinya (kecuali nomor versinya). Dalam contoh di atas, net_rim_cldc_srp_diagnostics, net_rim_bb_smime, net_rim_bb_videorecorder dan net_rim_services_impl ternyata isinya sama persis di kedua versi tersebut. Beberapa modul lain hanya berubah sedikit sekali, dan tidak akan berpengaruh pada penggunaan memori ataupun kecepatan.

Catatan: maaf program untuk disassemble file ini tidak bisa disebarkan secara legal, karena berdasarkan kode hasil reverse enginerring rapc.jar. Program ini dimungkinan karena saya melihat hasil dari pekerjaan drbolsen dan slawlerguy, saya cukup yakin para kracker aplikasi BB juga punya program semacam ini (itu sebabnya mereka bisa membuat serial number generator). Dengan program tersebut saya bisa melihat isi bytecode dari sebuah file cod. Isi bytecode ini seperti assembly, tapi relatif mudah dipahami. Secara teknis: semua nama package, serta name method dan field yang public dan protected bisa dilihat.

Modul-modul yang memang banyak berubah dari satu versi ke versi lain adalah browser. Di OS sebelum versi 6, rendering dilakukan dalam Java. Di OS versi 6, ini dilakukan dengan menggunakan webkit (dalam C, kodenya di firmware, bukan di file COD lagi). Sebelum versi 6, memang ada beberapa perbaikan browser, dan ini memang kadang berpengaruh dalam kecepatan browsing. Jadi dalam kebanyakan hybrid, bagian ini yang kadang-kadang berpengaruh. Saya katakan kadang-kadang karena perubahan yang dilakukan tidak selalu dalam hal kecepatan, sebagian perubahan adalah dalam hal dukungan terhadap tag HTML tertentu atau CSS tertentu (jadi ada kemungkinan browsing lebih cepat, tapi tampilan situs tertentu jadi kurang bagus atau bahkan tidak tampil). Tapi sejak OS 6, menukar-nukar isi COD tidak akan berpengaruh dalam masalah penggunaan memori ataupun kecepatan.

Nah sekarang kepada jawaban mengapa sebagian orang menyatakan hybrid lebih bagus. Pertama kebanyakan orang akan melakukan shrinking (menghapus modul yang tidak perlu) ketika menggunakan hybrid. Bagian shrinking ini lebih berpengaruh dibanding modul-modul hybrid. Pertama dengan shrinking, space jadi lebih banyak, lalu biasanya program-program yang tidak berguna juga dihapus (yang membuat BB jadi lebih cepat).

Kedua adalah masalah sugesti. Anda tidak akan bisa meyakinkan seseorang yang gila dengan audio atau video (audiophile/videophile) bahwa kabel HDMI 100 USD sama kualitasnya dengan yang 10 USD. Padahal dengan pengukuran digital, signal yang lewat adalah sama persis. Nah dalam bidang hybrid, kecepatan OS juga sulit diukur. Ketahanan batere juga sulit diukur (biasanya hanya dengan program secaram meterberry/bbmeter) karena batere juga dipengaruhi oleh suhu ruangan, dan juga dengan banyaknya aktivitas pada saat itu.

Ketiga adalah: ada kemungkinan memang ada komponen yang lebih baik dari versi lain. Tapi kemungkinan ini sangat kecil, lebih besar kemungkinan modul dari versi lain justru mengakibatkan masalah (ini bisa dilihat bahwa kadang-kadang para pembuat hibryd ini membuat patch karena beberapa fitur tidak jalan, misalnya fitur video). Banyak hybrid yang sangat serupa, karena meski versi modulnya berbeda, tapi ternyata isinya sama saja. Dari hasil penyelidikan saya, kemungkinan komponen yang berpengaruh hanyalah penggantian modul browser. Modul ini kecil sekali (hanya sekitar 2-3 mb) saja. Seharusnya para pembuat hybrid, cukup memberikan modul ini saja, hemat bandwidth.

Hybrid kemungkinan hanya diperlukan jika memang ada bug di versi OS Anda saat ini yang sudah diperbaiki di versi modul berikutnya. Tapi mengetahui bagian mana yang harus diganti tidaklah mudah. Jika Anda beruntung dan tahu bagian mana, maka di situlah OS Hybrid bisa berguna. Jika tidak tahu tepatnya, maka mencoba-coba berbagai hybrid hanya akan buang-buang waktu saja (walaupun ada kemungkinan Anda bisa beruntung dalam coba-coba setelah berkali-kali).

Jadi kesimpulannya adalah: menginstall Hybrid kemungkinan besar tidak akan membuat BB Anda menjadi lebih baik. Menginstall OS terbaru, melakukan shrink, dan menginstall hanya program yang diperlukan akan membuat Blackberry Anda lebih cepat. Anda juga melihat posting saya sebelumnya untuk mengetahui bagaimana menggunakan engineering screen untuk mencari modul atau aplikasi yang memakan banyak memori dan/atau batere.

Sedikit tambahan lagi: sebenarnya penyebaran OS hybrid adalah sesuatu yang illegal menurut License Agreement-nya RIM. Silakan Anda baca sendiri jika tidak percaya. Membuat OS Hybrid untuk dipakai sendiri merupakan hal yang legal, tapi menyebarkan modul-modul yang hak ciptanya dimiliki RIM adalah hal yang illegal.

Catatan Untuk Anda yang mau membantah posting ini, tolong jangan gunakan anecdotal evidence. Contohnya begini: di “BB saya pake hybrid bisa bagus kok”. Argumen ini sama saja dengan “kakek saya merokok kayak kereta api, dia sehat sampai umur 99 tahun kok”. Itu tidak membuktikan bahwa merokok itu bagus. Itu hanyalah satu contoh kebetulan saja, karena sebagian besar orang yang merokok tidak sehat dan mati muda. Bukti Ilmiah haruslah berdasarkan sesuatu yang bisa diukur dan dibuktikan oleh orang lain (klaim tersebut bisa diulangi/dicoba oleh orang lain).

Tidak ada komentar:

Posting Komentar