Android fragmentation, development frustrations

12 04 2013

As a developer we want to be able to produce nice maintainable code, ideally a single code base and deploy that on as many platforms as possible. While on the desktop this is pretty simple, come to the world of mobile and well, things get more complicated, with Android I would say a mess really.

Androids fragmentation makes it hard to support all devices, hell, there isn't even a business case to do so

Androids fragmentation makes it hard to support all devices, hell, there isn’t even a business case to do so

Things to consider

I don’t want to talk about cross platform development etc. rather there are a few blogs I’ve written on this subject already (see Cross Platform Mobile Development – CloudZync blog, and one of my recent blog posts, Cross Platform mobile app) , so for the point of this post, we will presume that you are going to build a native app with a technology like Xamarin (Monotouch). So what challenges are there then to build an app that works on multiple platforms?

Well first off what platforms are supported? At the moment, that’s limited to iOS, Windows Phone and Android devices (no Blackberry in there at all – though I hope this changes if Blackberry 10 starts getting some form of traction in the consumer market). For each of these operating systems we still need to take into consideration the actual platform style, there is no point in trying to deliver a Windows Phone type app to an iOS device as it simply won’t work (they don’t share the same controls and the look and feel would be a very jarring experience). You may be thinking that that means you still need to maintain separate code bases, even with our cross platform technology, but you would be wrong.

The beauty of C# and the whole Microsoft development environment is the way you can structure applications. If you are familiar with MVVM then you will understand my point. MVVM (Model View ViewModel) allows a developer to separate concerns within the application, to be very basic, it means we can separate out the UI elements from the actual working code. (Have a read here if you want to undertand MVVM) So we can maintain a single code base in essence for the app across the multiple platforms even if we change and modify the UI.

Fragmentation

This is the point of this article, while we have to do different things for different operating systems, we have to do different things still for the same operating systems even, well in the case of Android quite a lot different.

With Windows Phone and iOS, life is pretty easy, the only real issues relate to image sizes, so you have to package up a couple of different size options for icon images (which can be a pain). With iOS you do have to consider if you are deploying to an iPhone 5 as opposed to an earlier device, due to the screen sizes. For example, in the CloudZync Zync Terminal app (an app that allows merchants to raise and process mobile transactions), on an iPhone 4, we had to place a “done” button into the keyboard in order to hide it and show the rest of the screen, in the iPhone 5 this wasn’t needed as the screen was longer and we didn’t need to hide the keyboard (something that only really got spotted in testing).

So while doing these few extra things can be a pain, they are all pretty small. Then we look at Android, and this is when things get a little harder and a pain to be honest.

Android not only has a fair few flavours on the market, it also has a number of issues with the types of devices it can be found on. So while we are packaging up 2 versions of an image for iOS, on Android we find we could be packaging as many as 10! That’s a real pain to say the least, but not a real head scratcher.

The real problems arise when we look at the different flavours of Android and how they act. When testing apps across different Android flavours we notice we get different experiences. What is really frustrating is how different those experiences can be and what that means in terms of coding and testing. But things get worse still. For example we looked at developing our Zync Terminal App for Android and looked at a few different Samsung Galaxy devices. All consistent you would think, but nope, they aren’t. On top of that we noticed we had to use different API calls on different phones to access different parts of the device, such as the camera. That becomes so frustrating, not to mention time consuming in terms of development, but also in terms of testing, and time consumption means expensive.

Let me give you a little interesting point about our development, it seems that the cost of building and testing our app on iOS and Windows Phone together was about the same as the cost associated with just building for the major Android devices (so that’s us cutting corners and not supporting a lot of Android devices officially). To me, that can’t be right and is not a good place for Android. I can build an app for two very distinctly different operating systems with completely different experiences for the same price I can build an app for a single platform, Android…

Technically I’m not being fair, as this article suggests I’m looking at Fragmentation, so I’m actually developing for 3 versions of Android and umpteen Android based devices – as opposed to two operating systems in iOS and Windows Phone.

Conclusion

I want to maintain as much code with a common base, and we use Xamarin to deliver our apps on Android. The sad fact is that it doesn’t make much business sense to support all of the Android flavours or devices. The fragmentation issue just makes it too expensive to really develop for all Android variations (especially when we look at the demographics of a number of Android users).

While Android holds a very healthy market share (across all flavours) it makes sense to build for Android, but I do find myself hoping that iOS, Windows Phone and Blackberry start taking large chunks of market share away from Android. As an OS to for businesses to build for, businesses that want to maintain code across multiple operating systems, who want to deploy apps with great consistent robust experiences, Android is miles behind Apples iOS and Microsoft Windows Phone.





Windows 8 for business and for home

10 04 2013

I know most organisations are either stuck on Windows XP or migrated a short while back to Windows 7. Typically (or should I say historically) organisations seem to embrace every other version of Windows, which puts them on a 4-5 year upgrade cycle. So any ideas that businesses are shunning Windows 8 because of it new tile start screen isn’t quite accurate.

What is true is the fact that no matter what Windows 8 was, businesses wouldn’t look to update until Windows 9 was released, and most of us thought that would be approximately 2 years after the release of 8, so September / October 2014. However, with Microsoft’s recent announcements of Blue being available at the end of the year, it seems that Microsoft is now looking for annual releases of its OS, and since that OS is now essentially across all devices, that includes mobile, tablet, laptop and good old desktops. So this new release cycle from Microsoft will no doubt have an impact on how businesses look to their upgrades.

 

Give it a short amount of time and you come to love the start screen in your business

Give it a short amount of time and you come to love the start screen in your business

 

Windows 8 now

My own company, CloudZync, is using Windows 8 for the majority of users (though I will be honest, some are on Windows 7 still) and I must say, having both operating systems in the organisation hasn’t caused a single issue. But, I have noticed that when I move back to Windows 7 I’m starting to get a little frustrated. It seems the start screen has become something of a blessing, even though I spend I would say 85%+ of my time on the desktop side of the OS. I really wouldn’t listen to those who say the OS its jarring and moving between “Metro” and “desktop” is confusing, because it simply isn’t. Sure there are some things you need to learn but they are so easy, like just put your pointer in a corner of the screen, that pretty much sums up what you need to know as the rest is very intuitive (well I think – especially when compared to other operating systems out there). Sure there are some things that frustrate me with Windows 8, but that’s true of every single OS and piece of software I think I have ever used.

I’m glad we have Windows 8 now in the organisation as with Microsoft’s new OS releases being mainly “upgrades” I think moving between Windows 8 and newer releases will be quite a seamless and painless experience.  I expect Blue to be more about upgrades to Windows 8, addressing some of those user frustrations and bringing even more seamless experiences between the OS and the cloud.

 

Intuitive

I do find I get very frustrated with peoples take on what intuitive is. I’m sorry, but something isn’t un-intuitive because it doesn’t work like something else you are used to. That means it’s just different. Intuitive for me means I should be able to logically understand where something maybe. When moving to iOS I have to say I found it very un-intuitive, yet most people say it’s an easy to use OS, which it is, once you know all the little oddities of it. That doesn’t make it a highly intuitive OS. If I handed iOS to my Dad for example he would hate it, and moan like hell about it. (He recently looked at the iPhone, Samsung Galaxy and Nokia Lumia devices, he went with the Lumia as he said that one made sense to him how to use it, the others would require him to learn the UI). Likewise, things on Windows 8 are different to 7, and many of us at first think “wow 8 is so un-intuitive” because it’s different to what we have learnt. But if you come at with no expectations, and don’t think it should be the same as something else, you soon find that actually, it’s a very intuitive OS. Sure there are some odd things that aren’t intuitive, but just like iOS, once you know them they seem brilliant and then obvious.

 

Windows 8 in your organisation

There are some real nice features when you start moving all devices to Microsoft’s latest OS. I have a Windows 8 phone, Windows 8 PC, Windows 8 netbook (which since I have had access to an RT hasn’t been used) and a Microsoft Surface RT. When switching between devices it’s amazing how much is synchronised and how easy it is to be working on one, then switch to the other. I would say improvements could be made for sure, but as a work environment, it really is second to none.

Yes I am aware of how improved Apple is in this department, but I too have an iPhone for testing our software on and our CEO uses his iPad consistently. What I’ve noticed is though anything that is a bit more work focussed or requires greater attention, he has to switch back to the desktop PC, while I’m equally happy on any of the Windows 8 devices (granted I don’t like editing office files on my phone but it’s not that bad).

Moving forward, Windows 8+ is a no brainer for me. Tablets that double up as real desktop, desktop and tablets seamlessly acting together and don’t forget a wide selection of Windows 8 phones that bring it all together on your mobile. For an organisation, it makes almost no sense to splash cash on anything other than Windows devices, all you do is add in another level of complexity that simply doesn’t need to be there, and worse, you have to spend much more money.

Think of this example, my sister in law is a sales rep. She has an iPad which she uses to show prospective clients items they can stock, great, it’s a nice experience. However, if the client wants to purchase or look at anything in real detail, then she has to get out her laptop and boot that up and use bespoke software on there to complete her sale. She is essentially carrying around 2 devices, one of which is being used as a glorified catalogue, something that just presents well. Now if her organisation had purchased a Windows 8 tablet then that’s all she would need to carry. She can replace the iPad delivering the same experience and then still have all the power of her legacy apps available on the tablet. It would have saved her company a tidy sum…

 

Organisation Upgrades

No matter your take on Windows 8, there is no doubt in my mind that come October 2014 we will start seeing mass migration of organisations away from Windows XP and 7 in favour of 8, Blue or whatever it will be called by then. What will be hard is how the media (especially tech bloggers) look at this, will they then say Windows 8 was a disaster like Vista but Windows 9 is amazing? Or will they finally grasp that their rather 90’s view of desktop computing is dead and that the desktop is very much on the same cycle as mobile operating systems and their wireless upgrades?