During the last years the idea of the web of things is seeing a notable growth in interest. Due to the increasing availability of cheap and powerful single board computers like Raspberry Pi or Arduino the whole topic took off. Tinkers and artists creating devices and installations which would have been very expensive to create some years ago. Also the industry benefits from decreasing form factors and production costs by incorporating thumb sized microcontrollers and sensors into their products. This ultimately creates a world of smart and connected things around us. Given the fact that we are going to interact with these connected things using web driven devices the question arises how things on the web are going to be build in the near future.
Clients turning into servers
Traditionally web applications rely on data provided by well known or at least trusted sources like own databases or public APIs. With the emergence of new technologies like Bluetooth LE and device components like the APPLE M7 coprocessor data will be sourced at anytime from nearly everything around us without connecting to any server. The increased ubiquity of data caused by the spread of connected things demands web applications to be able to discover and consume data in realtime according to context and permissions. By now browser support for hardware access is just about to start. WebRTC is one major approach to marshal access to our devices cameras and microphones. FirefoxOS and the Chrome apps already provide basic support for more sophisticated things like Bluetooth. Given the ability to collect and process all this data around us the resulting knowledge is likely to be shared with others or simply to be stored somewhere. As this may happen not only by uploading it to a service, future web apps may also use technologies like WebRTC to share data in realtime using peer to peer connections or provide streams of data via socket connections.
Offline is not an error
Bearing in mind that connectivity is not a given feature at anytime soon and in view of the fact that sourcing data does not inevitably rely on server access anymore the importance on local data handling becomes an undeniable necessity. Architectural approaches like noBackend and their incarnations in frameworks like Hoodie, aim to provide solutions for an experience where ‚online‘ is an enhancement to the user experience. Web apps being build with the mental modal of desktop apps assuming contexts which provide reliable and fast connections are condemned to fail. Reality proves that mobile device usage already is outgrowing desktop usage. As a result the unreliable nature of mobile networks has to be considered when building apps. Throughout the last year the phrase „offline first“ is gaining a lot of traction and is going to complement the „mobile first“ approach. Considering applications being offlline as a default imposes a lot of questions in terms of data handling. Synchronizing data, interchanging processing logic and anticipating user needs to preload required data are only a few aspects of dealing with offline as a default. If you are interested in sharing your thoughts about this you may join the conversation at offlinefirst.org
Shapeshifting User Interfaces
Web applications today are build around specific use cases and rely on defined datasources. But what happens if that datasource changes as the use case changes in context. If you are at home planing a trip you might want to specify where and when you are going to start your trip and which is your desired destination. An interface for a possible app is quite foreseeable. It may provide inputs for locations (departue and destination) and time. Using the exact same app while you are on the go and have to reschedule your trip requires the app to shape shift. The apps ability to detect that you are standing at the train station yields enough information to anticipate your needs and adopt its interface. By querying real time traffic data and reservation states for the next train and nearby hotels it’ll let you how to advance. Inputfields for departure and time are not a necessity in first place and therefore may not be show as prominent as if you where at home.
The challenge in building adopting interfaces is to make your app adopt to available services. Furthermore the range of devices capable of serving web apps has already grown into vast amounts. Thinking of screen sizes just as large as a watch shows the possible lower boundary for responsive designs. When screens get that small only the most important bits of informations can be shown. But even in that case your app should be able to adopt and provide consistent information and a continuity of your brand. So pixel independent interface designs will become more important. Taking into account that an average page as of today has an size of 1.6MB from which approximately 1 MB is devoted to images it becomes obvious that that trend is becoming superfluous in an offline first world. SVG based UIs are suitable to solve that issue and relief our apps from bloat. Libraries like Abobes snap.svg are pointing in the right direction.
With the web of things appearing at the horizon, the web is going to change again and so the way we develop applications will. This post only describes a fraction of changes and there is a lot more.
What are your thoughts of how the web will change? Let me know in the comments or send a Tweet @franatique !