Google Android


Staff member
I'm honestly not that excited about Android - I know the gadget blogs / newspapers / etc are all talking it up lately but I don't know if it'll catch on with consumers, at least not for a couple of releases. If it did we could certainly consider a Pleco port, but since it would require rewriting Pleco in Java it would probably take the form of a stripped-down, no-flashcards "Pleco Lite" which we could then also release with a few minor tweaks on BlackBerry (the other big Java mobile platform). Unless someone else comes out with a successful mobile platform that allows native C development it's unlikely there'll be a "full" version of Pleco on anything other than Palm/WM/iPhone/desktops anytime soon.
Thanks for your reply Mike. Yeah, sure it would be a big risk to plough development into something which might not take off in sufficient numbers. Especially since PlecoDict is a very specialised product. Having said that, I get the impression a lot of PlecoDict users buy devices for the sole purpose of running PD. Currently, such new users only have one realistic/stable choice - WM devices. These tend to be quite pricey and have poor battery life.

As a java developer, I really hope Android takes off because I have a strong aversion to developing anything for a closed platform, such as the iPhone/ipod Touch. Should have a much better battery life than WM devices too (because linux based), I think.


Staff member
The lack of standardization is a big worry, though - Google may be doing their best to ensure the software environment will stay reasonably consistent across all phones, but you're still going to have a mix of different processors, screen sizes, touchscreen versus keyboard-only, etc, and without even the clear differentiation you get in say Windows Mobile ("Professional" versus "Standard") - half of our time on Pleco for Android development would go simply to working out the kinks in each of these separate little platform variants.

I'd love to see Android become a serious iPhone competitor software-wise simply because it might induce Apple to open up iPhone more - it's been widely suggested that Apple's early announcement of native development support was a response to Nokia's S60 Touch (not that that's amounted to much so far), if the people who are ticked off that Apple won't distribute their applications start developing for Android instead Apple could end up having to loosen things up a bit (say by removing the #-of-copies limit on Ad Hoc distribution, or by allowing developers to distribute automatically-signed apps with a more aggressive certificate revocation list to make sure they could quickly eliminate defective / harmful ones) and that would be good for everyone.


Staff member
Well the reasons for needing a lot of different handsets on Palm are different from the reasons they'd be needed on Android.

On Palm, thanks to the lack of any significant separation between your code and the hardware it's running on (no virtual memory system, etc), along with the complexity of running ARM code on Palm and the various implementations of the NVFS flash-memory filesystem, every system tends to have a few particular quirks that translate into new bugs - it's ironic, actually, because in some other important areas (like screen resolution and number/type of memory card slots) Palm has done a considerably better job than Microsoft of keeping things consistent between models.

There's also the problem that Palm still doesn't have a software simulator that actually simulates a real Palm OS device; their simulators all run 68k code fine, but don't support ARM (or a number of other important hardware features, like sampled audio), whereas Windows Mobile Device Emulator gives you an almost-perfect simulation of an actual WM device (and lets you bring up this simulation with almost any combination of OS version / screen size / language localization / phone capability). So there are an awful lot of things on Palm that just have to be tested on the actual hardware, and can't be tested at all on a computer.

On Android if they do a good job with releasing simulators you might not even need to buy a bunch of different phones, but because the phone designs can differ so greatly (in terms of built-in code libraries, hardware capabilities, screen sizes, etc) you'd have to redesign the software to work with a lot of different interfaces - we could limit our software to, say, only running on phones with touchscreens, as we already do on WM, but there'd still be a lot more variables to deal with and hence a lot more work involved to get it working correctly on a plurality of the Android phones on the market.
Point 4 (of the thumbs down) also talks about what you mention: ... -not-to-be

It says:

4. Android is designed to run on a ton of different of hardware—phones with and without touchscreens, with and without QWERTY keyboards, phones with amazing specs, crappy phones, and everything in between. While this is a strong point as mentioned above, it could also be a point of suckiness. That means there won't be a consistent Android experience, and it'll depend heavily on the device you're using. Devs told us that you'll likely see different versions of their apps, so that on weakass phones, you'll have more diluted apps, which might be an issue for people picking up a cheap Android phone expecting to do everything a more expensive one will.


Staff member
Well given what most of their mobile phone interfaces look like now I'm not surprised...

The impression I'm getting about Android from the various mobile developer mailing lists I'm on is that nobody (at least none of the old guard of Palm / WM / etc programmers) is investing much into developing for it yet, in no small part due to a lack of interest in it among their customers; we got about a dozen e-mails about an iPhone version of Pleco within an hour of Apple announcing the iPhone, but I don't believe we've gotten a single one about Android yet.

There's a rumor that Android will eventually support native C development, though (seems like almost a requirement if they want to compete with iPhone on software, especially games) and if they do that I imagine that will get a lot of people (including us) interested - many of the most popular mobile software products have engines written in platform-neutral C and would be easy to port to Android if they added native development support.

Jim in TJ

For what it's worth, please count this post as an inquiry on an Android version of Pleco. I agree with your concerns and wait-and-see approach. I just think that when my Palm T3 dies, there might be no new Palm OS devices, WM is kinda clunky, and the closed, expensive (albeit trendy) universe of the iPhone scares me off a little. Anyway, if the Android takes off, I'll be interested. Didn't know that it would be hard to develop for. I'd hoped and assumed it would be easy to develop for.
Please also count this topic as a vote from me :)

As of yesterday, the source code for Android is available:

Judging by the large number of applications that have already been written for Android even before the first phone was released (yesterday I think), I'm not so convinced its a hard platform to develop for...

Personally I'm getting more and more excited about it. From all the reviews of the first phone - HTC's T-Mobile G1, it sounds like Android is great but the hardware is disappointing: ... umnArea1.1

But how long before they get Android running on something like HTC's Touch HD: which looks to have a perfect screen for running Pleco: ... phone.aspx

Maybe its not long before users can switch the OS on their phones in much the same way they do now for their PCs.


Staff member
Open-sourcing Android actually makes the developer case for it even worse, since it means the platform's going to get even more fragmented - Verizon or somebody will get it in mind to stick one of their godawful let's-put-a-V-in-front-of-everything user interfaces onto Android, strip out half of its libraries / features in the process (either for "security reasons" or because they duplicate something they want to charge people extra for), and still call it an "Android" phone, and people will buy it, discover it can't run Pleco and send me angry e-mails.

There are three basic reasons why it's unlikely you'll see Pleco on Android anytime soon:

Technical - as I've already said, Android currently requires all software to be written in Java, while Pleco is written in C. C is the closest thing the programming world has to a lingua franca - it's a programming language that until the last few years you could pretty much expect every single consumer platform to support; Windows, Mac OS (Classic and X), Linux, Palm, Windows Mobile, iPhone, Symbian, even most recent video game consoles. The user interface still has to be customized for each platform, as do some other OS-dependent areas like file access and audio playback, but you can write a tricky piece of C code to, say, query a flashcard database, and have it run largely unchanged on almost any platform that lets you write in C.

Android, however, does not allow you to write software in C, but only in Java. Unlike RIM/BlackBerry (which also is Java-only, though they used to support C) Google's at least made a decent effort to work around some of Java's limitations, providing for example a version of SQLite that's written in nice fast native code (so you're still accessing it from your written-in-Java program but it at least performs like it would if it were written in C), but nonetheless the use of Java means we'd have to pretty much rewrite all of Pleco from scratch - not just the user interface / platform-specific parts, but everything, even the old and well-tested areas like the character search system and the text compression engine. So it would take several times as much work to port Pleco to Android as it would to port it to iPhone, Symbian, or another C-friendly platform. There's been some talk about Android eventually supporting C development too, but even if they do, a lot of cell carriers will likely disable support for it in their particular Android phones (again for security / anti-competitive reasons), so it seems unlikely that Android C development will ever be commercially viable.

So it's not that Android's difficult to program for, it's that it's difficult for us to program for - someone writing a new Chinese dictionary program from scratch on Android would likely have a much easier time, since they could design everything in an Android-specific way and only add features that it made sense to add on Android, but getting all (or even most) of Pleco ported over to Android would be a tremendous undertaking.

Business - I've said here a few times that porting Pleco from Palm OS to Windows Mobile didn't do much for our sales, and I stand by that - really all the Windows Mobile version has done is gradually take away more and more sales from Palm OS, but our sales haven't grown any faster with us supporting Windows Mobile than they did when we weren't supporting it, and our development costs are obviously a lot higher supporting two platforms instead of one. Pleco isn't a game or tip calculator or some other little application people buy because it happens to run on their phone; if you're enthusiastic enough about a piece of mobile software to shell out $100 for it, it's a pretty small leap from there to also factor it in when deciding which phone to buy.

So we have to look at supporting a new platform more like adding a new feature than opening up a new market for our products - it's something that can potentially win over a decent number of new customers (as we expect the audio / stroke order / new dictionaries / etc to do with 2.0), but going from two platforms to three is not going to mean a 50% jump in sales, and the extra sales from going from Palm/WM/iPhone to Palm/WM/iPhone/Android would be unlikely to even cover the cost of an Android port.

Even with iPhone I don't expect our overall sales to grow that much - people unfamiliar with Pleco flipping through the iTunes store for Chinese dictionary software will notice the $100 price tag, chuckle, and buy the $10 CEDICT-based product right below it instead - but it's popular enough and easy enough to develop for that it's likely to turn at least a small profit even if a lot of the sales are to people who would otherwise have bought the Palm/WM version.

The hardware fragmentation makes it even harder to make money with an Android port - with Windows Mobile and Palm OS you're guaranteed every device will fall within a certain narrow range of form factors / screen sizes / processor speeds / included libraries / etc, and the range with iPhone is narrower still (in fact at the moment it's nonexistent, every iPhone / iPod Touch ever made has the same size screen / same speed processor / same OS features), but with Android there's no such guarantee; many Android phones (particularly low-end / touchscreen-less ones) would likely be unable to run Pleco in any form, and many others likely wouldn't run it very well. And given Android's "openness" is one of the areas Google's touting most aggressively, it's likely you'll see lots and lots of phone designs rather than a few big popular ones - this means more phones for us to support / test on and fewer sales on each one, not to mention the aforementioned angry-people-who-buy-an-Android-phone-but-can't-run-Pleco-on-it.

Personal - regular PlecoForums readers know that running Pleco is something of a labor of love for me, and porting Pleco to another platform (something with which I would have to be intimately involved, as we're way too small for me to just hand it off to a trusted subordinate and not have to worry about it until it's done) really doesn't offer any of the satisfaction that adding new features / refinements does; you're not making a better Chinese dictionary, you spend a year pulling your hair out working around the hundreds of bugs / confusing APIs / other problems on this new platform and at the end of the day all you've got is the exact same thing you had a year ago but running on a slightly different gadget than it was before. So unless there's an overwhelming business case for supporting a new platform, my personal inclination is always going to be to keep Pleco on as few platforms as possible.

Aside from the desktop version (which really is a whole new product in a design / features / sales sense, but happens to share a lot of the licensing / coding work from the handheld version, making it an even more appealing project) my hope is that after iPhone we can pretty much just sit tight with our platform situation for a while; put Pleco 3.0 out on WM/iPhone/Windows/OSX and not support anything else absent a gigantic shift in the market.
Hi Mike - thanks very much for your wonderfully thorough/informative reply. I see that there are more than a few reasons not to begin work on an Android port/rewrite!!!

I have a couple of points though...

1. If Android becomes the dominant platform - then generally users would not be buying an Android device because it runs Pleco, but instead they are more likely to buy Pleco because it runs on Android. I think this is very different to what you have now. Many of your users have bought devices solely to run Pleco or at least it has been a major factor in their choice of new device. I'd be interested in the breakdown actually:

  • % Users who bought Pleco to run on a device they already had
  • % Users who bought a device just for Pleco (maybe they have a separate device for phone calls etc)
  • % Users who bought a new device heavily influenced by Pleco's requirements - i.e. they would have bought something very different had they not bought Pleco.

Personally, I fall into the last category. I'd imagine that not so many people fall into the first category simply because not many people own Palm, WM devices.

Have you looked much into selling a Pleco Device???

2. Technical - Isn't Java the lingua franca these days? Querying a database - SQL? I think the iPhone also supports Java. But point taken - its a huge rewrite and combine that with the risk of Android flopping, its probably not worth it.

As a software developer myself, I tend to develop in the higher-level languages like Java and, more recently, actionscript/flex (which I hate!). Most of my code can pretty much run on any device with little modification - because most devices run java and flash (ok, maybe many mobile devices don't run flash but they probably will do later). As a consumer, I try to buy devices that don't lock me in too much - so no iPhone for me.

But, sure, if its relatively easy to port to the iPhone then why not!

BTW - Is there anything you could do using Flash/Flex/AIR???

3. Business - Its quite reasonable to assume that, had you not ported to WM, your sales would have gone down. Certainly eventually. As less and less people use Palm , your business would be moving more towards a device-selling model (like an electronic dictionary) wouldn't it?

Hardware Fragmentation - I'd be interested to see how the Android Market allows you to filter applications based on requirements for things like touch screen, screen sizes, keyboard etc. I saw that Android Market takes a 30% cut, although none of this goes to Google, instead to carriers and admin/billing fees. I wonder what stops people finding an app there and then, instead of buying there, going to the software company's website to get the app for a 30% discount???

Generally, I think the whole hardware thing is more of an issue for customers who buy a device because of Pleco. If they already have the device (or were going to buy it anyway) they can just try out the demo and then buy if it works and they think its worth it.

4. Personal - I know what you mean. Its a bit like refactoring. Sometimes I've spent weeks refactoring something and you just finish up with the same thing (feature wise) and that can often lead to question whether it was worth it. Personally, when I have code that I know needs refactoring then I feel much more comfortable with that code after refactoring, knowing that I can run happily with it for a good period of time to come. Otherwise I feel like I'm going further and further towards a dead end when I have to back out and refactor anyway. Maybe thats where the analogy breaks down - because I don't think for one moment that iPhone or WM are dead ends (for the foreseeable future).

Ok, that's enough from me. Don't feel you have to answer any of this - its just my drivel!

Here is something I found interesting: ... 05500.html

And here is another blogger's take on the above: ... -is-dying/


How many software developers do we have on here? I'm one - develop all day in Java (and related stuff like XML or the GWT). I wouldn't call Java the lingua-franca. I'd agree with Mike that C is probably still it, as in areas where Java is commonly used (back-end web development) there's competition from .Net and all the various Microsoft technologies.

You also don't see many desktop apps written in Java (we have one at work, and that, we hope, will one day be a web app). The majority I use are C++-based, apart from Eclipse and whatever web backend I'm using (Geronimo at the moment).

Just my experience though.

As for Android, I'll go with a 'wait and see attitude'. Maybe it will be awesome, maybe it'll turn out to be more like most of the operating systems we have today - effectively proprietary. Making it open is cool, but if you make it too open then you lose consistency and that makes it hard to develop for.


Staff member
westmeadboy - Android could certainly become a major player, but I don't think any single platform is going to dominate the market. And heck, if you go by the numbers Symbian dominates the market right now (57% worldwide smartphone OS market share) but we've done OK without a Symbian version of Pleco. We've looked into developing a standalone Pleco device, but in order to get a decent profit margin on it we'd have to be putting up a big up-front investment, so it's something we can only consider once we're a little bigger than we are now.

Java does not work on iPhone, and Apple hasn't suggested that they ever plan to add support for it - Flash might one day but Java probably not. It's pretty much universal on desktops, but on mobile OSes that aren't specifically designed for it it tends to be slow / awkward and have a decidedly non-standard user interface; there's no way we could implement a useful version of Pleco in Java on Palm or WM, even on Microsoft's own .NET the performance hit / massive memory requirements would make Pleco a lot clunkier than it is in native code. Flash/Flex/AIR would only come into play for the eventual online version of Pleco, though they're certainly a possibility for that.

It's true that our sales would have eventually decreased if we hadn't ported to WM, but we could easily have, say, released 1.0 on Palm only and then started developing 2.0 as a brand new product for WM only, rather than trying to support two platforms at once. (the big money-loser was porting 1.0 to WM, since we essentially had to throw away all of that code and start from scratch with 2.0 and its shared Palm/WM code base) We can't support only platforms that are dead / dying / nearly-impossible-to-buy-devices-for-in-some-markets, but as long as it's possible to get a cool / technologically-current phone that can run our software (and thanks to the tireless efforts of HTC et al, it is very much possible on WM) we don't need to necessarily support all of those phones.

Re Cringely's column, I think he's ignoring one very important factor here. The gap between an Atom-based netbook like an Eee PC and, say, a Touch Pro is pretty minimal, both in features and processing power - the most recent attempts to bridge that gap (Foleo, Redfly, HTC Advantage, OQO, etc) have been unsuccessful but that doesn't mean it's not where things are ultimately going to end up. So I'd say both Windows Mobile and iPhone OS are ultimately dead ends, because in a few years MS and Apple are going to have merged the features / interface customizations from those systems back into the mainline Windows / OS X distributions. If you read recent statements from Intel it's pretty clear they're trying to take down ARM with Atom; they haven't quite gotten there yet in terms of power consumption but they're not far away. And the programming interfaces are already almost identical on WM/Windows and iPhone/OSX, you can even compile iPhone applications for X86 and link them to regular desktop OS X code libraries (running in the X86-based iPhone Simulator - Apple already has iPhone OS running on X86 in that). So it's illogical to keep using two different processor platforms when you can switch everything over to just the one. Android in this universe would end up as essentially just a mobile-friendly Linux UI layer, the presence of which would not preclude you from running any other Linux applications you felt like.


I for one bought my devices, all smart phones, to run Pleco and would not have bought anything that did not. I hate carrying things so the fewer the better, thus all smart phones, so if Mike did develop an electronic Pleco dictionary I would not buy it. I would guess that most people with the choice of buying a smartphone or PDA that can run Pleco and do many other things versus an electronic dictionary that only runs Pleco would not choose the electronic dictionary unless it was very cheap, difficult to do without huge volumes.


I understand, Mike, and if I were you, I probably would do it either. But I still want Pleco for iPhone so bad. There are about 3 dictionaries out there right now and none of the even come close to Pleco.


I'm a long time user of Pleco on a Palm -- 650 for several years and a 680 for the last several years. I was torn between upgrading to a newer Palm or switching to an Android device, I went with an unlocked G1 Android.

I'll miss Pleco, been very helpful but couldn't justify sticking with a Palm -- which was always very frustrating -- just because of Pleco's software.