Thoughts for a decentralized Web
In order to move away from a centralized Web to a distributed Web, where edge devices can connect to other edge devices directly without the need for a service mediating in the middle as in a classic client-server paradigm, it is required that the edge devices are able to discover one another.
This discovery has to happen at the level of an application or a service.
To illustrate, let us say I am running a “Search” Application (App) on my mobile device. At present, the queries I key in are sent to a centralized server in the cloud and the search results are returned from that server over HTTP.
If we have to de-centralize this, the results of the query are no longer maintained in a server in the cloud. The results will be maintained in each of the ‘Search’ App running on the edge devices. This can be a database on your smart phone or the local PC.
When I issue a query, the request has to find the currently active Edge devices that are running the search App and get the results, collate them and return them to be displayed.
To achieve this, a discovery service is required in the middle whose main job is to maintain the currently active Edge devices that are running the ‘search’ application.
So when I issue a query on my search App on my mobile, it sends a request to the discovery service to return the list of edge devices that are running the Search App and then return that list.
The Search App on my mobile will now use that information to either directly connect to those IP addresses or if inbound HTTP traffic is prohibited, use a ‘Switching Service’ to which all those edge devices are connected, say via Web sockets and request data from them.
I described a very rudimentary scenario. There are a lot of details to be fleshed out to make this protocol work, probably an RFC.
If we can get this working, we can easily move onto a ‘De-centralized’ world wide web.
Once we do this, it is possible to bring the control over user data back to the user.
For example, A central server of a Social Media App that holds all its user data will have to keep the data on the user’s edge device. In the decentralized model, it can still collate all the data from its own App and do all the processing it does today.
But if we can get these Apps running on the Edge devices to use a ‘Common User Profile’ database into which the Apps have to store and retrieve and the user can control which portions are shareable to other users or services by a policy, then Services can no longer use the data without user’s permission.
In this model, we can completely eliminate even the need for intermediaries to process ‘transactions’ of a block chain infrastructure. This will be totally distributed and every transaction between two parties happen right at the edge devices concerned, with the intermediaries being purely protocol oriented like the Discovery service or Switching Service quite similar to how routing of emails work sans the email data maintained in the server.
So your wallet or currency apps run right on your phone and the transactions posted to it are debited or credited locally without the need to go over the network to update data in a block chain infrastructure that further has to be maintained by the intermediaries. This will be akin to the way you carry cash and you agree to give or take.
Now that we are talking about Web3 or the Metaverse, it appears like a good time to discuss this to create a totally distributed infrastructure and not a semi-distributed one that is only slightly better than the existing walled gardens.
It would be interesting to hear your thoughts.