git ssb

9+

mixmix / ssb-handbook



Tree: c045a88022467f16cad292ead949923a06dad274

Files: c045a88022467f16cad292ead949923a06dad274 / principles.md

10496 bytesRaw

Scuttlebutt Principles

secure-scuttlebutt is a venn diagram of the overlay between these two things:

  1. avoid hard data replication problems (single author append only log, easy to express replication state & no conflicts)
  2. need to build engaging apps with viral growth (can apply web 2.0 playbook)

It's a synergy between computer and human abilities. Computers move the data, but we levearge human filtering to solve the capital-H Hard Problem of decentralized systems: avoiding Sybil Attacks - humans are much better at detecting spam/etc than computers, and social apps have this "follow" or not decision naturally built into them.

Not that I think social apps are the most worthy, but rather that its an easy design and can be applied to a wide variety of application needs, and then hopefully this will lead to another generation of protocol development.

Subjectivity

"the meaning of an action is not the label on the button, it's how the humans use it, and how other humans react to the behavior that computers execute. buttons labeled 'like' or 'trust' do not necessarily mean that. We have to think about it like anthropologists"

Usability

I think the concept of "usability" applies at every layer in the stack, for example, nacl is a lot more usable than openssl. That means, it broadens development of crypto, and then those projects have the opportunity to be more usable in turn to their users.

Community

teaching a man to fish is the easy part, you must then teach his community how to govern a commons

@yorkshire-moose we also use it to figure out what it means to have decentralized communication medium.

Many of the concepts we have for thinking about this stuff are inadequate, for example, you asked about your "account". On a normal website, your account is just a record in a database which says if you know a password, you can post as that account. Before computers, you might have joined a club and "signed up" in the club's membership registry (a book). Because computers where first sold to military, then large corporations. Of course computers are about accounting. Keeping records about who owns what in books, or book-like systems.

In a database system, all the power is in the database. It's often called a "single source of truth". Who can do what is ultimately controlled by whoever administers the database.

Here, we have no central database to decide for us what a given action means, instead when you make a post or a 'dig' or change your picture, the other peers (or rather, the software they run) interprets that. A social consensus. Like how "blue" means what it does because we agree it does, and that agreement can also evolve. "blue" means, at least, a color, a sad feeling, and a certain type of film.

But what are the implications of a system that doesn't behave like an accounts book? Where could that go?

Just trying to understand what it means to be free.

It's true, developers do have a lot of power, and users have very little. "user" is another of these words which are problematic in this context. In terms of political empowerment, the implications of "user" is a lot like "pleb". Developers are like the landed gentry.

But, there is a natural right that users always have: they can choose whether or not to run a given piece of software. Developers often act to hamper this right, for example, when you use a website your browser always "installs" the latest version. If you download a program and run it, you can at least, keep running the old version, if there isn't an automatic update mechanism (which empowers developers again). There used to be a lot of 3rd party twitter clients, but they stopped that when they introduced advertising, having a centralized system gave them the power to do this easily. The user still has the option to quit facebook, etc, but they must either take it or leave it. It's an ultimatum.

But since secure scuttlebutt is a protocol, I can never stop someone from implementing, or choosing to use different software to interpret it. That is why I call it a "natural right" it's just there, basically a part of the universe, and you can act to hamper it, but you can never truly take it away.

But what happens if you instead act to enhance that natural right? If you make it easier for users to choose their interpretation of reality, and harder for developers to impose ultimatums?

Developers get their power from users choosing their software, so if users have more freedom to choose, it will force developers to make better software. To create software that helps users live better lives, instead of herding them like cattle into advertising-milking sheds.

But of course, to do that, we actually have to rethink a bunch of stuff.

Ultimately, the question is, if we make a better system, will it win?

"but remember, the value of the internet is ultimately that it's a network of people"

Dogfood

When it comes to emergency survival situations, it helps a lot if your survival equipment is also the equipment that you use every day. Then you know it works, is maintained, and you know how to use it!

always be rewriting everything

no, not sure. It's just a plan to get something working, so that we can build on that then explore further.

Modular

I think there is a sliding scale here. to build a p2p system currently you must understand crypto and distributed systems. That is much harder than plain web development. And then easier still is configuring drupal or wordpress. You can still make a hell of a lot with drupal, just by enabling/disabling/configuring modules. This is a pattern that has been demonstrated to be successful in practice.

The Ikea Architecture

What is interesting about well designed but cheaply made flat pack furniture? The way that they manage the distinction between essential elements of their design, and arbitary elements of their design.

As is obvious to anyone who has assembled an ikea product, they are mostly made from MDF. But that is only half the story. MDF is used for the arbitary part of the design, this season it might look like this, next season, like that. The machinery that cuts out the MDF can cut of any shape (and it's mostly rectangles anyway) so they can iterate on that those aspects of the design as fashion dictates or simply for the sheer hell of it.

But there is one thing that doesn't change. _The Hinges incorporate the part of the design that is "objective". Not only are the hinges solidly constructed (probably rated for a much heavier door than your little warddrobe) but they are adjustable in 3 dimensions, this means that if the MDF parts don't fit exactly, or if your floor is crooked and your shelf warps, the hinge can just be adjusted so that the door still closes nicely.

Handcrafted solid wood furniture would put a lot of effort into making the body of wardrobe solid and sturdy, and could then simple "butt" hinges
But this furniture must be assembled by an expert craftsperson, and cannot be shipped flat.

The Ikea Architecture separates engineering from design. This means that designers don't need to think hard about engineering problems and can simply focus on what customers want to buy.


Obviously I am actually talking about software. Specifically, about User Applications. This does not apply to developer tools, because that is nearly entirely engineering. but if you looked at user software, it's mostly mdf, or at least it should be.

Tests to check if you have achive Ikea Architecture:

  • can designers easily break your system (fail)
  • is it easy to repurpose your work into something different (win)
  • are the hard parts useful for other things? (win)

When we talk about "modular user interfaces" I think it's misleading, because the things you actually see and touch in a user interface is mostly MDF. there may be a lot of code there, but it isn't interesting. If it is interesting, that is a bad sign that means it should be moved out to a place where it can be solved in isolation, you need to put much more effort into a part that will be reused (it must be reused, to justify that effort)

So I think what we really need, if we want "modular user interfaces" is some quality Hinges, and an easy way of dealing with the MDF.

Uncapturable

Q: is the npm registry still open source? A: no. npm, inc is now intergalactic feudal empire

https://github.com/npm/registry/issues/41

he who controls the spice controls the universe

@rabble just gave a very interesting talk at opensourceopensociety here in wellington.

largely, it was about how twitter started out as an open platform, and then look a right turn and closed up - but what I didn't know, is that this was actually a reaction to an attempted hostile takeover. Basically, A there was a VC would tried to acquire all the independent twitter clients, and then have them also push to another service, shifting the data out of twitter.com's hand.

This was the first I have heard about this, though, but it certainly gives us a more concrete threat model. Since we are basically trying to take the road that twitter didn't.

Built with git-ssb-web