Categories
scuttlebutt

A Decentralized Platform for Innovation

In what is scuttlebutt I discussed why Scuttlebutt can be a better social network than anything else out there. However, it can be so much more. It can be a decentralized platform that any application can be built on top of and immediately become peer-to-peer.

Under the hood, Scuttlebutt messages are just JSON data. Here’s what a normal text post looks like (simplified, additional metadata omitted for clarity):

{
    author: '@Py8stqMfjhdc4Ln92R4Lg+3jITszP94G3P5BNuH+lWY=.ed25519',
    content: {
        type: 'post',
        channel: 'new-people',
        text: 'Hello World!'
    }
}

And here’s what a vote looks like:

{
    author: '@Py8stqMfjhdc4Ln92R4Lg+3jITszP94G3P5BNuH+lWY=.ed25519',
    content: {
        type: 'vote',
        vote: {
            link: '%c7ZAvQXoDP/zXnXgTnkGatP1JSAV29V8G/+Hhk8lSWU=.sha256',
            value: 1,
            expression: 'Like'
        }
    }
}

Notice how the content sections of the post and vote are different? The only thing that is similar is the “type”, meaning the content section can be filled with anything you like. Different applications can send their own messages with their own ‘type’ and information, and clients that understand that type can display the information in a way that makes sense. 

For example, you could build a chess application which sends content like:

{
    author: '@Py8stqMfjhdc4Ln92R4Lg+3jITszP94G3P5BNuH+lWY=.ed25519',
    content: {
        type: 'chess_move',
        game: '%c7ZAvQXoRP/zXnXgTnkGatP1JSAV29V8G/+Hhk8lSWU=.sha256',
        move: 'Qe4'
    }
}

This data is then sent along the Scuttlebutt network where any of your friends who have a chess client that can read the type “chess_move” can see that you’ve made the move “Qe4” which in Portable Game Notation means you moved a queen to e4. You could even play games of chess with people with other chess applications, as long as they can process this “chess_move” type. In fact someone has already built a ssb-chess backend that runs on Scuttlebutt and you can play it today

Because everything is open source and you don’t need permission to join the network, you’re free to innovate as your heart desires. You can build any kind of application using Scuttlebutt as a network layer, and it’ll be decentralized and usable by anyone else on the network right out of the box. 

For instance, someone could build an Instagram-like application that connects to Scuttlebutt, and shows all content of type ‘image’. Someone else could build a Twitter-like application that only displays text posts of less than 280 characters. These applications will talk on the same network as Patchwork, Manyverse, Patchfox, etc., and you can interact with friends using different applications seamlessly. 

This means that you are free to choose the social application you use while still being able to connect to your friends on the same network. What if the developers of Patchwork do something you hate, like add sponsored content, rearrange the feed order, or make it neon orange and green for a real 90’s flair? Instead of being forced to “deal with it” like you are with Facebook or Twitter, you can simply download an alternative application like Manyverse or Patchfox and continue talking to all your friends with the same content. If you’re a programmer, you can even fork Patchwork, or create your own client from scratch just the way you like it. The application you use to view the world may constantly change, but the underlying data always remains the same. 

This would allow Scuttlebutt to live on for decades or even centuries. Social clients may evolve and change over time just as they do now. People will build applications which will grow and die on it. But the underlying data remains the same, and you’ll never need to take your entire social world with you when switching clients again. 

That’s what I love about the potential of Scuttlebutt. It’s not just freedom from corporate control, it’s freedom from anyone telling you what to do and how to interact with your friends. It’s freedom form the invisible hand nudging you to do things others want you to do, like clicking on ads or using their new live streaming product. 

Remember AOL versus the Internet back in the 90’s? Initially everyone loved AOL as it was this beautiful walled garden that gave them news and information and games. But then the internet came along with infinite possibilities; a decentralized world where anyone can create and share and build what they like! It provided so much more utility and freedom that everyone flocked to it. That’s how I see Scuttlebutt today, the free alternative to the social media companies that only seem to be tightening their grip on their user-base, building a bigger wall around their garden every day. 

Categories
scuttlebutt

What is Scuttlebutt?

As mentioned in Why Decentralization, a big focus of this site is the technologies that will make a decentralized world possible. Scuttlebutt is one I’m most excited about because it has a usable social network, and more applications can be built on it for free, without permission, by anyone. 

Scuttlebutt solves multiple problems plaguing the social networking world:

  • One company having control over and access to everything people do and say on the network
  • AI algorithms sorting your timeline to decide what you should read, taking control away from you
  • Ads and the ability for companies to purchase attention, shoving themselves into your personal social timeline
  • That people have to have one profile tied to their real self 

Technically Scuttlebutt isn’t a social network, it’s a system for building any kind of decentralized application, but explaining it in the context of a social network helps. Later I’ll be explaining how it has the potential to be so much more than this.

Scuttlebutt – the social network

Decentralized, open-source social networks have been tried before, the two most well known are Diaspora and Mastadon. With these services there are still servers that people gather around, so if you want an account you have to find a server and register for it. There is still moderation, there is still federation (you have to register an account, and you can get banned) and there are a few central points of failure (the servers themselves). While these networks are a great first step away from centralized corporate-controlled networks (I like them and will be exploring them in more depth soon), Scuttlebutt is how I believe the social web should function in the future.  

Scuttlebutt’s fundamental difference is it is fully decentralized. Scuttlebutt is completely peer to peer, meaning there are no central servers that you connect to, and no one manages or controls the network. You don’t use a website to view Scuttlebutt, instead you download a client to your computer. When you use a client, like Patchwork, it talks directly to your friends over the internet. When you make a post it gets sent to all your friends, so they have a local copy of it. If a friend comes online while you’re offline, their client will automatically download your post/s from your mutual friends. Messages can spread between people constantly without everyone always needing to be online, just like the real world. 

Patchwork Screenshot
Patchwork – A Scuttlebutt client

When you download Patchwork and run it on your PC it’s initially empty, because you don’t know anyone and don’t know how to connect to anyone. You’ll notice you only need to enter a name, picture and description, there is no signup form. Why? Because Scuttlebutt has no central service to register with. You can be anyone you like, and no one can tell you otherwise. Instead of having a registration service Scuttlebutt creates a private key on your computer. This key is used to prove you are who you say you are to your friends, so that no one can impersonate you, and it’s controlled by you alone. 

To begin you should connect to a “pub” with an invite code. A “pub” is a super-friend on the Scuttlebutt network who makes friends with everyone. Pubs are just like normal users except that they’re almost always online, identify as pubs, and will friend you automatically when you redeem an invite code. After you redeem an invite you become friends and can start downloading information about its other friends, their friends, and those people’s friends (3 degrees of separation). These pub servers are mostly run by Scuttlebutt developers. Connecting to a pub doesn’t restrict your network in any way, as they are just super-friends, not central servers. 

While connecting to a pub isn’t required, until you have a few friends it’s worthwhile friending one. For one, pubs are almost always online, so whenever you come online you get all the latest gossip, instead of having to wait for friends to login. Second, pubs can help you discover more people, as you can communicate with anyone up to 6 degrees of separation away (3 degrees in each direction), and pubs are connected to other pubs, so they connect you to the whole Scuttlebutt universe.

Once you’ve downloaded the local gossip from the pub, you’ll see you now have a social feed in Patchwork. This feed is comprised of everything your friends are up to (of which you have 1 right now, the pub) and everything their friends are up to (2 degrees out). Though your client has information about people 3 degrees out for network redundancy purposes, you don’t see them in your feed by default. You can see them under the “extended network” menu option in Patchwork. So now you are connected to all these random people, what do you do? First I’d recommend checking out some of the hashtags/topics which you can see on the left, and subscribe to some that you find interesting. Once you’re subscribed to some topics you’ll see every post from everyone you know about that includes that hashtag.

 You can then follow others who have similar interests to you and post anything you like to the network. Have fun out there! If you want to follow me my ID is: @Py8stqMfjhdc4Ln92R4Lg+3jITszP94G3P5BNuH+lWY=.ed25519 

Categories
vision

Why Decentralization

For the longest time humanity was decentralized. We had small communities of people who knew each other, maybe they had a king far away, but they didn’t really have anyone telling them how to live their lives, they were free to do what they want.

Along came the era of industrialization and some people discovered a thing called “economies of scale”. By building companies to control many people at once you could extract more value than anyone else.

Eventually social media happened and we were all so used to companies ruling our lives that we happily joined a world with all our friends, blissfully unaware of how much power the owner of this world was accruing.

Along comes the 2010’s and people start to realize they’ve been had. The fun happy social place they signed up to is actually ruled by a dictator and he’s started selling their data, changing the product to grow profits instead of individual happiness, and attempting to addict them every step of the way.

Eventually it comes to a breaking point and people are fed up. They join a new social network, run by a new smaller company that promises to do better and be better. This company becomes more profit-centric and exploitative over time, and the cycle continues. Alternatively they drop out of social media completely, keeping their lives almost as private as before the internet.

What if we could have the fun of a globally connected internet, without all the corporate control, exploitation, and addiction that goes along with it?

What if there was a social client that connected you directly to your friends, without any middlemen, so you can chat, share photos, play games and more, and that experience is yours alone? There are no ads, no addictive intrusions, no timeline sorted to be maximally good for the company. 

Furthermore this social network is curated by you. You only see what you want to see, interact with those you care about, and can be anyone you want to be. Why do we have to link our social profile to our real identity anyway? Why can’t we be whoever we want to be in our social world?

What if you weren’t locked into just one social client, you could choose from hundreds? And they all worked on the same network seamlessly, so you and your friends could use different applications and still be together?

That’s the promise of a decentralized world, a beautiful magical place that you can tweak and change to your liking. A place that reflects your unique personality and outlook on life instead of being forced into a box with all the other humans.

This is the world I’d like to explore and build, together, over the next decade. Because we can’t leave the future of the internet (and the world) in the hands of so few. 

This blog isn’t building a product and there’s nothing for sale here. It’s aim is to explore a decentralized world that could (and should!) exist, see the technologies that can make it happen today, and solve the problems that crop up along the way. 

This world I describe has been partially built already! By a project called Scuttlebutt, and the Social Client that runs on it: Patchwork. You can start using them today. I’ll be explaining these in more depth along with other decentralization technologies over the coming months.