Device Independence for Ecosytem Projects
On this page
The Web Platform aspires to be a universal platform for accessing and interacting with information, content and services, and the Web Monetization ecosystem is expected to embrace that aspiration.
In particular, projects that are expected to have a direct systemic impact on the Web Platform need to take into account some of the lessons and best practices that have been collected over the years. These ensure that web technologies provide a platform which can be adapted to very different contexts across a wide range of devices and networks.
What is Device Independence?
Device independence is a design principle that aims to make Web technologies work on as many devices as possible, ensuring as broad a potential adoption as possible.
The W3C Technical Architecture Group (TAG) oversees development of new web technologies, and produces a number of principles to guide developers. One such principle is the recommendation to “Support the full range of devices and platforms”.
A Wide Range of Devices
Web technologies are designed so that application developers can adapt to a wide range of variations in how end-users access their apps. These variable factors include:
- Hardware capabilities, including screen size, input mechanisms, access to sensors.
- Processing performance, including number and power of CPUs, but also access to other dedicated processors, such as GPUs.
- Networking performance, including how fast available networks are, how stable, and how much their usage cost – not everyone has an unlimited 5G data plan with wide coverage!
- OS capabilities, e.g. whether the operating system has pre-defined mechanisms to share content or receive push notifications, and how user's consent to these capabilities are managed and exposed in browsers.
That's a lot of variation to take into account! Nowadays, Web usage across all users globally is roughly an equal split between computers & mobile devices, however that distribution varies considerably across different countries. Beyond computer and mobile devices, many other types of connected devices have Web capabilities, including ebook readers, game consoles, smart watches, connected cars, etc.
From a practical standpoint, the following techniques support these variations:
- When designing a new browser feature, make sure its availability (or lack thereof) can be detected by developers. Allow them to apply progressive enhancement or graceful degradation techniques. In some cases, a feature can be emulated by combining existing features, an approach known as a polyfill – if so, building and maintaining such a polyfill in accordance with best practices can be a great service to the community.
- When designing a feature that relies on specific hardware features, consider and document how a developer might provide an alternative path for devices that don't have access to that hardware.
- When designing a feature that may require user's consent, take into account the workflow needed to obtain that consent – the request for consent may mean that the feature can only be exposed using an asynchronous call.
- When designing a feature whose usage will vary widely across devices, provide the hooks that let developers adapt the final user experience to these range of capabilities. Note that a lot of care needs to be taken when making specific hardware capabilities so as to avoid creating privacy risks, since these capabilities can be used to fingerprint devices or expose more information about the device's user than they want.
- When designing a feature based on a specific form factor, take into account that it will end up being used in completely different devices (smaller or bigger screens, touch vs mouse, visual vs audio-based).
Design for all
When designing a project with consideration for device independence, you make it more usable, universal, powerful, safe and you help to ensure that both it and the web work for everyone.