A Server for every soul

tl;dr This post is an introduction to the  personal server paradigm, and the first of multiple posts related to freezr.info.

- 1980's - A (personal) computer on every desk
- 2000's - A (smart) phone in every hand.
- 2020's - A (smart personal) server for every soul?

Imagine a world where each of us has a personal server. Our server would host the apps we use; it would store all our personal data; and it would communicate with other servers in any way we ask it to.

The unfortunate (and somewhat accidental) arrangement in today’s prevalent web-services architecture is that the “apps” we use are hosted on servers which are controlled by other companies (such as Twitter or Facebook among countless others.) In a different paradigm of personal servers, the “app” I would use to tweet (for example) would be installed on my own server rather than on Twitter’s, and my “tweets” would sit primarily in my own personal database. 

It should be self-evident that such a personal server paradigm is more consistent with the original concept of a distributed World Wide Web. This personal server paradigm also provides a better human-computer interaction model than the web services model prevalent today. By being masters of our data, its apps, and its environment, we have the possibility of setting our data free – free to interact with other apps we choose and control, free to stay offline unbothered by data-mining services we don’t like, free to be transported to other environments and servers, and free from the shackles of the third party servers we do not control.

For this new paradigm to be adopted, all such servers would need to be built on a common platform - a platform which is not dominated by any one company. Such a personal server should adopt the models used by the likes of Linux and node.js, rather than “Windows Media Server” for example, though it does need to be consumer friendly. 

Amazingly enough, many of the underlying elements for such a platform are already in place and are commonly used: the open source server stack built on node.js, the prevalence and sophistication of front-end javascript, cloud-based services which make it almost consumer-friendly to create web servers, file servers and NoSQL databases with common base of functionalities, and even consumer-oriented concepts such as ‘apps’ and ‘permissions’ which have been popularised by smart phones.

I posit that only two additional conventions would need to be adopted to coalesce these various components into a common platform for personal servers:

  1. A front end API – a set of simple commands that would allow a front end javascript program to access back end services.
  2. A common set of schemas for server URL paths and (JSON) keywords, so apps can declare their various characteristics such as their data models and the permissions they seek from users.

In a series of posts, I will provide a high-level specification for the above elements, and also discuss the structural advantages that they might engender. Most importantly, this model gives primarily control of data to each consumer while also freeing the data to create much more value to consumers.  The model fully disaggregates front end development from back end storage and processing, creating better incentives for service providers of all sizes as well as individual developers to focus on specific parts of the value chain and offer new innovative technology solutions and business model choices.

Some four decades ago, we were tickled by the idea of having a personal computer on every desk. Two decades later we realized that each of us would end up having a smart phone in our hands. Is it too preposterously ambitious to imagine a personal server at the service of each of us?  

Next sections: