20210101 PHIL The Web - orbitalfoundation/wiki GitHub Wiki

(General comments on strengths and weaknesses of the web)

Decentralization is a strength

I tend to characterize the web as a set of distributed servers AND conventions around input and output (WebXR, HTML).

A relative strength of the web is that it ends to be an open ecosystem in that anybody can create a website, post that website up in a visible manner. There are some caveats on this of course. Speech that is widely seen as unacceptable can lead to upstream scaleability and hosting providers refusing to support the content. And there are some technical barriers to being able to post content.

The real plus is that on the web we see distributed risk and playful exploration not just one company having to carry the risk and police the community. Many different ideas from different parties are constantly emerging. Effectively the web itself is a kind of computational froth that is not owned by any one party. It also brings together different stakeholders and different technologies to allow for rapid idea exploration. This is something walled gardens don't seem to do as well.

UX paradigms are having trouble straddling new devices

Web display devices are constantly evolving; putting pressure on web input and output technologies. It's worth arranging a web experience as a spectrum across devices from old to new:

  1. A desktop running a full blown browser allowing for an extremely high resolution display and full user attention. There are mature stacks here for composing and presenting displays - based on a newspaper paradigm.

  2. A mobile phone used in the field (such as while driving a car) with a smaller display. The web in some ways is overkill in terms of features here for small devices. It has also had a hard time chasing input features such as IMU sensors.

  3. A pair of AR glasses. The web as envisioned here strays quite far from its roots. The labor that has gone into HTML for example goes largely unused in a 3D heads up display.

As we as consumers move through this spectrum some of these pressures seem to be emerging:

  1. Speed -> it's just slow to load a new app over the web, context switch and so on.. it's really a pain.

  2. Synthetic views -> the web is terrible at synthetic views from multiple app sources; data is locked into pages... one app one view.

  3. Fairness, justice -> the privileged are always getting the better tools first; how can this be more fair?

  4. Creativity -> while everybody is now an amateur photographer/videographer it is hard to say write apps on phones. The read/write pattern that was fundamental to the web seems to be diminished (harder to be a creator).

  5. Presentation -> it can be hard present information on small devices; we are prey to curatorial services that unify views (Instagram for example). These tend to get stuck in legacy protocols (show images not show 3d objects with custom shaders). This also diverges from some of the original intent - where everybody was potentially a creator of whole experiences. This is similar to the previous point.

  6. 3d support -> future content is likely to be 3d - it's not clear how this will play out. The previous web is framed around HTML/CSS as a dominant paradigm. This is a grammar that is fairly expressive, can produce a reasonable display on many different devices. It tends to be focused on static text and often only for a given language. Generally speaking it does seem like people can navigate and engage with 2d static content in their own language, in their own larger communities in a reasonable way. But how does that migrate to a 3d view?

Assistive capabilities may need attention

For all of us, with physical differences, and attentional differences and navigating a complex world - we are all in need of our digital assistants. We live in a world that can be dangerous for unaided senses. We need and expect and rely on traffic reports, weather reports, information about local risks in a country when traveling and so on. And we expect our digital tools to help provide that information. As well, our devices hold our identities, access to our bank accounts and so on. It feels like some of this is ad-hoc and could use more thought.

Security feels inaccurate in some ways

Browser providers have worked hard to protect users however at a cost of making it difficult to do web payments or for buyers and sellers to build relationships or engage in financial transactions. So while security looks reasonable, it may need more thought for ecosystem health.

Poor support for new devices

It's difficult to support new device drivers and capabilities on the web. The pattern of web architectures is a top down one, where new standards and protocols go through a lengthy review process. This makes the web often last to receive attention for new hardware. WebXR for example is only now mature - while VR devices have been out for years.

New hardware developers should have a way to directly deploy device drivers as dynamically loadable modules that individuals can choose to use or not. It should not require a browser extension or consensus. This is crippling new hardware innovation for the web.

This is especially true for the burgeoning spatial computing market (such as for AR glasses). We do see some options - such as WASI, and dynamic module loading, but what is needed is dynamically loadable security policy for accessing lower level device capabilities.

A developer can wait a year and make a mediocre experience on the web or just “go native” and move 10x as fast. Basically the web becomes a playground for “old technology”; technology that has stabilized. The phrasing of the web, the phrasing of web-browsers, the specific requirements around user security and safety are all contributing factors around the slowness of the web to innovate.

Hodgepodge

The web is characterized by a set of interoperating grammars; domain specific languages such as HTML, CSS, and a hodgepodge of procedural grammars such as Javascript, Java, WASM and so on. It's kind of a mess of standards and expectations - and it requires a Manhattan Project level of coordination to support a full blown web browser today.

A different way of thinking about a browser is to throw out the idea of HTML and javascript and focus just on apps or "pages". In this role a browser itself acts as a kind of hypervisor for page based applications, managing their state, providing them thread time, providing local storage. All system services; devices, keyboard, bluetooth, GPU must pass through boundaries setup by the browser.

What feels needed is a "simpler" floor. One that is not predicated on the "carful of clowns" model of computation; where a rich sandbox is provided with every kind of possible feature one could desire - but where a minimalist sandbox is provided - and one loads up libraries instead of having a prebuilt set of services. We see similar patterns in enterprise systems such as Kubernetes and Docker. And in some ways this is a philosophical discussion around computation.

Weak models of Persistent Web Apps, Apps, Threads, Processes

Modern browsers support PWA, local storage and suchlike. But this feels weak. Apps only run when on a visible screen. Users cannot start or stop PWA apps. There's no overview of what permissions an "app" has.

Another approach would be a much richer process model with rich apps, that can rely on shared libraries, that may not even rely on HTML or CSS but simply paint to raw bitmaps by hand (or directly to the GPU). This would mean a model for inter-app communication, for apps to dynamically load libraries, and for end users to have an ability to clearly see what apps are running on their local devices.