Am I doing the right things? Am I doing the things right?” – are the critical questions that should consistently linger in every programmer’s mind for every activity being performed by him or her. The first question’s answer predominantly lies in the built functionality. The second question is answered through the ‘presentable functionality’. In the three decades’ journey of computers, the programmers focus had substantially tilted from the first question to the second. In earlier days, the computers were dumb with limited intelligence and flexibility. Hence, the users were compelled to be ‘intelligent’ to use the erstwhile computers. But, the latest generation computers have become extraordinarily intelligent with outstanding adaptability. A small phone’s camera gets adjusted to the ambient light; any mobile device screen gets adjusted to the tilt position of the holder. Facebook or any website data load gets adjusted (or prompts us) based on the internet bandwidth. All these were possible because the respective developers considered the holistic options while developing these particular functionalities. While designing the applications, they have considered wide spectrum of scenarios such as wide-range environment and wide-range devices.
In other words, we may say that – “The device independent design is ensuring a program to work in all the scenarios and devices in which the users are expected to access the application”. We may also call it as “Responsive Design”, the application should respond to every device and it should work the same efficient way for every user. The application or software should work independently regardless of the local software or hardware or a device.
Here are few core principles of Device Independent Design:
- Device independent access – This is the fundamental principle for device independence from the user perspective. It does not say that the user experience will be the same on every device. But it does say that the user should be able to obtain a user experience and that user experience obtained should definitely be functional
- Device independent Web page identifiers – By bookmarking a web page identifier that provides a functional user experience on one device, it should be possible to obtain a corresponding user experience on another device with equivalent functionality.
- Functionality – The functionality should be the same across all the devices.
- Incompatible access mechanism – If a functional user experience of an application cannot be provided due to limitations in the access mechanism, an explanatory message should be provided to the user.
- Harmonization – Should be possible to provide a harmonized user experience, in response to a request for a web page, in any given delivery context that has an adequate access mechanism. User should have rendering preferences. Such as, a user may allow to locally increase the size of text, or convert text to speech, to improve accessibility for those with poor or no sight
- Characterization of delivery context – This is quite interesting subject. The user agent should be able to associate the characteristics of the delivery context with a request for a particular web page. For ex: images will be reduced in size or converted to text alternatives based on network connection. As you all know, the YouTube will automatically adjust the resolution based on your internet bandwidth.
- Adaptation preferences – User should have a provision to adapt the preferences of a web page. If in a hurry, a user may request a lower quality presentation, such as lower resolution images, in order to speed up web page delivery.
Why it is important to consider now?
In 90’s the web access was through a personal computer / workstation / or through an Internet browsing center. Since the middle of 2000, the number of different kinds of devices through which we can access the Web has grown from a small number to many hundreds with a wide variety of different capabilities. It could be a Mobile phone / smart phone / personal digital assistants / Smart TV / Tablets / GPS devices / Voice response systems / Kiosks and even certain domestic appliances through which we can access the Web. We never thought in our wildest dreams to browse the internet on TV. Now everything is OTG – “On The Go”, we can’t ignore any resolution, any device while developing the application.
Different browsers display the information differently on different devices. There used to be several browsers which need to be considered earlier days. Of course even today the cross browser functionality development has become little challenging, as all the browsers are not able to cope up with the trending technologies. There used to be a good practice of putting a note in the footer of every application as – “This application is compatible with IE 6 with the resolution of 1024 X 768. But now we have no luxury of deciding the terms of the users. One should ensure that the application works independent of the browsers / resolutions / and the devices.
What to do now?
Now what is the way, where is the world going? How do we survive in this competitive environment? People moved from web to mobile sites, and then to responsive designs, and now everything is going to be a mobile app. One thing is sure, irrespective of the revolutionary changes, all the users may not be interested to install the app as it consumes a lot of space in their mobiles. Unless they are confident that they are going to use it regularly, one may not install the app. So DID is going to be there forever. The best way to go for DID is the Responsive Design – making the CSS and HTML to be flexible in terms of resize, hide, shrink, enlarge, or move the content to make it look good on any screen. One approach to device independent authoring is to use a transformation technique such as XSLT. By creating the content in XML, the same content can be adapted for different delivery contexts using XSL style sheets. All we are talking is just one layer of 7 OSI layers i.e. presentation layer. But this the deciding factor as it is accessible by the user.
By now you must be thinking on how to test an application based on these many different conditions? There are so many emulators that exist in the market, where we can test our application in different environments, using different resolutions on different devices. Sometimes testing on one emulator may not be enough. Google has come up with Mobile friendly checker – https://www.google.com/webmasters/tools/mobile-friendly/ . IE, Chrome, Firefox has its own features to simulate the user environment.
Summary “All for one & one for all”. Do just one design that can be accessible by everyone on every device. Doesn’t matter if it is a Tablet or a Phablet, Android or Apple, Computer or TV – just One design for all. Period!
—-Contributor – Shiva Shankar