Friday, 13 December 2013

RWD and Server Side Personalisation Living in Harmony

I’ve often been asked questions like:

  • Should I used responsive web design or server side adaptation?
  • Which one’s better RWD or device detection?

These questions imply there is a conflict, that one is the winner. It very similar to the classic fat-client / thin-client debate or - translated to recent years - in the cloud or on my machine. I love the debate, but when it comes down to getting a job done we often realise that we actually like both sides and would be crazy to totally fall in to one camp.

So let’s look why we would want to use both RWD and server side personalisation of content - or as it's known to some RESS (excellent presentation from Dave Olsen at Breaking Development in October).

"Responsive web design is a combination of fluid grids and images with media queries to change layout based on the size of a device viewport. It uses feature detection (mostly on the client) to determine available screen capabilities and adapt accordingly" — LukeW With responsive design the developer is able to adapt the UI based on actual discovered device capabilities and react as these capabilities change.

Server side techniques provide an opportunity to optimise and personsalise the content that is delivered to the device. It can do some of the leg work and provide some context intelligence that the client side is not capable of.

Neither approach is necessarily more complete than the other - service device databases need to be maintained; client side APIs are not available for all capabilities you may need; purely server side detection may not be able to determine variable capabilities, e.g. screen width varies with different zoom levels; the server can have a much deeper understanding of the given user to improve personalisation of content. To even enhance the love in further, server side can give context intelligence to the client side to improve the responsive design techniques and client side discovered properties can be passed back to the server to improve the service side optimisation.

The power of responsive web design is enhanced greatly when you have prior knowledge of the context (including device) before your site delivers the response to the device. This assists with the delivery of optimal web content (including HTML, CSS & JavaScript) to the device. Any logic that can be determined and acted upon on the server side can reduce data transfer and client side overhead and improve the user experience. For example, the delivery of optimal images, user targeted banners, minimising the content delivered to the device, handling legacy issues.

The power is in the hybrid of server side device capability detection and responsive web design. Client side capability discovery can be used to enrich service side capability discovery and the two techniques can sit side-by-side to allow you to play to the strengths of each.

When it comes down to you making a choice, it is a personal one. Think about what kind of experience you’re trying to deliver.

  1. Is your content personalised?
  2. Who are you targeting?
  3. What is your global and demographic coverage?
  4. What skills and technology do you have available to you?
  5. How are you going to assure quality of experience in an ever changing device landscape?
  6. How quickly can you fix and deploy an issue for one device without risking all the other users?
  7. How are you going adapt to changing market requirements?
  8. How quickly do you need to respond?
Consider whether you’d have a compromised solution if you stuck with a pure RWD or a pure server side optimisation approach.

I’ll be covering these topics in future blogs looking how you can manage the personalisation and optimisation of content with agility and quality in an enterprise environment.