So my Treo 650 has been crashing often for the past couple of weeks. Resetting, really. At first, I thought it was ChatterEmail, a (pretty cool) mail package for the Treo which does push-style mail notification without sucking down your batteries (too badly). However, I deleted it, and I still get the same problem. According to my research, that means that I probably have corrupted the filesystem on it. Probably from crashing when I was using the unstable version of Chatter, but who knows.
It got me to thinking, though of the sad and sorry state of PalmOS. Here it is, 2005, nearing 2006, and they still cannot get a new OS out the door which has ‘modern’ features. They tried with Cobalt, then they tried with the Be kernel, and now they’re trying with Palm-on-Linux. We’ll have to see.
But it got me to thinking – there are simulators for Cobalt – is it really that bad? I can theoretically test how well it works, right? So I decided to. I downloaded the Cobalt (now v6.1) simulator, and started fiddling.
Just about every application I threw at it had some kind of problem. The built-in software was great – the PIM apps and all worked fine. And the OS never crashed on me, I don’t think. But just about every app I tried to run blew up. With a few exceptions, like BrainForest (surprising, considering how old that is). Each other one would throw a ‘unsupported resolution’ error, ‘illegal instruction’, or other crap.
So now we know why it is that we don’t see Cobalt devices in the wild. Maybe they work fine, but the existing base of apps won’t work on it.
It makes you think – of course, hindsight being 20/20 – that the mistake was made in October of 2002, when they released the first ARM Palm – the Tungsten T. They released that with Palm OS 5, which was just a whole bunch of compatibility/emulation libraries. Thus ensuring that all _new_ applications would also be built the exact same way the old ones were. No new API. Just the same old thing.
And, we should note here, that it worked pretty much Fine. I don’t remember lots of complaints about the Tungsten and its compatibility problems – I don’t doubt it may have had some – but I didn’t hear lots of complaints. So what Palm _should_ have done – again, with infinite resources and time and so on, and hindsight being 20/20 – is they should’ve kept what they made as the ‘compatibility’ layer, and introduced a whole new set of API’s for multitasking. Regular standard-issue memory-protected OS there, with some deal that maybe runs the classic Palm apps in Privileged mode, or something – or do some kind of trap-based emulation – but something, something to let all the old stuff run, and have a new API out there for new development. This method used within Cobalt obviously will just not hack it.
Had this have happened in October of 2002, I have a feeling Palm would be on top of the world right now. And I would be happy. And not trying to figure out how to press the up, power, and HotSync buttons at the same time as pushing the reset pin on the back of my Treo. Which is apparently how you do a zero-out reset. Which sucks.
Had I been there – I would’ve said – hey, we got this here new OS we’re thinking about doing, but we’re making a bet about what percentage of OS calls people use or don’t use – why don’t we test that? And I would spend 4 months or 6 months developing tools to run across software and see what API calls they make, or make an intern just download every .prc file he can find and throw it on my palm simulator with trapping and accounting, and then just analyze what you come up with. You do that, and you’d see, there are too many times that the programmers do Naughty Things. So instead of trying to release what they have – which is a neat integrated API that doesn’t quite work, they could do what would seem pretty neat – develop a whole new API ‘inspired by’ or ‘influenced by’ the old one, put that on a multitasking kernel, and run the rest through a full fledged emulator (emulating hardware, perhaps, as well). Then they’d be set.
This is why I like being a CTO – this is the type of decision that is completely technical, and can basically make or break a company. Though Palm has some tricks up their sleeve, still. But if I’m thinking about getting a Windows Mobile Treo (and I am), why shouldn’t I look at the nice shiny new PPC-6700 or whatever the hell it’s called (ooh, lookie that, I memorized the model number – scary)?
I’ll have to play with one and see. Since I’m going to have to throw out and replace my applications anyways, Palm Treo or SomeOthercompany Thingee doesn’t matter to me – the process will stay the same.