5 ms·
I never understood why people exaggerate so much Android's fragmentation problem, when the world's most fragmented platform, the Windows PC, has demonstrated it
by mrb 15y ago
I never understood why people exaggerate so much Android's fragmentation problem, when the world's most fragmented platform, the Windows PC, has demonstrated it was not an obstacle to market domination...
- objclxt 15y agoIt's a fundamentally different paradigm. A lot of people who have been in the mobile business a while remember the 'bad old days' of J2ME and horrific compatibility problems. Don't forget, a new version of Windows comes around every 3, 4, even 5 years. But on mobile, we have new OS versions dropping every year, at least. And these new versions bring substantial new APIs. So it's a very different environment to a traditional desktop OS.
- rogerbinns 15y agoOne thing you missed about Windows is the huge amount of effort put into backwards compatibility. You can download the original VisiCalc for the 1981 IBM PC and it still runs. Note that DOS back then didn't even support directories (they were introduced in DOS version 2). http://www.bricklin.com/history/vcexecutable.htm http://www.bricklin.com/history/vcexecutable.htm Raymond Chen's blog is full of fantastic stories about Windows and the amount of effort they put in to backwards compatibility. A quote: "Look at the scenario from the customer's standpoint. You bought programs X, Y and Z. You then upgraded to Windows XP. Your computer now crashes randomly, and program Z doesn't work at all. You're going to tell your friends, "Don't upgrade to Windows XP. It crashes randomly, and it's not compatible with program Z." Are you going to debug your system to determine that program X is causing the crashes, and that program Z doesn't work because it is using undocumented window messags? Of course not. You're going to return the Windows XP box for a refund. (You bought programs X, Y, and Z some months ago. The 30-day return policy no longer applies to them. The only thing you can return is Windows XP.)" Some random examples: http://blogs.msdn.com/b/oldnewthing/archive/2004/06/04/148427.aspx http://blogs.msdn.com/b/oldnewthing/archive/2004/06/04/14842... http://blogs.msdn.com/b/oldnewthing/archive/2003/12/23/45481.aspx http://blogs.msdn.com/b/oldnewthing/archive/2003/12/23/45481... http://blogs.msdn.com/b/oldnewthing/archive/2003/10/15/55296.aspx http://blogs.msdn.com/b/oldnewthing/archive/2003/10/15/55296...
- mrb 15y agoActually you are wrong. VisiCalc does not run on Vista and up as Microsoft dropped 16-bit compatibility. Nonetheless, I agree with your general point that Microsoft puts a lot of effort in backward compatibility. But so does Google with Android! What makes you think the Android API breaks backward compatibility? I have some (light) experience with Android development (Bluetooth app, basic UI, etc), across Android 1.6, 2.0, 2.1 and 2.2, and I have for example never come across an API that broke backward compatibility. I often hear theoretical arguments like yours being made, but I have never been shown a concrete case, like "they broke X in the new version Y of Android, so I had to do Z to workaround it". In my experience, once an API call is stable and works in a given Android version, it never breaks in subsequent versions. I am sure there are some rare counter examples, but they are so isolated that they don't warrant all "Android fragmentation is a problem" articles I read around. These articles do not represent the opinion of the average Android developer like myself.
- rogerbinns 15y ago> ... run on Vista and up as Microsoft dropped 16-bit compatibility You'd better tell Microsoft about that. They did drop it from the 64 bit versions but not the 32 bit versions. http://support.microsoft.com/kb/926657 http://support.microsoft.com/kb/926657 > What makes you think the Android API breaks backward compatibility? What makes you think I made that claim? I will however make the claim that different Android versions have different bugs and because of that you have to test across all versions. I'm also willing to bet that if you use undocumented APIs and behaviours then you will get bitten on version upgrades - something Microsoft does not do. And sometimes Google do annoying things. They messed around with the handling of configChanges in the manifest encoding it in non-backwards compatible ways. If you use the admob library you get forced into uses-sdk 13 which then changes your app appearance. Here is a comment I made about versions if you want to see my opinion: http://news.ycombinator.com/item?id=3637542 http://news.ycombinator.com/item?id=3637542
- mrb 15y agoRe 64-bit: you are correct. But this still proves my point that Microsoft sometimes deliberately breaks backward compatibility. Re bugs across different OS versions: your initial comment implied that, because Microsoft puts so much effort into backward compatibility, that app developers do not have to worry about testing across different Windows versions. This is wrong. Just like on Android, Windows developers generally need to test across different Windows versions for bugs, etc. In other words, my point is that both Microsoft and Google put a similar amount of energy into maintaining backward compatibility. Therefore, Android development presents a similar challenge to Windows development to developers who care about compatibility. And in both cases, the challenge is not that huge... Case in point: the vast majority of apps written for Android 1.5 will run just fine on 4.0 --this trumps all arguments!
- codezero 15y agoWindows was designed to run on white box PCs. It wasn't up to the PC manufacturer to ensure that Windows ran properly on each different model of their PC. If I have an HTC phone I have to wait for HTC to prepare the latest Android upgrades, I can't just upgrade it myself. Fragmentation on Windows wasn't a problem because if you hadn't upgraded to the latest version of Windows it was because you didn't run anything that required it. If you haven't upgraded to the latest version of Android it's because you can't.
- mrb 15y agoYou are talking about a different issue (the OS having to support different hardware platforms). I was talking about developers claiming fragmentation makes it hard to write programs for the OS running on different hardware platforms. My point is that the same level of complexity is involved in writing an Android app running on multiple Android versions and mobiles, and in writing a Windows app running on different Windows versions and PCs. And in both cases, it can be done relatively easily.
- user2634 15y agoWindows is fragmented? I use XP since 2002 and all programs are compatible. Only very recently there are problems: DirectX10 doesn't work on XP and DOS programs don't work on Windows 7. But still 99% of games and programs run on XP. Can you run a binary executable from 2002 on Linux or on Mac? How about binaries from 1995? On Windows they run just fine.
- mrb 15y agoI don't think you understand what fragmentation is. Windows is fragmented both at the software layer, with all the different versions of it: 2008 R2, 7, 2008, Vista, 2003, XP, 2000, Me, 98, NT4, etc. And it is fragmented at the hardware layer, with all the different hardware configurations it supports(ed): type and number of processors (64-bit, 32-bit, 16-bit), type of disk (diskless, SAS, SATA, IDE, SCSI), amount of RAM, number and resolution of each monitor, input devices (keyboard, trackpad, mouse, joystick), etc. The fact that many apps can run on XP proves my point: despite being an extremely fragmented platform, it is possible to write an app that is relatively portable on different Windows versions and PCs.
- cooldeal 15y ago>I never understood why people exaggerate so much Android's fragmentation problem, when the world's most fragmented platform, the Windows PC, has demonstrated it was not an obstacle to market domination... It's easy to understand. While it is definitely an irritant for developers and users, the most noise about it seems to be coming from the Apple camp, who go out of the way and spend considerable effort in documenting the fragmentation and then escalating it to being the end of the world. Take the only other blog post on the site linked. http://pxldot.com/post/17983848516/one http://pxldot.com/post/17983848516/one The author talks about why he wants to write for the blog. >I want to talk about numbers, and design, and Apple, and simplicity, and productivity, and life. Maybe there will be a unifying thread, but it’s entirely possible there there won’t be. The world is too big for me to commit to only a single piece. Even if this sharpens the pain of only being able to faintly cover any given topic, I am the sum of my passions, and what I create should be the same. And then starts off not by talking about Apple, but how their competition is bad. It's nothing more than an attack piece to feel good about his/her choice. Why else would anyone who is obviously not very interested in Android as a user or a developer go to so much effort? Not to mention that the fragmentation meme was started by Steve Jobs himself in an Apple earnings call, and all the Apple blog circles picked it up and went from there.
- jsz0 15y agoI don't think it's an exaggeration. It's not so much a compatibility problem, just as it wasn't for Windows, but instead it's a business problem. Google is increasingly unable to get new features to market in a timely fashion. They can side-step this to some degree releasing applications in the Market but long-term it's going to hurt them quite a lot if they can't get features out there.
- mrb 15y agoYou say "Google is increasingly unable to get new features to market in a timely fashion" but one post above yours, someone says effectively that "Google releases new APIs/features way too quickly". This is exactly what I am talking about. People who claim fragmentation is a problem cannot even agree on what the problem is, concretely. I believe Google does release new APIs often, but why would that break your application if it was not using this API to start with? Once an API is released (eg. the Bluetooth API in Android 2.0), it stays stable in the subsequent versions of Android.