Di artikel ini aku akan menuliskan bagaimana caranya supaya hybrid menjadi gak ‘ngasal’ dan bagaimana mengatasi masalah redistribution sehingga bisa tetap membuat hybrid yang legal. aku akan mulai dulu dengan masalah teknis, trus akan aku teruskan dengan masalah legalitas redistribusi modul. Perlu ditegaskan: aku tetap gak berniat membuat hybrid.
Masalah pertama yang dimiliki para hybrider adalah: kekurangtahuan masalah teknis. Ini dari hal dasar mengenai pemrograman: apa itu modul, apa itu kelas, apa itu inteface, dsb sampai ke masalah teknis jaringan, misalnya apa itu LDAP atau DNS resolver. Tanpa mengetahui itu semua, kita masih bisa terus berjalan meski akan sering terantuk batu, tapi klo tahu maka akan lebih baik.
Hal mendasar yang harus diketahui oleh para hybrider adalah: modul apa yang harus diganti. Kadang nama modul sangat mencerminkan isinya, misalnya net_rim_bb_facebook itu isinya adalah aplikasi facebook. Masalahnya adalah ada banyak nama yang gak jelas, misalnya net_rim_bb_elt atau net_rim_se13nettable. Ada juga modul utama yang namanya jelas, seperti net_rim_bb_addressbook_app tapi modul pendukungnya kurang jelas, misalnya net_rim_bb_addressbook_gal.
Hal teknis pertama yang bisa dilakukan oleh para hybrider adalah: mendokumentasikan fungsi setiap modul. Hal ini jelas gunanya: supaya gak ngawur mencampur modul. Misalnya aku pernah melihat di salah satu hybrid: ada masalah web browser, trus dia mencoba mengganti modul net_rim_bb_ldap_browser dengan harapan browsing akan lebih baik, hal tersebut ngawur, karena meski ada kata-kata “browser”-nya, modul tersebut gak ada hubungannya dengan web browsing. Modul tersebut berhubungan dengan LDAP suatu protokol layanan direktori. Kata-kata ‘browser’ di situ gak berhubungan dengan web browser. Bahkan bagi pengguna awam yang gak terhubung dengan enterprise, perubahan tersebut gak berpengaruh sama sekali terhadap apapun di handsetnya (sia-sia, karena modul ini dipakai oleh modul secure email/pgp).
Aku udah memulai mendokumentasi mengenai deskripsi modul, tapi karena keterbatasan waktu, hasilnya baru sedikit. Tujuan dokumentasi aku sebenarnya bukan untuk membuat hybrid. Itu awalnya dari catatan pribadi ketika melakukan reverse engineering, tapi ternyata berguna juga ketika shrinking (aku bisa memilih dengan mudah modul mana yang ingin aku hapus, karena aku melakukan shrinking manual dengan program bjavaloader di Linux). Karena informasi ini mungkin berguna bagi orang lain, maka sekalian aku share.
Untuk bisa menjadi referensi yang berguna, masih ada banyak hal yang harus dilengkapi dari dokumentasi saat ini yaitu:
Lengkapi semua modul, saat ini baru sebagian modul yang tercantum. Tambahkan informasi mengenai ketergantungan antar modul. Misalnya net_rim_bb_addressbook_gal dibutuhkan oleh address book untuk Global Address List, tapi gak bisa kita hapus karena merupakan komponen penting bagi address book. Catatan: ini udah aku tambahin, menggunakan skrip otomatis dari output disassembler (ini juga bisa didapat dengan javaloader dir -d).
Sebaiknya ada pemetaan terhadap fungsionalitas pengguna dan nama modul. Misalnya: fungsi SMS dipengaruhi oleh modul mana aja. Hal ini supaya klo masalah di versi terbaru hanya di masalah SMS, gak usah mengubah hal-hal yang gak berhubungan sama sekali.
Tambahkan informasi mengenai versi modul. Misalnya modul versi 100 dan 200 ternyata gak berubah, atau "modul X versi 100″ lebih cepat dari "modul X versi 200″. Ini supaya gak ngawur, mengganti modul X versi 100 dengan versi 200 padahal isinya masih sama persis.
Tambahkan deskripsi yang lebih lengkap mengenai cara kerja modul. Misalnya: aplikasi kamera gak memakai native API sama sekali. Jadi menukar-nukar modul kamera gak akan memperbaiki gambar.
Dokumentasi ini akan terus aku perbaiki klo aku ada waktu luang sambil aku menyelami internal Blackberry, jadi aku berharap orang-orang gak langsung mulai mengkritik "masih minim sekali dokumentasinya". Kalau memang Anda bisa membuat yang lebih baik, silakan saja memulai. Nah untuk para "hybrid master" yang menganggap aku "sombong", silakan buktikan kerendahhatian Anda dengan berbagi ilmu pada sesama mengenai pengetahuan Anda mengenai modul-modul Blackberry. Buat Anda yang banyak berkomentar, mungkin sebaiknya berhentilah berkomentar, dan mulailah berkarya.
Perhatikan bahwa dokumentasi memegang peranan penting di sini. Gregor Mendel gak tahu mengenai struktur DNA (analoginya: dia gak tahu internal program), tapi dia melakukan pencatatan teliti dari sudut pandang matanya tanpa peralatan modern (ini analoginya: gak tahu internal program, hanya memperhatikan masalah modul dari sisi pengguna). Kontribusi Mendel sangat besar karena dia membuat pengamatan yang sangat tajam. Jadi meski kurang mengenal internal program, sebenarnya para hybrider masih bisa berlaku ilmiah klo mau melakukan pencatatan yang baik dan membagikan hasilnya pada orang lain.
gak ada alasan untuk gak mencatat modul-modul yang dicampur berikut dengan mengapa Anda mencampur dan apa deskripsinya (kecuali Anda memang gak punya alasan, dan ngawur saja mencampur modul). klo pengamatan Anda akurat, ilmunya akan sangat berguna bagi orang lain. Misalnya ada pengguna bermasalah hanya di bagian SMS, dia gak perlu mendownload hybrid baru, klo tahu versi mana yang bagus (misalnya dia cukup mengambil versi lama yang dia miliki).
Selain membuat dokumentasi, aku juga menyarankan para hybrider untuk belajar hal-hal lain selain mencampur modul. Misalnya belajar mengenai jaringan dan aplikasi enterprise. aku berikan contoh lain yang aku temukan yang menurut aku "lucu": ada hybrider yang mencampur modul net_rim_bb_dnslookup_app dengan harapan bisa membuat browsing lebih cepat. Logika mereka fungsi lookup DNS yang baru bisa lebih baik.
Nah masalahnya adalah: fungsi lookup DNS dilakukan oleh library resolver, bukan oleh aplikasi. Tepatnya ini diimplementasikan di net.rim.device.cldc.io.dns.DNSResolverIPv4 dalam modul net_rim_cldc. Program DNS lookup hanya akan dijalankan klo Anda memilih "Options" "Mobile Network", trus tekan tombol menu "Tool", trus memilih "DNS Lookup" (jadi klo Anda gak pernah memilih menu itu, maka perubahan itu sia-sia saja). Analoginya dengan desktop, Anda gak akan membuat DNS lookup menjadi lebih cepat dengan mengganti program dig atau nslookup karena program itu gak dipakai oleh browser (browser akan menggunakan langsung library resolver).
Mengenai masalah legalitas redistribusi, ada solusinya, meski mungkin kurang nyaman bagi sebagian orang. Ada beberapa program open source yang menghadapi masalah redistribusi, salah satunya adalah corefonts. Proyek ini berusaha ingin memberikan akses font Microsoft kepada pengguna Linux. Mengapa ini diperlukan? Ada beberapa alasan: meski ada banyak font di Linux, font-nya kadang tampil aneh di website tertentu yang berfokus pada Microsoft, kemudian ada beberapa program yang dijalankan di Wine yang akan aneh tampilannya klo diberi font lain. Selain itu beberapa dokumen dalam format Ms Word juga bisa berubah layoutnya klo diberi font lain.
Masalahnya Microsoft gak mengijinkan redistribusi, artinya: Anda boleh download font Anda sendiri dari Microsoft, tapi Anda gak boleh menyebarkan yang Anda download ke orang lain. Bagimana proyek corefonts mengatasi hal itu? Proyek tersebut hanya menyediakan skrip. Jadi ketika Anda mendownload dari website corefonts, Anda sama sekali gak diberi file yang hak ciptanya ada di Microsoft. Anda hanya mendownload sebuah skrip kecil saja. Ketika dijalankan di komputer Anda, skrip itu akan otomatis mendownload dari website Microsoft (atau pihak lain yang diberi hak redistribusi oleh Microsoft). Jadi pengguna di rumah yang mendownload langsung font dari Microsoft (legal), bukan disebarkan oleh pengembang corefonts. Skrip kemudian secara otomatis mengekstrak font dari file .exe (dengan cabextract), trus memasangnya di direktori yang sesuai.
Apa hubungannya hal tersebut dengan solusi hybrid yang legal? Masalah redistribusi bisa diatasi dengan cara yang sama. Ini merepotkan pengguna hybrid di awal, tapi bisa menghemat di akhir. Begini detailnya: klo hybrid adalah campuran versi 100, 200, dan 300, maka kita bisa meminta pengguna mendownload OS resmi versi 100, 200, dan 300, trus kita berikan satu program (atau skrip kecil), yang akan mencampur modul-modul tersebut sesuai keinginan kita. Di awal, ini akan sangat merepotkan, karena user perlu mendownload beberapa OS resmi yang besar. Tapi ketika hybrid baru dirilis (dengan kombinasi baru, tapi gak memakai modul OS baru), maka pengguna cukup mendownload file yang kecil saja (hanya skrip untuk mencampur saja, mungkin hanya puluhan atau ratusan kilobyte).
klo semua orang setuju cara tersebut, maka pada akan ada penghematan besar dalam bandwidth total. Misalnya ada 50 pembuat hybrid yang masing-masing membuat 20 versi, semuanya berdasarkan versi 100,200, dan 300. Maka pengguna cukup mendownload sekali saja OS resmi versi 100, 200 dan 300, dan hanya perlu mendownload 50 x 20 = 1000 skrip hybrid, yang ukurannya sangat kecil (dibandingkan hybrid sekarang yang satunya berukuran puluhan hingga ratusan mega).
Demikian pembahasan teknis kali ini. Dengan tulisan ini aku berharap ada hybrider yang membuat hybrid secara ilmiah dan lebih terbuka untuk membagikan metodenya ke masyarakat umum. klo memang Anda tahu yang Anda lakukan (gak ngasal), tentunya Anda gak malu membagi "resep" Anda untuk masyarakat. Tentunya Anda sombong sekali klo merasa punya ilmu, tapi gak mau membagikannya kepada orang lain.
* Di beberapa negara, reverse engineering merupakan hal yang illegal dan di berbagai tempat ada batasan legal dalam reverse engineering. aku sudah mempelajari legalitas mengenai ini, dan menurut aku yang aku lakukan masih dalam batas legal (aku gak menerbitkan informasi yang sangat detail, gak membuat competing product, dsb). Lihat juga proyek open source ReactOS atau Wine yang melakukan reverse engineering secara legal.
Masalah Teknis Hybrid Blackberry
Langganan:
Posting Komentar (Atom)
26 September 2011 pukul 19.25
gan, tolong dijabarin lg dnk tntang modul2nya, aq ada niat mau gnti modul sms di os 4.5 dengan os 5 ( ngincer tampilan sms os 5 ) ane pke 8820
BTW PERTAMAX GAN...:MALU
1 Februari 2022 pukul 07.16
Online casinos where you can win real money – if you want to. You have to choose between playing slots, blackjack, roulette and more luckyclub.live than