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.





Life after RIM in the enterprise?

30 03 2012

There has been a lot of talk about RIM today, caused mainly because the company has stated it is giving up on the consumer market and heading back to its roots, the enterprise. Couple this with the $120m loss the company has made and the hints at “sale”, and you do see why lots of people have been talking about RIM. (If you don’t know RIM – Research in Motion make the BlackBerry devices).

One of the big conversations I have been involved in today (on Twitter with @BPMredux @puleen @souvikbonnerjee and @AlbertoManuel) is just what do we think will happen in the enterprise regarding the use of mobile devices, and vendor offerings for mobile based solutions. @BPMredux asked in his blog two simple questions

“How many BPM vendors have a mobile BPM solution based on Apple, Android or Windows Mobile”

and

“Now how many of you are still stuck with RIM and Blackberry in your own corporate environment?”

You can join in his debate at http://bpmredux.wordpress.com/2012/03/16/mobility-inside-the-bpm-scene/

So in this blog post I have want to have explore at some of the main points and give some thoughts based on conversations and relationships I have with a number of IT professionals that work within the enterprise supporting their systems…

BlackBerry

Are we seeing the BlackBerry swansong?

RIM is still a big player

For sure RIM is still a big player in the enterprise. Most people I know and speak too (within large corporations) have BlackBerry devices handed out to them as their corporate phones. There are lots of reasons why the enterprise opts for BlackBerry – security being one, durability another. Many people I speak to who have to support mobile devices within their business prefer BlackBerry, and that’s because they have better control over them, they are easier to administer, the battery life is second to none and the devices are durable (they do seem to get dropped a lot). These things mean less time is spent with the end user trying to address issues, and after all, time is money…

Apple is making in-roads in the enterprise

This all being said, the iPhone is making in-roads in the enterprise, especially within the “exec” levels of business. While the phone is undeniably a great phone, it does cause headaches for business, especially if you are already standardized on RIM. Throw into the mix that not much else in the enterprise is Apple based and the fact that you do pay over the odds for their devices, and you can see why, even with a great offering like the iPhone, Apple still isn’t king of mobile for business.

BYOD (Bring Your Own Device)

This is something I hear a lot about and read about. However, in reality, this really hasn’t shown any traction with the enterprise, and I very much doubt it ever will. Predominantly BYOD is a media thing based on what some SMEs maybe doing – it simply isn’t a great option for the enterprise, and here is why…

The enterprise needs to support its workforce and their devices, mobile, desktop, tablet, laptop whatever. This means they have resource dedicated to help ensure IT runs smoothly. That IT needs to administer these devices, ensure business applications run as expected, ensure everything is secure as possible and support end users. (They do other things also, but no need to list out everything). If the IT department has control over its devices, it knows what they are, it can secure them better, ensure the software works as expected, manage roll outs, upgrades etc etc and help users with their devices (without having to train IT staff / mobile support staff on every handset available to a consumer). In addition, standardization allows the enterprise to strike good deals with their suppliers and all big business has preferred suppliers – that’s just life. So imagine you take all that control away from IT. What are you left with? Yeap, a mess. You simply can’t have users connecting random devices to your network. You can’t expect vendors to support all mobile platforms under the sun for bespoke software for that business. You can’t expect in house IT to help users with their particular phones OS or hardware issues, and you can’t expect everything you need to work on the device to work on every single device (have I said that one already?). All in all, BYOD is a great concept, lovely for startups and SMEs, but for the enterprise, this isn’t an option…

Software vendors and their mobile offerings

The BYOD issue does illustrate that software vendors do not support all mobile devices. Sure there are comments that solutions should be mobile web enabled, that they should run using HTML 5, but that user experience is going to be pretty poor. The reason we love our native apps is that we can do more with an app, and the experience is a lot better than anything we see on our mobile web browser. This means vendors have to support native apps, and do they really need to support so many different platforms? Ideally they want to support one, but realistically know they may need to support a few. The problem for a vendor at the moment is which to support? RIM is a must, or is it…It used to be. Apple devices, well they are a must aren’t they…well yes and no…Android? No. Symbian…erm No….Windows Phone…Well potentially……

So what do you do as a vendor? I personally would wait until the end of the year to make a decision…

Windows 8 in the enterprise

Let’s be clear, Windows 8 may not be rolled out across the enterprise as soon as it’s released, but business will be reviewing it, and scheduling in a Windows upgrade path. Some upgrade paths will be quicker than others, and some may do their normal, and wait for the version after – so upgrade when Windows 9 is available as they haven’t long been on Windows 7. The point is Windows 8/9 will be the standard OS on the enterprise desktop and on majority of their servers. With this comes the normal office based software and legacy applications that every enterprise has running on a Windows environment. However, Windows 8 is a little more than just a desktop OS. All of a sudden the enterprise can have the same OS across all devices, including mobile and tablets. Think what a nice thought that is for IT within the enterprise and vendors alike. A single OS to administer across all devices,  a single user experience to support and the ability to seamlessly tie in lots of services they already use back into the devices of choice. Office, Outlook, Lync, Office 365, Sharepoint, cloud backups, device synchronization etc. That makes life a lot easier for IT doesn’t it…

As a vendor then, supporting Windows 8 is a must. But hold on, if you support Windows 8 metro what do you support all of a sudden? Yes, tablets (including ARM based tablets), desktops, laptops, netbooks and with a few tweeks, mobiles. All of a sudden supporting Windows Phone seems an obvious choice –  a necessity. So perhaps it’s back to the usual suspects, support Windows first, then perhaps Apple…Or vice versa depending on where you are with your mobile policies and vendor software.

Let’s think about suppliers to the enterprise. Most enterprises have a strict supply chain policy, and with Windows 8, this means the enterprise can choose who supplies their hardware, including desktop and phones. Remember Fujitsu, Acer, Dell, Nokia, Samsung, HTC and others deliver Windows 8 mobile devices. These same companies will deliver Windows 8 tablets, and most of them will deliver desktops, servers, laptops and netbooks. The enterprise therefore has the flexibility it desires regarding suppliers, but the security, administrative advantages of being tied into a single ecosystem, which runs all their legacy software. Essentially, for the enterprise, Windows 8/9 is a no brainer across all devices….

Where does this all leave RIM?

Well, to be blunt, I believe in a very deep, dark hole.

Essentially if it becomes a no brainer to support Windows Phone in the enterprise and Windows 8 tablet devices, then Apple will continue to struggle in the Enterprise, but that’s not a great loss to them. RIM on the other hand, if they struggle in the enterprise then I believe we will be saying goodbye to RIM and thanks for the BlackBerry memories. Without a consumer market, Windows 8 could well be the last nail in the BlackBerry coffin. I for one am already starting to think that by mid 2013, I could be writing a blog along the lines of “bye bye RIM, thanks for the BlackBerry memories…”