The SAFE Social Network

As promised in Proposal: Relationship and Group Scoped Identities a lifetime ago, here’s a more generic idea about how to do the group/relationship (i.e. “social networking”) stuff in a SAFE way :yum:

Summary: For the average person, the SAFE network will be just another way to connect to others; they won’t care much about any of the radical benefits. In this already crazy competition, we’ll need radically superior social networking features to get past the tipping point. Luckily (for us), current social networking applications don’t follow the way we organize our real-life relationships. Addressing this weakness may attract a large enough segment of potential adopters.

I propose a particular solution (or a high-level draft thereof) that is closer to how we think about our relationships, but this post is really just an invitation for discussing how to model real-life social networks on the SAFE network.

The point is, there must be, from the beginning, a platform level solution for the social aspects of the SAFE network, so that:

  1. application developers can build on a secure and well designed framework to represent relationships and interactions between people
  2. we could presents users with established, well understood conventions when they interact with each other.

The framework would provide a higher level abstraction than the simple “user” concept of the core network, so projects like Project Decorum and others would not have to re-implement similar ideas again and again, usually in different ways, using similar (but different) metaphors, confusing users.

(some rambling; feel free to skip)

On the lowest level, the SAFE network enables storing and transmitting information privately and securely. In real life, however, people will see it is as just another way to send cat videos to their friends: it’s going to be a social network. How much do you stop to marvel about the message carried by that little the green badge next to in your address bar? Because that’s exactly how much the average person will think about all the hidden awesomeness of the SAFE network.

To get adopted, SAFE must provide a better social experience than Facebook. And that bar is freaking high.

Not everybody is happy with Facebook though. You don’t want your mom know about everything you do with your friends. You may want to share pictures from the concert with your friends, but what happened after the concert, only with those select few. Facebook gives you some tools, but they are an afterthought. We could do better.

So on to my particular idea. To start afresh, I tried to identify a few concepts that “conventional” social networking sites fail to represent, but human beings think of them as separate entities:

  • login identity – e.g.: “me, sitting in front of my computer”
  • social identity – e.g.: “me as the guy in the office” (linkedin), “just me” (facebook + twitter + instagram), “all my dark secrets” (tumblr), “cosplay” (another tumblr), “the aspiring writer” (nanowrimo)
  • relationship – e.g.: “the sum of: my facebook, skype, and hangouts chat history with a certain friend, the stuff we shared with each other, the places we went together, and who knows what else”

(I looked into bitcoin’s BIP32 recently, and I realized my idea has a lot of similarities to it; I figured it may be useful to mention the corresponding hierarchical wallet things for those who know how they work.)

The above concepts would map to these on the SAFE social network:

  • I log on to the Launcher with a login identity (LID)
    • BIP32: it’s like your xprv key
    • it’s the actual SAFE login, and nothing about it is disclosed
    • (note: while an xpriv key is a private a key, your LID is really just a public key, so even disclosing it would not allow access to your SAFE account; this comparison isn’t about that)
    • a LID can have child LIDs, so it’s a tree structured thing, down to an arbitrary depth
  • my social identity (SID) is my visible “profile”
    • BIP32: it’s like your xpub key; but you don’t have to share it, so not all LIDs have a public SID
    • when I do something “social” (e.g. send a message, share a picture, etc) I do it in as a SID
    • it can have all kinds of information about you, stuff that others can read about you and know you by
    • I imagine communities, apps, etc would list these SIDs (profiles) in their directories
    • a SID have no access to stuff outside of the LID it belongs to (i.e. I can’t share a photo stored on my otaku LID on my work profile; unless I’m an idiot and my work LID is a descendant of my otaku LID)
    • they are displayed with a “theme” to avoid mixups on the user side (i.e. you don’t want to send that picture to your mom) – see Proposal: Themes
  • there are proxy identities (XID) to link the more transient relationships to the more permanent SIDs
  • relationships (REL) are two or more XIDs grouped together – BIP32: a bitcoin transaction
    • all actual interactions are done in the context of a relationship
    • a friendship is a special case with just two XIDs, but it’s not any different from a group

The rules:

  • Relationships from child LID/SIDs are inherited by the parents, but never the other way around.
  • Documents from parent LID/SIDs are inherited by the children, but never the other way around.

Now we can:

  • incrementally restrict access as we create child accounts: we allow fewer and fewer people into it as the smaller the circles become, we share more and more with those circles;
  • horizontally segment our life as we create additional accounts on the same level: we share a different set of data with people from different areas of our lives.

This of course requires support from the Launcher, because it needs to load the child accounts recursively. One doesn’t have to log on at the top level, by the way: I may feel safe to use my master LID on my triple-firewalled, manually compiled, hardened BSD box in my Faraday-cage basement (wearing a fashionable tinfoil hat), but I would only risk to log on to my “personal” LID (a descendent of the master LID) on my Android phone, because NSA and Martians.

I’ll add some scenarios about how I imagined this would work from a user’s point of view.

EDIT: I changed the abbreviation for proxy identities to XID because it’s cooler (and it doesn’t remind me of process ids all the time)


Scenario: Hanging out in the mall, and then sleepover

A bunch of friends go out having some fun, take a lot of pictures, then sleepover party. Stereotypical stuff I know nothing about, but hey.

So, you switch to your generic “personal but public” account (LID) and take a bunch of pictures in the mall. Then you all go to your friend’s house and you switch to your “besties” LID and take some more pictures.

Fun idea: Switches like this could be automated (or at least automatically suggested) based on geofencing, time-of-day rules, proximity with friends (location disclosure should be properly authorized), etc.

Now you make an album for the event, and share all the pictures.

Let’s say your LIDs are organized as this: MASTER > Personal but public > People I know > Friends only > Besties

Whoever is connected to you through your “besties” SID can see all the pictures. Those who are only connected to you through more generic accounts (e.g. “Friends only”) can not.

Please note that you didn’t have to worry about restricting access at the time of sharing: there was never even a chance for anything to leak through from one account to the other. Also, you didn’t have to create separate albums; the client handled that kind of complexity for you.

Very interesting topic this is. I’ll try to post some of my own considerations on socialising on SAFE soon.


Thanks! I believe nailing this properly right at the beginning is very important because changing existing momentum (dozens of incompatible implementations of the same generic idea) is near impossible.

Edit: Facebook got big by becoming a social application platform; that’s something to learn from.


Facebook has a ton of features, but it has even more ADS!!!
I think the lack of ads and the fact your data is ONLY yours will be big selling points along with the great potential for privacy and sharing settings.

Who wouldn’t want an ad free Facebook where their data is theirs and theirs alone?!


The best social network might have a UI that looks something like a map of a small town. Complete with a cafe, a bar, a mall, home etc. The idea being that when you click on the club and share a thought or video those who are in your acquaintance circle will have access. If you share that same information in the bedroom of your home it remains completely private. If you click on the mall you are taken to safex. This simple 2D map could make for a super easy to understand interface. The map could grow as the user creates more complex relationships with the platform and its apps and other users. For example you might imagine towns nearby yours that as you pan out from the map come into view. These towns represents your contacts, if your contact is a bestie and has created new content which is shared in their living room then you as a bestie can view that info. If you are just an acquaintance then you would not see anything unless they shared it at the mall or cafe. Creating a social network with this kind of visual prompt would make it accessible to people of all languages with very low learning curve and little need for translating “how to” text. It could also readily lend itself to a gaming environment.

1 Like

Pick 20 friends at random. Ask them for the top two annoying things about Facebook. Count how many mentioned ads or a concern about their data.

If you can share your cat videos easier, it’s a win. Give them no ads, data ownership, world peace: nobody cares unless it’s “mandatory” (i.e. “I’m a responsible adult, so this is how I’m supposed to answer this question. Now let me get back to work [clicks on next cat video]”) – I know: it’s sad.

One of the groups moving away from Facebook are teens looking for more privacy (less intrusion.) Mom is on Facebook now, she’s stalking my friends, it’s annoying, it’s embarrassing, and who knows what she might discover. They are also early adopters, and highly influenced by their peers: they may be one of the best target groups towards gaining traction.

The most important features of Facebook are:

  1. its immense data of users and relationships and posts and pictures and comments,
  2. its API which gives developers a way to build social applications that can build on all that data.

This proposal focuses on the “users and relationships” and the API aspect of that picture. Other projects, such as Project Decorum, could build on this, and focus on the posts and pictures and comments, though there’s no reason why some of those (just like Facebook’s built-in graph classes) couldn’t be also standardized.

1 Like

It’s a cute idea, and I’m sure many would like it, but I’m not sure it’s for everyone.

The great thing is that if we had a platform like what I was talking about, your idea could be implemented on top of it as just another application. It would present users with the same social circles and relationships as another (less fun) app that is built on top of this same platform. Without a common platform, however, these two apps would come up with their own (probably incompatible) ways to represent groups and friendships and whatnot.

1 Like

(question was about why it isn’t enough to just use a single account and a rule-based access control system)

For one, we can’t have separate devices join in to the tree at separate levels (e.g. with an insecure phone into a less sensitive sub-account.)

Second, we lose the built-in protection against cross-talk between the identities. With the proposed solution it’s simply not a possibility. With a rule-based system, it’s just, well, a rule.

Edit: I see you deleted your response; what was wrong with it? Your question about why a simple access system wouldn’t be good enough was completely legit…

Edit 2: oh okay i just read your edit from before you deleted; cool

So yea, the big idea behind a more complicated system is to properly represent concepts about human relationships. Existing social network apps use models that are too simplified.

yeah I looked at your previous post/thread on completely restricting access for someone after you unfriend them and how multiple IDs/etc would be needed.

Great point! I’m with ya now! :grin:

I want my own social network profile page ID, where it is built by a wordpress cms or a safe-press to suite my own individual creativity.
I want to have my profile id to be used any where on the safe network like a second-life app and have reputation levels, as a human-being by having my profile getting good karma points for what contribute to the whole safe network.
I want an interactive messaging system like Skype where people request a invite to speak and I have the abilty to accept or trash the request so I have no spam.

I want all this and more on my own profile page by having plugins, this is my dream anyway.
I do not want to be tied down to one platform as of Facebook or twitter and want the option to block accounts as see fit or have different level of clearance.

1 Like

My dream is yours: I want a platform where all those ideas can be implemented.

We can build an open platform to represent social profiles, the relationships between them, and the actions on those relationships (e.g. “trash this connection”). Having a platform like Facebook’s is amazing; if we had something like that, just open (and more focused on how we humans structure our real-life relationships), that would not mean “being tied down” but “having a solid framework to build dream apps on top of.”

Facebook and Twitter and Google and Microsoft and Pinterest and all the others have no reason to share their databases: it cost them a lot to compile and maintain, and they compete against each other. If we don’t have a common platform, then developers will have to make their own, and there we are, with incompatible social networks (not because of competition, but because people will need to keep reinventing the wheel.)

Without a common platform, you will have a SafeSkype account and a SafePress account and a SafeAlbums account: you may log in to them with the same ID, but that’s where it stops. You’ll have separate sets of relationships in each, some will have groups, others will not, some will do access control this way, the other another way, etc.

Facebook got big when it allowed developers to build applications where users could use their existing relationships instead of having to start from scratch every time (and also learn another apps idiosyncrasies about what is the right way to do the social networking thing.)

If you want to trash a Skype connection, you probably want to trash all your connections with that person. Why should you go through all your different apps to look for all the instances you connected with that person? I don’t wanna maintain 25 separate address books / friend lists, all with differently structured groups and sharing settings.

If the social network is a separate layer on top of the core login id layer, you can manage the relationships on their own right, decoupled from the applications you use. I can just click on this shiny new app, and it has all my friends / groups / relationships in it, and when I share something, I know exactly who will see what. That’s the idea.


This is been exactly what I have been thinking about in the last year. I do see the tread that we all want into one app. Whatsapp / slack is a prime example. As I said in the bitlaw part 2 thread, I would like to build a platform that all can use in one systematically app. You could check a user profile, user products/services, give reviews of the said user, messaging, collaborative threads that isn’t too restrictive, (think like reddit meshed with slack), contracts, and cola.


Very interesting article! One of the points, as I got it, was to have a unified framework for the interactions, and the actual implementations (apps, we call them) would use that framework to present those interactions in different ways, extend it with their own bits and pieces, etc.

Conversational apps are therefore organized around the way I organize my life, rather than the way the app maker might dictate.

It’s exactly what I was talking above! Current social networks impose their rules on how we should look at our life, but here’s a chance to start over, look at how people actually do it, and build something that makes all that possible and simple. And by simple I mean for the human, not the computer.

But Facebook Messenger stayed the same — I started it up, and everything was in its right place.

Again, exactly what I was talking about just one message before: I want to be able to start an app (even if it’s a new app!) and find myself in the same familiar context. I was talking about my friends and my interactions with them (and at another place I was talking about a common visual/auditory theme, for a sense of security and familiarity), but I’m sure it can be more general than that. Every app that serves tea should know that I like it with a dash of milk and no sugar, if that makes sense.

(Example: No matter which app I use to search for flights, it should already know I don’t mind LaGuardia as much as most, I’m most happy with 2-hour layovers, I would never go under 50 minutes (again), and I’m happy with 3 legs if it’s at least $300 cheaper.)

About the part about services (e.g. my bank) having conversations with us. My idea about a hierarchical tree of login ids makes complete sense in that context. The bank makes its main customer service account public, then gives sub-accounts to its service reps. If I’m talking to somebody whose account is a sub-account of the main one, I know I’m talking to the bank.

p.s. I’m not sure I’m on with the command line syntax v.s. natural language point; AI is getting better at natural language recognition crazy fast, or at least fast enough that people won’t have time to get used to tarzan before it’s no longer necessary.

1 Like

@Tim87 I love this thread man, I’ve been thinking more and more along these same lines since I started Decorum. An extendable “social” framework is exactly what we need!

@anon81773980’s article is interesting. One thing that occured to me is that most companies probably hate having to converse with their customers through third party servers. When a company uses Whatsapp to communicate with their customers, Facebook will be there eavesdropping on all their customer data (or otherwise require hefty payment to let them use end-to-end encryption). SAFE could offer a neutral and private alternative though!

Yea, that article is super cool!

About the above idea, is the there a place to brainstorm something? A wiki, or a document on the unholy Google Drive? Something like this is not a trivial thing to draft, and I already changed some of my above ideas because I figured they are lacking in certain aspects.

What about… here? :smiley:

It’s a fun place to talk about an idea, but maybe less useful for putting together the draft of an idea. Let’s give it a shot anyway. What are your takes?

I’ve been thinking about these things too but haven’t crystallised anything yet. Its all still very fluid.

I like the “meta-current-seas” ideas from The Metacurrency Project, and I like the idea that we are all curators, creators and consumers.

So for example, as consumers we can choose to follow/subscribe to other’s curations, creations, categories etc.

While as curators, we share, like, retweet etc. things that we like, and maybe even add #hashtags as we go. Or, at the other end of the spectrum, we organise content into a structure like a website (blog, wiki and so on). Or maybe we collaborate on a website with others in a crowd creation.

As creators we write / publish our own material in tweets, status updates, posts etc.

All this happens currently, but with much ownership and control of the protocols, algorithms and presentation by others. On SAFEnetwork, we can eliminate “ownership” and rather have protocols, algorithms and presentation options, to which we subscribe. Or, if we wish, we can create our own, for ourselves or to share with others.

As I say, my thoughts are very fluid. Each time I’ve tried to capture this either to describe it, or particularly to imagine how it would be built, I realise it is too complex and return to the idea of building something simple to start with, while keeping these ideas floating around in my imagination.


The Metacurrency orientation prezi wasn’t talking about the three c’s… Anyway, it seems there are many different aspects to look at. I was focusing on how to represent our real-life relationships in a way that it feels the most natural, but the question about organizing the flow of information is also super interesting.

1 Like