Powershift

let created = `Date (2019, 8, 18) in

This site is a place for me to share with the world in a free way; art, thoughts, software, etc. With free, I especially mean free in visual expression and free from surveillance. Related to these freedoms, it is also an experiment in how to construct a site based on this different set of ideals, in contrast with the ideals that most of the new sites of the internet tend to be based on.

As a user of the internet, I dislike how JavaScript has become the predominant tool for implementing all kinds of functionality - even the kind that didn't even need the power of JS. The problem of JS as a technology is one of the things I will dive into throughout this text.

This site is implemented as a server-side application, where for the majority of pages on the site, there will be no JS running in the users browser, and definately no 3rd party JS! There are several nice consequences for the user from this choice. A couple of them are:

  • The site is faster to load and use. I.e. no lag because of some slow JS procedure using your CPU - or no delay in loading the initial page because of server-side pre-evaluation of JS. Instead the site is rendered in a straight forward manner pr. request, by a native OCaml application at the server.

  • The user is respected; there is no tracking of the users input-devices, e.g. mouse or keyboard. On many sites everything the user does will be tracked - so if you write or paste some password into a textfield, or by accident write a personal message in the wrong window; the site-owner or some third-party will have access to that data. For just a couple of (dated) examples, see the tracking system, Mouseflow, or lookup the analysis Facebook made about the content of text-boxes that never got posted on the site.

  • There will be fewer 3rd party actors tracking your movement around this site (DNS servers still track you).

Potentials are dangerous

Most sites, even those not running JS, are tracking your behaviour - but without JS they are limited to track where you came from, what pages you visit on their own site and a set of identifying information. JS lets the site-creator (and 3rd party JS-creators) track and identify you a lot more. The problem lies in the potential for tracking everything you do in the browser window.

The potential for some actor to do something is very problematic in a capitalistic system, where every actor pr. definition is competing in the game of being more efficient than other actors; it's a game of life and death for companies. The more an actor knows about the interaction between its product and its customers, the more it can finetune for profit. So to survive the game, or in its striving for becoming even bigger, the actor wants to exploit every advantage it can get, which means e.g. breaking users privacy.

And it's easy to break user privacy, as nobody outside your company really knows what your code does; so as a company you have a time-frame where you can exploit all you want, until somebody gets suspicious; and after exposure, most people seem to care too little about their own privacy to punish the company by stopping using their services.

A JS-app doesn't equal a native application

The site-owners want the user to feel that the web-app is like a native application running on the users computer for at least a couple of reasons.

  • It is easier to develop an app for JS, because the same code can run on every type of device. It can even be a special version of the creators website, so even less code. Note that this means that the qualities (e.g. the ones this text is concerned with) of the JS app, in this way is expanded to all those platforms.
  • People will be less critical of a JS-app sending data all the time to servers on the internet (as this is part of the implementation model), whereas some people will wonder why a native app does it. So a JS app is an excuse for tracking without as much critique.

The users suspicion of an application should be directly correlated with the type of data stored in the application, and how often the user will be using the application from day to day. If users tend to be using an application throughout major parts of their day, and the application is surveilled, then the user is constantly surveilled.

Optimally there should be no surveillance, and users should be owning their own data - see e.g. Web 3.0.

User experience

Another implicit advantage of this sites implementation, is that there can be no broken webpage functionality because of bad usage of JS, which I experience all over the web. The list of stuff that breaks is too long, but a few of them are:

  • There can be non-bookmarkable states of a web-page that you would have wanted to bookmark, but can't because the state is not saved in the URL.
  • Middleclicking the mouse on a link normally opens a new tab. This breaks if a link is made as an onClick event-handler on a HTML element that is not made for it. This is becoming more and more common - even certain Google pages breaks this. In effect the site-owner is in control of when a user can open a tab, instead of the user.
  • Browser plugins for surfing the net, e.g. for using the keyboard for browsing, doesn't work with onClick event-handlers. The user can modify his browser-experience less, which again implies less control in the hands of the user. But this should be possible to fix partially by the browser-plugins.
  • People make random hidden functionality that makes the user need to change his own behaviour to fit the behaviour of the specific page in question. Examples:
    • Some pages make pop-up boxes for 'sharing' the marked text when you mark any text... And these boxes hinder the view of the text itself..?
    • A lot of sites make the left and right parts of the page be forward/backward links to other pages - without any visual cue that this will happen..?

One of the themes of these badly designed UI's is that JS gives power to the developer to implement new functionality that will be unique to his site alone. This doesn't fit well at all with how we tend to use the web, where we visit a lot of different pages. If each page has its own intrusive quirks, then the user experience is horrible across the spectrum of pages the user visits. Why is JS a problem here? Because it has power to be even more intrusive than badly designed HTML.

On the other hand I'm not a proponent for pages that all look alike - e.g. if you make a blog on a platform that has a single visual design (see e.g. Medium) , or having your personal profile on a no-design site like Facebook. So here I believe HTML + CSS without JS is the best fit for a custom but common way of making UI's.

The shift of power

All these points of critique relate to an overall direction of the evolution of the internet, where there is a powershift from the user to the site-owners and thirdparties.

This is even more magnified by the tendency to use proprietary platforms that deliver the UI and content management, to host your personal page. As these platforms have their own JS running across all personal pages hosted on their site, they have massive surveillance power. And because the content people upload is structured through the sites predefined semantics - e.g. 'photos', 'about', 'relationship', 'likes' etc., it's much easier for the site-owners to interpret comparable meaning across the set of personal pages. This current system structure is what enables the commodification of the people using the site - consumers and content creators.

These centralized proprietary platforms also move the role of site-owner more towards the platform-owner, away from the content-creator. This means that companies are primary winners in the powershift.

The primary things the individual users get out of the systems structure are

  • ease of creation, which also leads to more users being able to create content, which isn't only a good thing. At a minimum you need sorting and filtering algorithms that work as you want, and that you trust. This is a really hard problem to solve correctly - content bubbles are an example of this.
  • ease of consumption, which can lead to both good things like cultural exposure, or to bad things like overuse on a grand scale.

These user 'advantages' should be able to be filled by alternative systems that support a different powerrelation, e.g. decentralized infrastructure (see scuttlebutt).

The services run in a centralized way by companies should be enhanced by democratic structure. The more people that use a platform, the more the platform should be controlled by the people in a democratic way. This logic is also very obvious to apply to a company like Facebook, where the platform would be nothing without the consumers and creators on the platform. Another related argument for this is the logic of 'with great power, comes great responsibility' - the responsibility issue can be solved by passing control back in the hands of the users.

Also, we need to make idealism part of the economy of companies. This can happen through

  • individuals 'voting with their wallets' - where they let idealism control their voting. This demands education of the public, and that more individuals begin living up to their responsibility as consumers relative to companies. Like the relation between citizens and the state. The people have the power, when acting collectively.
  • the state. It can implement carrot + stick mechanisms that make companies respectively try to get subsidized and avoid fines.

You vote for the future of our internet by your actions.