This is just my brain dump. I'm going to update it frequently.
In the beginning we can send data from one IP address to another.
The problem is that the data can be intercepted by a third party. So we add a new layer where the traffic is encrypted.
The next problem is that the IP address can be linked to a real person. To avoid this we add a new layer where the data don't go directly from one IP address to another but pass through intermediate computers, so the receiver doesn't know the real IP of the sender.
Now if our new protocol can be recognized by packet analysis it can be blocked, so we need to make it indistinguishable from some popular protocols.
New Address System
At this level we need new address system for nodes instead of IP addresses.
Next we need a low level protocol to send a file from one node to another.
Next we can divide all nodes participating in the network as clients and servers. Clients will be regular users, servers will handle the routing, store files and provide other low level services.
Then we create a new abstraction layer where we unite all the individual server nodes into one cloud supercomputer with single storage. The stored files will be distributed among the server nodes with some level redundancy, so the cloud is going to be permanent even if individual nodes stop working.
Now the clients of the network can send and store files using the Cloud. At this point we using the public-key cryptography to introduce the ownership of the files and end-to-end encryption facilities.
Now when all the low level instruction is ready we provide API for developers for building all kind of applications.