Mobile App Development Models

Introduction

Mobile development has come ages and miles away from its humble and simple beginnings. Not all might agree with the simple beginnings. Not everybody would develop for mobile applications. We still remember the early days of Nokia when Symbian was the OS and C++ was the language to use with not so good documentation for novice to begin.
Android and eventually iOS based mobile devices stormed the inventories. This commoditization was achievable owing to the commoditization of the OS which was to power those commoditized devices. For the hardcore iOS fans the word commoditization will not be acceptable. Take stock if that doesn’t pacify let us call this as tremendous growth. With that settled we shift our focus to the ecosystem created by these OS’s. The ecosystem of frameworks, marketplace and applications.
That brings us to this dispatch; starting with a question – why would developers like us be interested in these meta and larger than life (call it solution architecture if you want) aspect of mobile development?

Here is our reason why you should continue reading this dispatch – Most compelling of all is, this is a light read for many who have burnt hours to deliver day’s patch to git. Followed by this article integrates history and guides a newbie to getting started in mobile development.
If you are already into mobile development this is just a light read and birds perspective of the different elements involved in the market of mobile app development.
Let us take a quick look on the platform / OS which every other aspect of this ecosystem rests.

1 – Mobile app development ecosystem
Operating Systems

2 – Timeline of mobile OS introduction

It is interesting to notice there are many but the most talked about are the Android and iOS. More justifiable because many of those which found place in the timeline are built on top of Linux kernel base or on Android kernel. Funny enough Android itself is based on Linux kernel . Without dwelling on why so many offshoots of Operating Systems exist let us take this information into the frameworks and other ecosystem elements that exist around OS’s.

Frameworks
Frameworks are interesting element of the ecosystem. To the credit of these most of the art in mobile app development originates. There are plenty of them and each claim to solve a specific purpose or align with an architecture. Developer starts their journey by picking up a framework typically. Brave hearts and developers who want more power sometimes neglect this element and build apps right from SDK’s. Now is the time to mention the crucial element which though represented was not much talked about. SDK’s are the fundamental blocks which enables a framework. Frameworks cannot exist without them and developers cannot build apps without them for a mobile OS. They are the interface to the netty-gritty of the OS. Popular definition from the community can be quoted as – “SDK is expected to offer tools to program against a certain system resource or feature” whereas “Framework consisting solely of libraries, but if you call it SDK you will be expected to offer something to support development” .
Popular frameworks active in the industry and used to larger extent can be listed but what would be interesting for developers are the ones which are easy to get started and deliver. The approach towards these popular ones typically being with following evaluation dimensions –

1. Free ones; no cost, easily downloadable and installable etc.
2. Language(s) that could be used to build the app
3. 3rd party controls and other libraries that can be plugged
4. Platforms to which the app can be developed
5. … and few more

As we go down this list our attention to those parameters go down as well. By no means this list is the only way developers think or should think about selecting the frameworks. But the goal of putting that list is to hint upon the way developers think while picking a framework.
These frameworks have led the path to development methodologies trumpeted by them which has more or less stabilized towards –

Native are closer to a device’s form factor, PWA stands for Progress Web Apps which fuses the Web apps to Native and Hybrid elevates the style of development in such a way that it can run across platforms i.e. OS’s.

Now the era is to use these methodologies of mobile development to selection of choice of frameworks. Choice of frameworks typically offers the SDK with their tools required for the development of the app. Thus, leading us to a choice of some sort like the following –

Native app development frameworks
Typically comes from the respective mobile OS vendor themselves. i.e. Android and iOS. More than framework they are SDK’s in nature. However, there are frameworks like ReactiveNative, NativeScript, Appcelerator, Xamarin to name few.

Hybrid app development frameworks
These are frameworks which promise build an app targeting a common feature and you could run it in either of the dominant OS’s i.e. android and iOS. Frameworks like Xamarin, Phone Gap, Flutter to name few.

PWA development frameworks
Apps which adorn the philosophy of running from within a web browser and adorn all the niceties of web development fall in this category. Difference to web app however lies in the ability of these apps to grow in features as they become available in the device. Frameworks like Ionic, Polymer, Angular, Vue, React are examples of such frameworks

Web app development frameworks
Apps which are run inside a browser but accessed on different form factors fall in this category. These apps which are further segmented into Reactive, Single Page Application (SPA) etc. There are many frameworks which help build applications in this way – Angular, Mobile Angular UI, Sencha, Kendo, JQuery Mobile to name few.

Marketplace
Distribution of apps happen from this place. There are multiple ways a market place can be established. Public like Google Play Store, Apple’s App Store. Enterprise governed stores like Appaloosa, Apideck, Apperian etc.

Popular frameworks active to the community are Ionic, React, Xamarin, PhoneGap, Cordova, Flutter, Corona, Kendo UI etc.