This is about creating (social) networks without authorities or business censoring and storing all data in one locations.
Everybody has his own content and joins several channels. Channels are like chatrooms, in a way that everyone joined gets every update by everyone else and nothing persists. Channels can have restrictions, like:
- an IRC style channel only allows for text
- a twitter style channel allows 140 chars of text, links, pictures and videos
- a facebook style channel allows text, links, pictures, albums, videos etc.
- a creative channel allows canvas drawings with descriptions only
- a gist channel allows text only and advises clients to perform syntax highlighting based on meta data
- a dribbble channels allows pictures only and is invite only
- a user's channel has everything about the user and there he can be contacted also. Users can create restrictions there
By default nothing persists, every update is just propagated to everyone in the channel.
If you want to persist something you do it yourself or ask someone you trust.
A good behaviour would be to have a server for yourself that stores all your data, so your public profile is always visible. Multiple profiles can be hosted on a server, but it is always up to the people to decide where their data lives.
Users need to state which servers they trust so bad servers can't serve wrong content about a user.
There is no technical difference between servers and users, they're both just nodes taking part in the game. However the behaviour will differ: Servers typically persist data and don't interact actively with other users, except for automated messages etc.
Just link with @user
With this there is only one protocol that can be implemented once in every language and that's it. Clients can be written the interact with all content available or just focus on certain channels, still using the same basic libs and protocol.
Because being like a chat, updates always happen instantly. You can also invite others on modifying a certain post to allow for collaboration.
TODO: o rly?
Private content goes into invite-only channels that are encrypted using shared keys.
Also there needn't be that one network only, you can create a network just for your friends that is even more secure because it goes of ssh tunnels into swedish proxies or whatever.
Comments happen via twitter stile reactions or it you need more you can just create a channel for a post
Clients can be configured to just cache everything they see or at least do that on every channel. This way the client becomes a content serving node and has access to everything he saw while being online.
TODO: changing stuff offline
As there can be multiple networks coexisting, you just need to find someone to get started with. So you connect to your best friend and then get to know everyone he knows etc.
every room is a channel with post-type restricted to plain text if necessary
create a private channel for your topic, invite one ore more people and post your text as first message
subscribe a user's public channel
usernames need to be unique, channels are prefixed with the initiator user name, like julian/bike-talk
Posts have meta data attached to them.
Required fields:
- author
- creation time
Optional fields:
- content type (so clients can display images or canvases correctly)
- ... you name it