It's 2013

Let's make a new social network!

Ideas for a lightweight, scalable and modern decentralized social networking server

Florian Hülsmann /

No, wait..! A whole new social network!?

Use existing ones, speak their language (protocol) and keep all your virtual friends!

The problem with current implementations:

Choose a protocol:

CC by-nc

Client side (web browser)

Server side


A compiled programming language for scalable, fast server applications.

Supports concurrency:

func (p *Post) Distribute() {
    for _, h := range p.ReceiveHosts {
        go h.QueuePostNotification(p)


communicate through channels.

func PostsListener(c chan *Post) {
    for p := range <-c {
        go db.StorePost(p)
        go hub.PostNotify(p)

func main() {
    postChan := make(chan *Post)
    protoHandler := proto.NewHandler()
    go PostsListener(postChan)
    // ...


func (hub *WebsocketHub) PostNotify(p *Post) {
    for _, client := range hub.ConnectedClients {
        client.MsgQueue <- p

Performance optimized full text / #hashtag search

Go packages to be used

crypto for encrypted server to server communication

net/http as protocol base

encoding/json for client API

html/template for frontend templates

image for creating thumbnails etc.

Further ideas