September 11, 2014

Open Source Project: eKitaab EBook Manager


Halo setelah lama tidak lagi menulis akhirnya ini tulisan perdana saya di blog tahun ini..

Sekarang penulis ingin memperkenalkan sebuah software opensource bernama eKitaab yang dirilis dengan lisensi publik GNU oleh Balaji Srinivasan tahun 2007. Sebuah software manajemen ebook yang sangat berguna bagi kita-kita yang masih menjadi mahasiswa, yang sayangnya, perkembangan nya sudah lama terhenti. Meski demikian, versi “terbaru” software ini, versi 0.6 (2007) masih dapat didapatkan distribusinya di http://ebookmanager.sourceforge.net/ . Penulis ingin menyampaikan ketertarikan penulis pada software ini, kekuatan dan kelebihan software ini, serta sedikit perubahan yang telah penulis buat terhadap software ini, yang source code nya bisa kalian dapatkan di bagian bawah tulisan ini.

Ada beberapa hal yang membuat penulis tertarik pada software ini, antara lain: berguna bagi penulis yang masih mahasiswa, dan opensource, sehingga bisa dimodifikasi sesuai kebutuhan serta dapat dijadikan bahan pembelajaran sebagai developer. Untuk alasan yang pertama, penulis memang dari dahulu mencari software manajemen softcopy materi-materi perkuliahan. Manajemen file materi perkuliahan secara konvensional/manual seperti menyusunan struktur folder/direktori sesuai mata kuliah dari seabrek file materi dirasa masih belum cukup, masih banyak masalah yang melanda seperti: file yang susah dicari, bingung menempatkan file, file ganda, dan lain sebagainya. Dari kesulitan penulis sebagai mahasiswa di atas, penulis mulai, ketemulah software ini yang paling mendekati kebutuhan penulis. Mendekati loh ya...

Masuklah alasan kedua yang membuat penulis tertarik: karena software ini opensource, murni Java dimana penulis memiliki kemampuan dasar didalamnya, serta dikembangkan dalam IDE Netbeans, memudahkan software ini untuk diutak-atik sesuai dengan kebutuhan penulis. Yang tidak kalah penting, software ini bisa dijadikan sebagai alat pembelajaran serta latihan agar menjadi developer handal.
 
...#ehem...
 
Sedikit flashback, sebelum menemukan software ini, sempat terlintas dalam benak (naif) penulis untuk membuat software sendiri starting from scratch, namun penulis mengurungkan niat tersebut karena pastinya akan memakan banyak waktu. Yasudah, karenanya penulis putuskan untuk mengembangkan software punya Pak Balaji yang sudah ada ini saja. Dan ini merupakan software opensource pertama yang penulis modifikasi!
 
Keunggulan dan kelemahan
 
Penulis merasa tidak ada keunggulan yang bisa ditonjolkan dalam kesederhanaan software ini selain potensinya untuk dikembangkan lebih jauh lagi, paling tidak software ini bisa berguna bagi kalangan mahasiswa, atau kalangan developer muda yang ingin belajar menjadi developer. Itu saja cukup bagi penulis yang menilai software ini sebagai pengguna dan (calon) pengembangnya.
Ada yang unik dari software ini dalam menyimpan keterangan mengenai ebook-ebooknya: software, ini menyimpan informasi mengenai buku pada nama file, informasi tersebut tidak dipisahkan dalam sebuah database tersendiri. Hal ini menjadikan penyimpanan data menjadi praktis, namun terbatas, sehingga penulis tidak memasukannya sebagai keunggulan.
 
Kemudian, sebagai proyek yang sudah terhenti sejak tahun 2007; software ini memiliki banyak kelemahan, antara lain: berbagai fitur kurang update sehingga tidak bisa digunakan, dokumentasi buruk, dan teknis kodingannya, dari desain sampai implementasi juga tidak begitu baik.
 
Sebagai contoh, dalam software ini ada sebuah fitur untuk secara otomatis mendapatkan informasi mengenai ebook yang kita punya dari jasa penyedia informasi buku seperti Amazon. Sama seperti Windows Media Player lah, yang secara otomatis mendownload informasi mengenai album/lagu yang sedang kita putar. Software ini sepertinya terhubung pada server Amazon untuk mengambil informasi mengenai bukunya. Namun sekarang fitur tersebut sudah tidak bisa digunakan, mungkin karena ada perubahan pada servernya, atau memang karena belum diatur konfigurasinya oleh penulis.
 
Selanjutnya untuk dokumentasi kode, penulis merasa gregetan saat pertama kali membuka source code software ini dalam IDE Netbeans, dikarenakan sedikitnya komentar serta dokumentasi di dalamnya. Komentar yang dibuat sepertinya bukan untuk developer lain (dari luar), hanya untuk kalangan sendiri. Dokumentasi yang kurang ditambah pengalaman serta pengetahuan penulis yang masih sedikit, menyebabkan usaha untuk mempelajari dan mengerti kode ini membutuhkan waktu yang cukup lama: total kira-kira 3 jam, dalam 3 hari, karena jika penulis lelah membaca kodenya, penulis suka ketiduran...
 
Sedangkan untuk kekurangan dari segi desain dan implementasi, penulis tidak akan berkomentar banyak karena belum mengerti banyak (mengenai program ini sendiri maupun ilmu design pattern), namun satu yang penulis yakin, program ini masih bisa disederhanakan lagi dari kedua segi tersebut.
 
Modifikasi pada kode
 
Sebelum membuat modifikasi terhadap software ini, tentu sebelumnya kita harus memahami dulu cara kerja software ini. Secara ringkas, software ini bertujuan untuk menampilkan keterangan/informasi mengenai ebook ke dalam tabel pada tampilan utamanya. Sekali lagi penulis ingatkan, source code bisa kalian dapatkan dibawah tulisan ini.


Gambar 1 Tampilan utama eKitaab Ebook Manager dalam Ubuntu. 

Format ebook yang didukung (untuk ditampilkan dalam tabel) software ini bermacam, ada 8, tetapi yang penulis butuhkan untuk materi kuliah hanyalah yang berformat PDF, sehingga penulis putuskan untuk mengubah sedikit kode software ini.


Gambar 2 Bagian implementasi verifikasi file dalam MainFrame.java . Penulis komentari format selain pdf dan chm.


 Gambar 3 Bagian yang memanggil fungsi verifikasi di atas, dalam BookTableDataModel.java.

Tanpa mau terkesan teknis, sedikit detail dari cara kerja di atas: Pada dasarnya semua data dan informasi yang ditampilkan dalam tabel (instansi dari JTable) ini di-handle oleh sebuah data model, yang dalam Java merupakan instansi dan implementasi dari AbstractDataModel. Pada software ini, yang digunakan adalah subclass dari AbstractDataModel, yaitu kelas BookTableDataModel. Kelas BookTableDataModel inilah yang berfungsi untuk membaca dan mengambil informasi dalam file di harddisk, memasukannya ke dalam data model, untuk kemudian ditampilkan ke dalam tabel. Tetapi sebelum memasukan informasi mengenai file ke dalam data model, ia melakukan sedikit verifikasi terhadap extensi/format file yang terbaca, memastikan hanya file ebook yang dimasukan ke dalam data model.

Nah, dengan sedikit mengubah kode dalam bagian verifikasi tersebut, penulis dapat mengatur, tipe/format file apa yang akan dimasukan ke dalam data model, untuk kemudian ditampilkan di tabel. 

Sederhana, namun seperti yang penulis katakan sebelumnya: dokumentasi yang kurang ditambah pengalaman serta pengetahuan penulis yang masih sedikit membuat mengubah kode ini—mengembangkan software ini makan waktu.

***
Kembali lagi pada penulis, penulis memutuskan menggunakan software ini karena sesuai dengan kebutuhan penulis sebagai mahasiswa dan sebagai bahan pembelajaran pemrograman serta pengembangan software Java.
Tentu banyak lagi software manajemen ebook lainnya, jika kalian punya contoh yang opensource silahkan komentar disini dan bahas apa keunggulannya, bandingkan dengan software ini. Jika ada kritik dan saran silahkan dikomentari. Jika setelah membaca artikel ini kalian berminat untuk mengembangkan software ini lebih jauh, ingin menambahkan fitur-fitur baru, ingin membuat dokumentasi, dan sebagainya, please let me know, silahkan dikomentari.




*Jika ingin mempelajari lebih lanjut mengenai hubungan antara JTable, AbstractDataModel, dan data serta cara mengolahnya bisa baca disini: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

**Bagi yang mau lihat mendownload source codenya yang sudah penulis modifikasi: https://drive.google.com/file/d/0B27ziWaCDimLM3dsMmVsbkc2VU0/edit?usp=sharing

No comments:

Post a Comment