OK, so everyone has an iPad article out. But I believe I have something to say that you won’t find in any of those other articles…
With the iPad available, everyone is obsessing over multitasking in the next version of the OS as the next big thing. This strikes me as missing the point.
Multitasking will come, we all know that. Less mentioned is VM, but it would not surprise me if the next version of the OS also supports paging to flash. We already have a paging system setup, and pages are loaded in on demand, but pages are currently very rarely written — perhaps through a few system memory mapped files? So the effort to activate paging out should be small. (The flash speed is not great, but I’ve seen my Mac write to it at at least 20MB/s, which would seem to be enough to handle paging.) Presumably at some point Apple will conclude that developers have been trained enough not to waste space that the gradual degradation of paging is a better user experience than apps simply dying when malloc returns NULL.
But what I have seen no-one ruminate on is the issue of the file system.
Let’s summarize the situation:
At the OS level we have a traditional file system (HFS+, so the jailbreakers tell us).
At the app level, developers see a traditional file system, but with the root set to a private playspace that only that app can touch, nothing else. So apps have a file system available, but cannot read or write or know anything about system files and, more significantly, cannot use the file system to share files with other apps. Each app is a silo decoupled from every other app.
At the user level, files are not part of the Apple supplied user model and abstractions. What exist are apps, and their interface for displaying their data. You don’t manipulate song files with the iPod app, you manipulate songs. You view photos, and never deal with photo files. Exactly how your contacts or email or Safari bookmarks are stored is not just hidden (MacOS X) but absolutely invisible and inaccessible.
There are two important consequences of this collection of decisions. The first is that persistent data (ie files) is not easily shared between apps. The second is that getting persistent data (ie files) into each app is not trivial.
During the iPhone era, these were minor and hidden problems that affected very few people (they certainly didn’t affect me). Consider the primary iPhone apps and uses.
Mail obviously gets its data via the network, and no-one thinks of mail in terms of files even on the desktop. There was no real need on the iPhone to drag mail enclosures to other apps, so that didn’t come up. Safari pulled in its bookmarks via iTunes, and again no-one really cared about “saving” any aspect of a web page “to disk”. Likewise for things like Stocks, Weather, even Contacts.
The two slightly tricky cases are music and photos. But even there…
For music the usage model is pretty obvious. Audio files go into iTunes, but once in iTunes, they become “songs”. (And, yes, this can result in pretty pathetic terminology issues when spoken word material like lectures is referred to as songs, but you can see here Apple’s attempt to avoid the word “file”.)
You organize your audio world with iTunes, and then some fraction of that is replicated on iPhone. Files never need to be visible. Since iPod for iPhone is adequate (certainly not great, but adequate) there’s been little pressure from users or developers for a 3rd party alternative, so the fact that no other app gets to see the song files doesn’t matter.
Photos have been more of an issue. On the mac it was fairly easy to have iPhoto follow the same model as iTunes — picture files are dragged into iPhoto, at which point they become photos, and iPhone replicates some fraction of the iPhoto collection. But what about on Windows? Already the story there is more than a little lame and clumsy.
Anyway this is our model until iPad, and with iPad it all falls apart. Let’s take an example — iPad appears like it would be a great reader, not an eBook reader, but a general reader — PDFs, PPT files, Word files, text files, all that accumulated text material you have on your computer in various folders. In my case this is a variety of tech specs, technical articles from various places, and being able to carry them around and read them, like a collection of books, would be very convenient. (And let’s, from this point on, refer to PDF as a generic term for this sort of readable file.) Right from the start in attempting to use iPad in this way, you start to see the oh-so-horrible limitations of this model.
There is Apple provided PDF-reading software in iPad (and iPhone) — but for PDFs in email, or encountered on the web; not the usage model we are interested in.
We can download an app to attempt to deal with the problem, but what is it we actually want from such an app? We want
- the ability, easily, to get PDFs into the iPad and
- the ability to organize the PDFs in some useful fashion and
- (perhaps) the ability to modify the PDFs (annotations etc) and get that back to the computer.
Right now Apple provides pretty much zero support for these tasks.
Consider, for example, GoodReader from goodiware. This is a fine program, well worth the $.99 it costs, capable of reading a variety of file types, and providing a reasonable reading experience. How do you get files onto the device?
What they do is have a stripped down webdavserver built into the app! They present themselves to the wireless network as a webdav disk (showing, of course, only their little fraction of the iPad file system, not the entire thing). In Finder on the mac you type in the URL for the iPad, and you now see the GoodReader fraction of the iPad file system, and can interact with it like any other file system.
While this works, and kudos to goodiware for providing it, it sucks in oh so many ways; for example the webdav file system does not just magically appear via Bonjour in Finder, you have to type in a URL. Why? One might blame goodiware for not making the appropriate calls — unlikely, I think. One might blame mDNS for not having rich enough semantics to express what is happening (”I am providing a file system, of type webdav, on port 8080″) — possible, I don’t know enough about mDNS to be sure. But most likely, I suspect, is that Apple is to blame, that iPad, either deliberately, or through no-one thinking of this use model, does not provide the infrastructure to signal itself to Finder over Bonjour.
While this allows us to get files into GoodReader on iPad, it provides no synchronization — just like any other file system, you copy files from place A to place B, after which the two evolve by themselves.
There is a second method, new to iTunes 9.1, and provided by Apple, for getting stuff into iPad app silos. Much like peche ala frog, though you would not have thought it possible, this (Apple provided!) solution is vastly worse than the webdav solution. The idea is
- you plug your iPad into your Mac
- in iTunes, choose the iPad device, and then the Apps tab
- scroll to the bottom of the Apps page, where you will see two boxes. (You see them if you have GoodReader or some other appropriately enabled app, maybe not otherwise.) The left box shows a list of Apps that have “iTunes-visible” file system space. If you choose such an app, you see its file system space (cramped to fit) in the right box. You can then drag files into this space to populate the GoodReader iPad file system. You can NOT drag folders. You can NOT create folders, or rename them, or pretty much anything else. As you drag files into this space, they are in fact copied over to the iPad, but the feedback that this is happening is pretty damn minimal.
It is not clear to me if the usage model here is that this box represents a view of an independent file system, or if it imposes some sort of implicit synchronization. I found that all the files I dragged into the box subsequently became marked as in use, and I could not delete them from the trash. My first thought was “huh, some sort of forced synchronization?”. But when I deleted the files within GoodReader on the iPad and reconnected, the files are still undeletable on the Mac — so maybe all I am seeing is a bug.
Regardless, let’s summarize:
We have here a usage model where clearly the value to the user consists entirely of transferring files from a Mac into the iPad. It makes no sense to argue that the common case, the one to support, involves accessing the web, or buying eBooks from an eBook store or whatever.
Various hacks (webdav and Apple’s sad pathetic iTunes 9.1 monstrosity) allow us to move files to one particular PDF reader app on iPad.
BUT those files are now in the GoodReader silo. I downloaded two other PDF reader apps to my iPad, to see which I preferred; but they cannot see the PDFs I placed in the GoodReader silo. Presumably I have to figure out what hacks they implemented to get files into them.
I am interested in more than just having an alphabetical list of 300 PDFs on my iPad; I want ways to categorize and sort the material. What GoodReader provide is absolute bare bones in this regard. (To be fair, the way to view this is that goodiware did remarkable work, having little time and only the iPad simulator available, no hardware; and with zero UI support from the OS, so please don’t feel I am criticizing them.) What you have feels like something from the dark ages of X Windows. You select a file, then click a button to “copy” it, then click another button to create a folder, then select that folder, then finally you hit a “paste/move” button to move the file into that folder. goodiware, either because they believe this is not their core competency, or for lack of time, have decided that what they will offer you for organizing files is simply the file system, so you organize via a bunch of nested folders, and you dump each PDF into what you believe to be the best folder. So we’re back to organizing data via the Finder — but with a vastly crappier, vastly more limited UI than the Finder — no spatial model, no colorizing files, no quicklooks, no icons, not even any freaking aliases.
Finally no synchronization model back to the Mac.
OK, I’m complaining about software on what, day 4 after the release. In time goodiware will undoubtedly do what they can to polish off the rough edges. The more interesting question is what Apple will do.
One can understand that Apple’s ideal solution might be a variant of the iTunes solution: I buy PDFOrganizer.mac, this provides me with a way to organize and tag my PDFs on the mac as richly as I like; and separately I buy PDFOrganizer.iPad which synchronizes with the mac version every time the iPad connects to the Mac.
Let’s consider the implications of this solution.
Firstly it requires Apple to make it not just possible but easy for a third party app somehow to hook into the synchronization that occurs when iPad connects to a Mac/PC. I am not aware that Apple currently supports this.
Next it makes writing iPad software a much larger undertaking. Now, rather than just writing an iPad app, you are tasked with writing a Mac app, and a Windows app. It also means all sorts of unfortunate tying together. I might really like PDFOrganizer.mac’s categorization abilities, but I hate the way PDFOrganizer.iPad forces me to read PDFs on the iPad — I want to read them as one continuous scroll, and it presents them as separate pages. Unfortunately PDFReaderPro.iPad only has a matching Windows app, no mac app…
Finally it doesn’t help with the cross-app silo problem.
So what’s the solution? I do not know. I can see the good points in (what we can understand of) Apple’s vision. I really do want more than just a PDF reader on my iPad; I want a PDF organizer on my Mac that automatically syncs with my iPad. But there’s an awfully large gap between where we are now and there, and right now what we have is pretty awful.
Certainly, if this is Apple’s vision, they could do something about letting us know. What is the grand plan? And they could provide a variety of OS/UI calls to make writing such apps easier on both the Mac and iPad side. (What about Windows? hmm)
However the big question remains of how persistent data (ie files) is shared across apps. Not just technically, one can imagine ways of handling that, but at the UI level. When we are in apps, do we see a nice, customized view of the world that consists of authors and categories and suchlike, but when we want to utilize data in another silo we see the file system stripped of all the app-specific metadata? Do we have system level content searches through all these files, and how are those results presented? (As far as I can tell, the existing iPad/iPhone search looks through files owned by the Apple apps, and provides search results using the metaphors of these apps, but does not search through generic “user” files.)
Obviously reimagining files has been an Apple obsession since the resource forks and filetype/creator codes of Mac 1.0, through the soups of Newton to the complete invisibility of files on IPod and iPhone. But, let us not forget, Jobs also not only accepted that trying to fight the rest of the world was hopeless when OS X switched to suffixes rather than file types, but as time has gone by OS X has done more than was strictly necessary for compatibility to throw off the Mac file heritage and move to the UNIX/Windows way.
So what’s going on here? Simply a poorly thought out launch, that will be corrected in iPad OS 4.1 with user visible files? Or a belief that this time round, they really can do it, they really can make user visible files obsolete, with the new and exciting UI metaphors of iPad OS 4.1? Or are we stuck with an Apple that is simply not interested in the types of usage scenarios I’m suggesting, only in that we buy eBooks from the iBookstore, so goodiware et al have to struggle along with whatever hacks they can figure out how to implement?
(BTW, to forestall the inevitable suggestions, yes I am aware of Papers on the Mac and iPad. The current Papers on the Mac is highly problematic given what I want to do — it is designed through and through to organize and categorize academic PDFs, not generic PDFs, not none-PDF material. It is not a useful solution for attempting to organize large collections of written material that does not match their model. Hopefully this will change in time, but that’s what we have today.)