Tuesday, April 03, 2007

Why Do South Koreans Hate Developers?

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 Resources
A comparison of the developer sites for the Top 5 manufacturers:

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.

You 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.

Samsung 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:
  1. The (almost) random model numbering system is highly confusing, and tells you nothing at all except the target region with the last digit;
  2. 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;
  3. 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:
  1. 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;
  2. It had a new forum, which was harder to use and now had nothing on it;
  3. It had a lot fewer documents;
  4. 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.


Blogger Unknown said...


I'm not a Java developper, but knowing a little this industry, what I can say is that, not so surprinsingly, Samsung and LG have a very Eastern approach of the market: Each device is an opportunity, not related to the preceding. It is well known that many times Samsung uses 2 different engineering teams to achieve the same device, doing the same work but a different way to foster competition and emulation to achieve the best time to market (they a have more than 150 new devices last year!!): SO really it is NOT in their mentality to create resuable and well defined software platforms/OS: they redo a lot each time, and I think it is why there is no consistency accross their devices (or even in the software of a single device :-)).

On an other subject you seems to really not like JBed: could you explain me why, and what is for you the best JVM provider of the market? (in term of performance, RAM/FLASH overhead) It could help :-)

10:05 pm

Anonymous Anonymous said...

Hi Thomas,

I think you're definitely right on their handset design approach and how that relates to their software platforms.

On the Jbed front - I'll do another post to give some more details as it may be generally useful to people :)
But in terms of reliability, I find that the S40 implementation used to be the best and now SE MIDP2 implementation has possibly slipped slightly ahead, but both are solid, generally reliable and fast with the widest API support.

9:49 am

Blogger Jacob W Abrams said...

Having worked on J2ME for over 3 years now and traveling to Korea myself I must agree with your sentiments on LG and Samsung. I personally spent time browsing "LG Telecom JAVA Station" despite my complete lack of Korean language knowledge trying to find emulators, libraries and other information.

At one point I was able to reach a web page that literally said "LG does not support 3rd party development." It was a real slap in the face to all the engineers out that who have to support these devices.

I have had the same problems with JBed on low-end LG handsets and contacting Esmertec was of no use.

Samsung is definitely guilty of having absolutely no platform at all. Every device is can of worms, my theory is that they just randomly change lines of code in the JVM before installing it on the device. I can come up with no better explanation as to why so many API calls are broken in so many different ways.

Finally let me point out one thing that is missing from this whole conversation: SUN MICROSYSTEMS.

Sun Microsystems gets paid for every handset with a big fat JAVA logo on it. They are supposed to test each device before letting out into the market yet the continue to allow handsets of such low quality into the Market.

Qualcomm on the other hand takes quality much more seriously, they have an interface where developers working on precommercial handsets can submit trouble tickets and actually get the issues fixed before a device is released.

Shame on SUN microsystems, the JAVA logo on a handset is nothing more than receipt for payment, it is otherwise meaningless.

7:30 pm

Anonymous Anonymous said...

Some complementary complaints :)


* A lot of missing info, like color depth, maximum JAR size, available heap. I guess the color depth might not matter to everyone, but it's still pretty basic.

* There are cases where the info is wrong, like the 6230 which is 12-bit (at least thru Java) and not 16 as specified.

* Many missing models.

* I find the navigation lacking. A dropdown list cannot be opened in a new window, so it isn't very navigable. Luckily it's usually possible to just manually type the model number into the URL.


* I don't get the whole PDF idea. What am I going to do with it, print it? I just need the quickest way to get info (which isn't always present in those PDFs, BTW.)

* Annoying model numbering.


* Another piece of info I'm recently in need of is the physical screen size; I need to display graphics at a certain physical size, and for that I need to know the DPI. Surely this is a more exotic requirement, but still, I'd expect to be able to find it. SE does the best job in the regard. For the others, I just try scouring the web, but not everything can be found and some of the info is dubious.

* I don't get the idea of having the same model number represent different things in different regions. (At least, this is the situation from what I gather from info-looking on the web.)


11:18 pm

Blogger David Mery said...

Catchy title but to hate one needs to know. As hinted by the post itself and the previous comments, a main issue is that understanding of the market and of developers is distinct and not all successful mobile phone companies have a clue about the needs of ISVs.

br -d

12:57 pm

Blogger John said...

nike factory store
polo ralph lauren outlet online
michael kors outlet clearance
yankees jerseys
pandora jewelry outlet
pandora charms
coach factory outlet store
ravens jerseys
louis vuitton outlet store
ralph lauren outlet online

2:38 am

Blogger yanmaneee said...

christian louboutin shoes
supreme clothing
nike off white
cheap air jordans
michael kors outlet
louboutin shoes
nike kd 12
jordan retro
nike shoes
supreme clothing

1:10 pm

Blogger yanmaneee said...

nike air max
mbt shoes
kobe shoes
kobe byrant shoes
yeezy boost 500
supreme clothing
yeezy boost
hogan outlet

10:01 am


Post a comment

<< Home