I say South Koreans, but of course North Koreans might be equally guilty if the strange (alleged) Bond-loving opera-writing golfing prodigy great leader would stop ravaging their country and allow them to move into the 20th or 21st centuries. But I digress.
South Korea is home to the world's first or second most advanced mobile infrastructure, depending on how you want to measure it, sitting comfortably ahead of everyone but Japan. After a
trade dispute with the US, the South Korean people were saved from BREW and instead given their own government-mandated hybrid C/Java "standard" called Wipi - a "standard" which is only published in South Korean and requires you to be a South Korean citizen to download, as far as I can tell, which is I guess in keeping with the government protection traditionally ladled out by South Korea for other industries.
Whilst advanced, the South Korean market is also pretty small (under 50m people) so we should really look to the global handset shipment figures, where the Top 5 handset manufacturers include two South Korean companies, in stark contrast to that other advanced market Japan where a protected domestic market for Japanese manufacturers led to a complete lack of competitiveness abroad.
Top 5 Developer ResourcesA comparison of the developer sites for the Top 5 manufacturers:
- Nokia - Forum Nokia, containing absolutely everything you might possibly want to know
- Detailed spec database with everything you need to know about every handset, hilighting their very public and clear platform strategy;
- Docs on every subject, with fully customisable RSS feeds;
- The best emulators in the top 5 (and some of the only true emulators, most being simulators);
- Active detailed forums - OK no-one from Nokia will ever admit to a bug on one of their devices, but you can normally find someone who can answer your questions;
- I could go on. The gold standard by which everyone else fails.
- Motorola - they have MotoCoder dev site, with some things you might want to know
- Spec PDF docs on some of the handsets, updated slowly, and ignoring quite a few but you can usually work out a handset's platform and infer a lot from that;
- Some docs, though not that many and notably absent for some of the JSRs they have led;
- Passable emulators, pretty accurate with a few annoying bugs like images take 4 bytes per pixel not 2 (but the heap size is the same);
- No forums, but you can ask a question and someone from Moto will (probably) answer it.
- Samsung - yes, well. They do have a site and at least now it works beyond IE.
- New spec database, hilighting the complete lack of standard platforms, with specs always in flux and many handsets never appearing;
- All the old docs seem to have been deleted;
- I've never managed to get the emulators to work for me, but I might just be unlucky;
- They deleted the contents of the old forums, which contained many valuable bug fixes, and replaced them with new empty forums that suck.
- Sony-Ericsson - nearly as good as Nokia
- Full specs for all handsets making clear their standard platform strategy, in a not-quite-so-convenient browsing format;
- Almost as many docs, with a slightly less flexible RSS feed format;
- Emulators are a bit of a joke, being simple WTK reskins, but you can do on-device debugging etc which is in many ways more valuable;
- Active detailed forums.
- LG.
The striking thing you'll notice here is that Nokia, Moto and SE all have active developer programmes and platform strategies which are either clear, or easy to guage from publically available information. With the South Korean manufacturers you have two choices - bad or nothing.
LGYou may think I forgot to add anything for LG in the list above, but in fact the omission is theirs. They have no developer support. I did once track down the (Korean) Javadoc for a very old proprietary sound API, which Babelfish kindly translated into pseudo-English for me, but I never got it to work; that's about all I've ever seen.
Despite lots of efforts with the
Chocolate series and more recently the Shine, LG still fundamentally make lots of cheap rubbish low-end flip phones, many of which are for the CDMA market - anything in their non-Korean catalogue that is not low-end appears to be for show, selling in very low volumes. Chocolate is the big exception, but it is a deeply flawed device - anyone who has used one will know quite how infuriating it is to watch those sexy soft keys and direction buttons start pressing themselves, sometimes for several minutes as they traverse randomly round menus or totally screw up whichever fuction you were trying to use. I counted a few hundred button presses in 5 minutes just this morning, before I turned the phone off. I sense a YouTube video - watch this space.
This reliance on the low-end seems to have led to their developer strategy - low-end phones struggle with Java, so they fell for the
JBed sales pitch and included that trully terrible JVM-replacement on everything but the high(ish)-end U8xxx series. This does some strange precompilation steps to "speed up" your code, which in practice just fail on some classes for no reason. The MIDP2 version is better than the MIDP1, but I have had code which works fine suddenly refuse to precompile and install because I have changed a few lines, and magically start working again later. It also has the flakiest PNG loading on the planet. So no wonder they don't have developer support - they clearly would rather developers didn't develop for the devices and they certainly couldn't afford to handle the huge volumes of support requests and complaints they would get if they tried.
SamsungSamsung aspire to compete at the high-end. Not long ago they were getting very excited about
how they would overtake Motorola and the future was theirs - shortly before the world stopped liking their zillion
D500 rip offs and their market share dropped sharply back off, so now they are
defending themselves against the solid advance of Sony-Ericsson.
Many of their handsets are on the cutting edge,
shipping HSDPA before anyone else and beating Motorola on both the
thinness and ease of use fronts (OK, the latter was hardly a challenge). Their Java efforts have always been decidedly middling though - many many bugs, documented on the old forums before they were deleted, and very few APIs beyond the basic MIDP and CLDC. Their LCDUI implementations are usually straight out of the WTK, offering no native UI functions and feeling completely alien to the phones.
The true failing of Samsung, however, has been their lack of platform standardisation. By all accounts they have a large number of research groups basically designing handsets independently - this affects their lineup in a number of ways:
- The (almost) random model numbering system is highly confusing, and tells you nothing at all except the target region with the last digit;
- There are a huge number of outwardly identical phones with similar specs but based on different platforms, confusing consumers and probably leading to their recent sales slump;
- You just can't make any assumptions about them from a developer's perspective - just because your game runs on one MIDP2 176x220 Samsung handset does not mean it will run on any other.
Point 3 is slightly unfair - the developer site used to provide Excel spreadsheets grouping the handsets into devices based on a common platform, suggesting that if your game worked on one in the group it would work on them all. For example, the D500 was in Group 12A and the E800 in Group 4. They categorised maybe two thirds of their European range this way, leaving you to guess the rest.
Then, after at least 6 months of waiting, they launched their new web site. This had a number of amazing innovations:
- It worked outside IE. The old one could have worked outside IE too, but they chose to implement logins in such a stupid way it didn't;
- It had a new forum, which was harder to use and now had nothing on it;
- It had a lot fewer documents;
- It had a funky new device database.
If the device database had been good, everything else would have been forgiven. It almost is, but is plagues by two things: poor usability and flaky data.
On a usability front, there are a huge number of tiny things that add together to make a really frustrating experience:
- There is no indication of what has been added recently, so you have to manually check a list of 130 handsets in case one has been edited or added - an RSS feed would be ideal, a 'What's New' list would also be good;
- Each device's page shows a massive table of information, but the most important piece - which platform the device belongs to - can only be seen from the index screen;
- You can only see 5 devices at once on the index screen - no way to change to show 10/20/100/all - and you have stupid scrolling buttons to page between them. This would be fine if you could use the drop-down of model numbers, but you have to see the entry on the index page to find out the group so you can't;
- Breadcrumbs are shown on the screen, but aren't clickable.
- etc.
Thye flakiness is harder to pin down, but:
- All the old group numbers have been thrown out and the compatibility lists have changed:
- A handset now belongs to a Group which is defined as the first handset they released with the same spec such that all handsets in that group should be able to run the same content;
- ie. handsets in a group should share screen size, supported APIs, JVM, memory constraints, underlying hardware etc.
- The new platforms appear to change over time, with platforms splitting and devices jumping between them;
- Some data is plain wrong
- eg. the E200 is stated to have a 220x220 screen, but it has a 176x220 screen;
- eg. the site currently claims that the E830 and E200
are part of the E250 group, when they are clearly mid-range devices with a good Java spec and the E250 is a low-end device.
- You get the impression with some groups that the people who define them are being lazy, and creating a new group for every handset
- You get lots of one or two handset groups with basically the same spec from the same teams...
What we should have is a manufacturer clearly stating the widest possible groups of handsets that are internally, from a Java perspective, the same and can reliably run the same builds consistently. What we have instead is a load of changing spec data suggesting handsets should be compatible, but it's so unsure of itself that they move around and anyway as some of the basic specs are wrong, how much do you trust it anyway?
Unless you have a lot of money, you sadly have no choice but to trust it and react when your customers complain.
My constant impression is that the entire dev site is outsourced to basically one guy, SunHo, who valiantly tries to answer everything, help out with bug requests and make sense of platform compatibility with minimal support from Samsungs various departments. If that truly is the case then he does very well considering - but shame on Samsung as a Top 3 vendor for not doing things properly.
Why? Why? WHY?I wish I could provide some insightful analysis as to why it is only the South Korean members of the Top 5 who behave this way, but presented above are my best guesses. All we can do as developers is plead for more support, and I suspect all they will continue to do as corporate monoliths is to ignore us until the market shows them that 3rd party games and applications are a competitive advantage. I suspect that most people in the mobile space don't dare ask whether the market will ever reach that point, but we certainly aren't there yet.