jCIFS Finds a Niche in the Smartphone Ecosystem
If a “dog year” is equivalent to six or seven human years, then a “smartphone year” is pushing thirty. Smartphones age quickly—faster than dogs and much faster than humans—but smartphone dotage has more to do with the overtaking pace of feature enhancements than it does with hardware actually getting old and wearing out. The newer models consistently have more memory, more storage, more CPU power, …and more buzz than a swarm of hyperactive piezoelectric bumblebees.
I broke down recently and replaced my venerable (but quite serviceable) Google G1 with a fancy new Galaxy S II. The G1 is three years old now (that’s 90 in smartphone years), but it’s still in great shape. The reason for the “upgrade” is that the G1 has run out of room for new apps. Another factor is that it still runs Android 1.6 which, when compared against current Android releases, is getting a bit Lawrence Welkish. The GSII currently runs 2.3.6, but will be upgraded to version 4 (Ice Cream Sandwich) a little while after the update is available (I’ll hold off for a while, if I am given the choice).
The first new app I installed on the new ‘phone was a file browser; a tool that gives me access to local files, including hidden and system files, stored on my ‘phone and the installed SD card. As a bonus, the app I chose includes a built-in SMB/CIFS client, so I can access files and directories on my Samba servers as well.
Of course, being a CIFS Geek, I wanted to know a little more about the SMB/CIFS implementation being used, so I ran WireShark to take a quick peek at the packets being sent to my server. I was not surprised to find out that the file browser I installed uses jCIFS.
jCIFS is a project that I started many years ago, based upon a polite and productive argument I had with another Samba Team member and a vague hunch that an SMB/CIFS toolkit in Java would be useful to someone somewhere someday. As with all good Open Source projects, jCIFS took on a life of its own. The project is now, thankfully, run by someone else—someone who actually enjoys coding in Java.
The file browser I installed is from EStrongs. I have also heard that the Astro file browser uses jCIFS at the core. There are probably many others, but it seems that some app developers don’t like to advertise the fact that they’re using Open Source code in their products. jCIFS is licensed under version 2.1 of the LGPL, so it doesn’t require exposure of the rest of the project’s source code. It does, however, require that users be made aware of their rights under the LGPL which include access to the jCIFS source code as used in the app, particularly any modifications made to jCIFS. It’s easy to meet these requirements. A quick message in the product’s “About” page with a link to a web page that makes the LGPL code available is all it takes.
jCIFS is perfect for the Android platform. It would actually be better if jCIFS were included with Android itself, rather than being included with the apps. (Maybe it is, but if that’s the case no one has told me so.)