Palm webOS: The Other Linux Phone Platform

Palm's new webOS and its accompanying toolchain provide a strong testimony to the role Linux can play in the mobile arena.

Making an Impact

From my view in the cheap seats, Palm has come out swinging with its new mobile operating system, webOS. The platform is “connected” and targets the sweet spot of a mobile consumer or professional who loves powerful simplicity, though one could make a strong argument that webOS comes up a bit short as a gaming device — for now. In many ways the webOS is simply “Palm-like” — hearkening back to the days when our expectations for a mobile device were formed by the popular Palm Pilot. Strong on usability, the webOS integrates multiple accounts, calendars and social media such as Exchange, Google, GMail, and FaceBook to work the way you do. Do you have multiple monitors on your desk at work (or home?) — if you’re like me you very well do. In fact, I have two monitors at home and at the office I’ve got two external monitors — one for my Dell laptop and one for my MacBook.

We live in an age where multiple inputs are common place, content is king and notification-driven messaging is the norm. Why do we think that our mobile experience should be different? I’m thinking it really isn’t though we’ve been constrained to what our mobile devices can deliver. webOS supports a paradigm very similar to the multi-monitor world with its easy to navigate “deck of cards” approach. It delivers on this multi-tasking need but without the noise and obstacles of a traditional Windows mobile device where it seems as though you click and click forever to accomplish even something simple. With webOS, Palm has brought the “good” of how we work on the desktop but left the headaches behind. Have a look at this image of webOS running three applications: Google Maps, Messaging client, and the mobile PIM staple the “honey-do list”.

multitasking.PNG

That’s the way we work — multiple, collaborative inputs. When we speak of collaboration, we often think of working with others, you know: GotoMeeting, Livemeeting, LiveOffice, Google Docs, etc. — and to be sure, that is the most telling meaning of the word when we constrain our focus to just techie things. However we often live and work “collaboratively” all on our own with the various inputs and interests that dominate our time, keep us informed and enable us to keep on track. My calender tells me this column is due a few days ago…, and I have a presentation this morning and a flight tomorrow. My RSS reader keeps me updated on a handful items of interest and people are connecting to me on FaceBook for professional areas of interest because they didn’t have my email address.

Of course there is always email and the audio book I just listened to during my road trip to Silicon Valley — much more profitable way to spend time than watching television by the way. There is a mix of multi-person and individual “collaboration” in there. webOS moves the mobile experience closer to the way we really work. OK, perhaps only the way I work, but perhaps you can relate to some of it.

But what about other platforms, don’t they offer this stuff too? Sure, all of the major mobile platforms have many of the features of the webOS. The iPhone is popular because it is cool (and let’s admit it, peer pressure doesn’t end in grade school), it is simple-stupid easy to use, and it has lots of applications, satisfying the tastes of many. I knew it was a hit when my wife sent me a picture of the kids from a restaurant — and accomplished this feat without help from my kids, or so the story goes. My uncle has one — and my aunt even has an iPhone. And they don’t ask me for tech support any longer. Yes, finally!

The webOS user interface offers that same kind of simplicity, but also brings the power of multiple applications, notifications and asynchronous connectivity — something the iPhone cannot (or won’t?) deliver. Android’s user interface is also easy to use, and while arguably in flux as the platform matures, at times I feel as though Android leans more towards the “click and clack” — perhaps because there is simply so much in Android to contain it to a few swipes — but rather I think the “deck of cards” approach taken by webOS is superior. However you feel about iPhone or Android, the webOS gets it and at the end of the day webOS presents itself well and certainly holds its own with these other platforms. For sure it is not the right device for everyone, but I think they’ve hit the sweet spot between ease of use and fitting the way we work and play. OK, so now that I’ve gone on and on about how cool the webOS platform is, where does Linux come to play?

Palm webOS, It’s Not Just Android Any Longer

While Android has enjoyed the lime-light of being the “open source, linux based” mobile platform — and it is all of that and more, the Palm webOS is heavily invested in Linux technology and deserves some attention not only on its merits as a viable mobile platform, but also as a demonstration of a for-profit company making use of open source technologies. I am no wizard when it comes to deciphering the differences between the various open source licensing options so I’ll refrain from commenting on which license they are using, why they are using it, or how well they’re doing as an open source net-izen. I simply haven’t taken the time to research those things and candidly my focus is elsewhere. What I can see is that webOS is built upon Linux, webkit and many other open source technologies that are of interest to many. The features that make webOS a solid platform are enabled by a strong foundation and innovative, open source technology.

The development environment for webOS centers around Virtual Box from Sun, an open source Virtual Machine technology which hosts the webOS. When the emulator is running you can ssh into it and navigate the file system. You can even edit files with vi! I did it just because I could. Here is a quick view into the belly of the emulator. Note that I believe the same thing can be done with a real Palm Pre which has been put into development mode:

login as: root
root@localhost's password:
root@qemux86:/var/home/root# ls
diskcache        html5-databases  webimagecache
root@qemux86:/var/home/root# cd /
root@qemux86:/# ls -l
drwxr-xr-x    2 root     root         1024 Jul  7 16:36 bin
drwxr-xr-x    2 root     root         1024 Jul  7 16:36 boot
drwxr-xr-x   11 root     root         3000 Jul 27 01:36 dev
drwxr-xr-x   45 root     root         2048 Jul  7 18:25 etc
drwxr-xr-x    2 root     root         1024 Jul  7 16:34 home
drwxr-xr-x    4 root     root         2048 Jul  7 16:24 lib
drwx------    2 root     root     20971520 Jul  7 16:36 lost+found
-rw-r--r--    1 root     root      1319876 Jul  7 16:36 md5sums
drwxr-xr-x   11 root     root         1024 Jul  7 16:34 media
drwxr-xr-x    2 root     root         1024 Jul  7 16:34 mnt
dr-xr-xr-x   64 root     root            0 Jul 27 01:35 proc
drwxr-xr-x    3 root     root         3072 Jul  7 18:25 sbin
drwxr-xr-x   11 root     root            0 Jul 27 01:35 sys
drwxrwxrwt    8 root     root         1024 Jul 27 06:57 tmp
drwxr-xr-x   11 root     root         1024 Jul  7 15:21 usr
drwxrwxr-x   21 root     root         1024 Jul 26 14:55 var
root@qemux86:/#

We can even look at a list of running processes:

root@qemux86:/# ps -aef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 05:35 ?        00:00:02 /sbin/upstart
root         2     0  0 05:35 ?        00:00:00 [kthreadd]
root         3     2  0 05:35 ?        00:00:00 [migration/0]
root         4     2  0 05:35 ?        00:00:01 [ksoftirqd/0]
root         5     2  0 05:35 ?        00:00:04 [events/0]
root         6     2  0 05:35 ?        00:00:00 [khelper]
root        64     2  0 05:35 ?        00:00:00 [kblockd/0]
root        66     2  0 05:35 ?        00:00:00 [kacpid]
root        67     2  0 05:35 ?        00:00:00 [kacpi_notify]
root       104     2  0 05:35 ?        00:00:00 [cqueue]
root       108     2  0 05:35 ?        00:00:00 [ksuspend_usbd]
root       114     2  0 05:35 ?        00:00:00 [khubd]
root       117     2  0 05:35 ?        00:00:00 [kseriod]
root       149     2  0 05:35 ?        00:00:00 [pdflush]
root       150     2  0 05:35 ?        00:00:00 [pdflush]
root       151     2  0 05:35 ?        00:00:00 [kswapd0]
root       152     2  0 05:35 ?        00:00:00 [aio/0]
root       153     2  0 05:35 ?        00:00:00 [nfsiod]
root       373     2  0 05:35 ?        00:00:00 [rpciod/0]
root       377     2  0 05:35 ?        00:00:02 [kjournald]
root       407     1  0 05:35 ?        00:00:00 udevd --daemon
root       755     2  0 05:35 ?        00:00:00 [kpsmoused]
root       815     1  0 05:35 ?        00:00:00 dhclient
root       927     1  0 05:35 ?        00:00:00 /usr/bin/pmsyslogd -z -f 6 -m
root       973     1  0 05:36 ?        00:00:04 /usr/bin/dbus-daemon --fork --system
root       979     1  0 05:36 ?        00:00:00 /usr/bin/dbus-daemon --fork --session
root       981     1  0 05:36 ?        00:00:00 /usr/bin/PmNetConfigManager
root       982     1  0 05:36 ?        00:00:00 /usr/bin/luna-prefs-service
root       983     1  0 05:36 ?        00:00:00 /bin/sh -e -c ?    # Current plan is that the d
root       985     1  3 05:36 ?        00:03:30 /sbin/novacomd --connect-ip 10.0.2.2
root       987   983  0 05:36 ?        00:00:00 /usr/sbin/dropbear -F
root       992     1  0 05:36 ?        00:00:03 /usr/bin/hidd -v -f /etc/hidd/HidPluginsVbox.xm
root       997     1  0 05:36 ?        00:00:00 /usr/bin/PDFService
root       998     1  0 05:36 ?        00:00:00 /usr/bin/OfficeService
root       999     1  0 05:36 ?        00:00:41 /usr/bin/BrowserServer
root      1004     1  0 05:36 ?        00:00:02 /usr/bin/vboxadd-timesync
root      1010     1  0 05:36 ?        00:00:00 /usr/bin/PmConnectionManager
root      1011     1  0 05:36 ?        00:00:12 /usr/lib/jvm/java-1.5-palm/bin/java -Xexact -m
root      1013     1  0 05:36 ?        00:00:00 /usr/bin/LunaSysService
root      1016     1  0 05:36 ?        00:00:00 /usr/bin/extractfs -f /var/luna/data/extractfs
root      1017     1  0 05:36 ?        00:00:00 /usr/bin/fileindexer
root      1026     1  0 05:36 ?        00:00:43 /usr/bin/LunaSysMgr
root      1028     1  0 05:36 ?        00:00:00 /usr/bin/pubsubservice
root      1072     1  0 05:36 ?        00:00:02 /usr/sbin/powerd
root      1081     1  0 05:36 ?        00:00:00 /usr/bin/dnsmasq -d -C /etc/dnsmasq.palm.conf
root      1178     1  0 05:36 ?        00:00:00 /usr/bin/PmWsfDaemon -c /etc/til.d/tilwsfcdma.c
root      1181     1  0 05:36 ?        00:00:00 /usr/bin/pmradiosimulator 6260
root      1246   987  0 05:49 ?        00:00:01 /usr/sbin/dropbear -F
root      1247  1246  0 05:49 pts/0    00:00:00 -sh
root      1271     1  0 06:02 ?        00:00:00 /usr/bin/contextupload
root      1417  1247  0 07:04 pts/0    00:00:00 ps -aef
root@qemux86:/#

I have even rebooted the device by running /usr/bin/reboot! If you have the opportunity take some time to whirl around the file system — its really quite interesting to see how things are wired together.

WebKit is the OS?

We have recently heard that Google wants to launch an operating system which is essentially Chrome, or “just a browser”. Well, webOS has already taken an interesting approach to incorporating the browser into the lifeblood of the operating system — but don’t run off the EU and file an anti-trust lawsuit just yet. The growing trend in software development has been moving applications off of the desktop and into the browser. Call it cloud based if you want — it doesn’t matter.

The focus here is that the application runs in a browser environment. If not a browser alone, then in an embedded browser running in your “native” application. Think of MS Outlook or other email readers which render html directly within the application — this functionality is often provided by putting a browser “widget” into a window and navigating to a URL or feeding it a chunk of HTML. This approach gives your application some more flexibility because native features are still available to you. PhoneGap works this way — using an embedded browser to provide an environment and then you write your applications in HTML/CSS and JavaScript.

webOS turns this approach inside out. Each running Palm SDK enabled application is a Linux process which houses the WebKit engine, where the code is loaded into the engine rather then the engine loaded into the code. The application obeys all of the platform specific UI rules and tasking model. Application developers write their apps in HTML/CSS and Javascript. This is starting to sound familiar, right? While the operating system is so much more than just a browser, the browser technology is deployed in a novel and capable manner. And this is thanks in no small part to the opportunity to leverage (and contribute to) open source technologies such as Linux and WebKit. There is of course always more to discuss and we will be visiting on these topics again before long.

The webOS platform is young and only offers a few free software apps at present, howver a quick run-down of the available applications demonstrates how well the webOS can keep a user informed and connected with the world around you. Will it be enough to make an impact with the masses, draw developers and thousands of applications and ultimately sell millions of handsets? Time will tell, as it always does. But I can say this — the platform is impressive, the approach innovative and the technology is — well, its built on Linux and other open source technologies.

Fatal error: Call to undefined function aa_author_bios() in /opt/apache/dms/b2b/linux-mag.com/site/www/htdocs/wp-content/themes/linuxmag/single.php on line 62