Jay's first impressions of the Agenda VR3

[I wrote this up the day after my Agenda VR3 arrived, among the first batch of consumer units that shipped. I've learned more since I wrote this, but I'll put that in separate documents. Here and there I've added later comments in brackets like this]

Yesterday I got my long-awaited Agenda VR3, a Linux-based PDA that uses stock XFree86 for its (small) display, and all of whose software is open-source. These are my first impressions.

Physically, it's a nice piece of hardware. It's noticeably smaller than a Palm III (though considerably larger than a V). You can find out what it looks like at the Agenda site, so I won't bother with that.

I pre-ordered it as a `toy'/`platform for experimentation' without knowing whether it would actually be usable for standard PDA tasks (addresses, scheduling, etc.). I figured even if it wasn't an acceptable replacement for my Palm, it was a neat enough gadget, and I had enough use for its more specialized features, to go ahead and get one.

When you put in the batteries and turn it on (or press the reset button), you see fairly standard Linux boot messages scrolling up the screen in tiny white-on-black letters, interrupted at one point by a touch-screen calibration process. It's pretty cool to see "starting inetd" scroll by on my PDA. :-) After a while the screen clears, and after a considerable delay the "Launch Pad" appears with big icons for the included apps. Including a terminal (a modified rxvt). Tap that, and you get a shell prompt. It's ash, a very restricted sh implementation, but you can run bash as well.

The biggest problem with the Agenda in its current incarnation is the extreme slowness of starting applications, and sometimes of switching between them as well - to the point that just for normal tasks, I often found myself wondering if the thing had hung. [I've since discovered that it's a lot faster if you edit the config files (1) not to start the LaunchPad and (2) not to run syslogd. I'm not sure if it's just a matter of me subconsciously adapting to the Agenda's limitations or whether it's actually that much faster without those things running, but I don't have that problem any more. Also, there are alternate builds of the romdisk that you can download that are alleged to speed it up a lot.] Launching an app when there are a couple other things open can be distinctly painful - sort of like working on a normal Unix box with X when the X server is thrashing. And if you yield to temptation and tap the button that doesn't seem to be responding (or worse yet, tap a window that belongs to a different application than the one that's starting up), your tap gets queued, and causes the Agenda just to take that much longer to return to responsiveness.

When you're staying within one application, even a fairly compute-intensive one like a game, the Agenda seems pretty responsive, comparable to a Palm.

This actually doesn't affect the main PIM apps very much - the address book, the calendar, etc. - because they're all symlinks to the same binary, and that binary is loaded into RAM at boot time. So launching one of those applications is much quicker than launching something else, and switching between them is almost instantaneous. Clearly the Agenda developers know that responsiveness is their biggest problem, and they've put a lot of effort into addressing that problem where it's most important. [Actually, it turns out that the calendar is pretty slow with a realistic set of data - usable, but barely.]

As with a Palm, when you turn the unit off, it doesn't actually shut down, just goes into hibernation, so turning it on to look up an address or something is not much slower than with a Palm. My current uncertain suspicion is that I'm going to find it adequately fast to stop carrying around my Palm, but it certainly won't be as fast for routine tasks. [And yes, at this point I don't carry my Palm with me, but for PIM applications I certainly miss it.]

However, I think the things it can easily do that a Palm can't will make it a very interesting toy, and maybe even a useful tool. The biggest win is that pretty much anything that can be built for Linux on a desktop can be easily ported to this PDA, provided its memory and long-term storage (flash/hard-drive) profile is small enough. There are a couple Python ports, a Tcl/Tk port, Scheme, something called "microperl", and so on. ssh, pgp, xspread, and xboard are already available (the last with a back end that's a lot smaller than gnuchessx, but xboard itself was a pretty simple port). The card games that ship on the unit are ported from the Ace of Penguins. This machine is just dead easy to develop for if you already do Linux development.

Moreover, since the included software is all GPLed or LGPLed, you can build the Agenda apps for your Linux desktop. I built a couple of them last weekend, before I got the Agenda itself. So you can enter all your data on your desktop, and then copy the database files to the Agenda. (And of course you can go the other way as well.) This is not as nice as having the Palm Desktop for Windows, since the built-in Agenda apps are designed for the Agenda's small screen, but for interactive use it's a nicer way of getting at your data on Linux than the text-file formats that the pilot-link utilities produce, and you're pretty much guaranteed that you will be able to access on your desktop any data you can access on your Agenda, without somebody needing to write a conduit or special software for it - just build the Agenda app for Intel architecture.

The CD that shipped with the first consumer Agendas includes GCC built for cross-compiling for the Agenda's MIPS processor, plus all the libraries and headers you need. All for Linux, of course - they don't even have their Windows sync software ready yet. :-)

(Most of the built-in PIM applications store their data in Berkeley DB files, so extracting it into other formats on the desktop should be fairly trivial. The preferences are in dotfiles. [I haven't yet managed to read the data with anything other than the stock Agenda apps built for i386, but I think it's just a matter of poking at it enough, or reading the source code. The Agenda uses version 1.85 of libdb, rather than 2.x, which is the default in most distributions.])

Similarly, because the Agenda is running real X11, while it's in its cradle with PPP running, you can run an Agenda app displayed to your desktop machine (or vice versa, if the app fits on the tiny screen). I haven't tried this yet. [It works. It's slow. You don't really want to do it. :-)] One major warning here: the agenda ships with no password on the user account (`default') that the apps run as, with a root password of agenda, and with telnetd and rsyncd enabled! You do not want to allow routing between your Agenda and the internet. This is something that will need to be addressed soon, because people are going to want to be able to ftp, browse the web, chat on IRC, etc. from their Agendas on the road without their private data being stolen or deleted. I've seen some claims that there are problems with putting a password on the default user, but I'm not sure if that's still accurate. You could, of course, kill inetd, and re-enable it just for syncing.

Most of the included Agenda applications are written in C++, using a C++-based widget set called FLTK (Fast Light Toolkit). This might prod me to learn C++. :-) It's perfectly possible to develop in C, and to use bare Xlib, though. Of course, you can also build and run tty-based applications (like bash :-) in a terminal, if they can handle a 30-to-32-character-wide screen. The look of the Agenda is a lot different from that of a Palm: although modern Palms can display 16 shades of gray, the same as an Agenda, PalmOS started as a one-bit black-and-white OS, and most apps still look that way. Agenda apps make extensive use of greyscale and look a lot different. The fonts (mostly various sizes of Helvetica) aren't as nice as the fonts on a Palm, though. (Of course, since they're just X fonts, we can replace them. :-)

The Agenda's memory usage is a bit strange. There's 16Mb of flash ROM, split among the kernel, the root partition, and a /flash partition, where all config files, /usr/local, and the default user's home directory are stored. The intention is that future models of the Agenda will have the OS in ROM, and /flash will still be flash ROM for data storage. (Since this is flash ROM rather than battery-backed RAM, an Agenda won't lose data even if it runs completely out of battery power. However, since it's flash ROM rather than RAM, blocks will eventually wear out after a very large number - about 100,000 - of rewrites. The filesystem is designed to equalize usage of the flash-ROM blocks so any given file should be able to be rewritten a lot more times than that.) The current unit uses flash ROM for the OS as well, which means the OS can be upgraded fairly easily (and I believe they're planning to continue to sell OS-upgradable units even after they introduce the ROM-based ones). In addition to 16Mb flash ROM, the Agenda has 8Mb of RAM. While there are ramdisks in RAM (that's where /tmp lives, for instance), this RAM is mostly used the same way RAM is used in a desktop - as working space for running applications. This is drastically different from the model on a Palm, where RAM is basically considered permanent filesystem-level storage, and an application typically updates its database in place, but only gets to ask for very small amounts of working `scratch' memory from the OS. Compared to a high-end Palm's 8Mb of total storage, an Agenda's 24Mb is pretty generous. But compared to a typical Linux box with at least a gig of disk and 64Mb or 128Mb of RAM, well, it's limited. But it works. Telnetting into an Agenda feels a lot like telnetting into a typical Unix box of maybe 10 years ago.

So, those were my first impressions. I've since gotten the machine (or myself) in a state where it almost never hangs. I have not yet gotten the included `QuickSync' software, which is supposed to sync with gnomecard and gnomecal to work properly, but I don't care much, since I have the Agenda PIM apps on the PC, and rsync works fine for copying the databases back and forth. I've ported some command-line tools, using the GCC cross-compiler provided on the Agenda CD, and that was a painless process. My current opinion is that for PIM functions, it can't hold a candle to a Palm yet at this point (although it's good enough that I don't feel the need to carry my Palm), but as a fun hacking platform, a Palm can't hold a candle to the Agenda. And because it's all GPLed, I strongly suspect that it will evolve and improve pretty quickly.