50 comments

[ 2.5 ms ] story [ 118 ms ] thread
Would be interesting to see whether it could be turned in to an anarchy, removing all references to the democratic process, and allowing all pr's to be merged.
it can, as long as you can get that pr approved
Wouldn't take long before someone takes absolute power after that.
Anarchy is not the absence of democratic process, more like the opposite.
Just like a real democracy, some participants are more equal than others.
Looks like there's a revolution going on already https://github.com/chaosbot/chaos/pull/42
The pull request for equal voting weights just got accepted!
I don't see this as a good thing for an online democracy, since people can make alternate accounts very very very easily.
There's an age requirement to vote.
But how does this work in practice? I could (theoretically) create 5000 github accounts and have full control over the repo in one month [1].

This means I could create a pull requests which gives my main account absolute voting rights unless other real people try to organize over 5000 accounts to vote no. While this can happen in the real world as well (just look at Turkey), it is quite hard to achieve (you first need enough people to support you that you can gain such power).

In the internet, creating accounts is pretty easy and unless github flags my accounts (which can always be circumvented), there is no real democracy just like with Bitcoin when the most determined/resourceful person has the most power. That's because they either managed to create enough accounts, or in bitcoins case, have custom hardware to control the creation of bitcoins as well as (almost) all transactions.

While the idea is pretty interesting to do that automatically, a better approach IMO is to have humans decide what to implement and what not because humans tend to be able to spot fake votes when there is no meaningful discussion why something should be changed. And thanks to the wonderful nature of free software, if a maintainer starts to prioritize their own agenda over the community, the community tends to just fork the repo and do their own thing. This is the best example of democracy I have seen so far. People are able to discuses what they want to do and if they fell their interests are no longer supported, they can just do their own and bring other over if they feel the same way.

[1]: the current minimum age is 1 month according to https://github.com/chaosbot/chaos/blob/master/settings.py#L3...

(comment deleted)
> While the idea is pretty interesting to do that automatically, a better approach IMO is to have humans decide what to implement and what not because humans tend to be able to spot fake votes when there is no meaningful discussion why something should be changed.

Well, this is an experiment.

But if you think you have a better way of having a democratic piece of software, you're welcome to open a PR!

For instance, you could add a veto power - any account of a certain age can vote, but if enough accounts weighted socially react with, e.g., the "Hooray" emoticon, that counts as a veto, and the PR could be closed.

I'm just gunna call this right now, and HN is probably going to downvote this but I only see this ending one way. Its going to end up being a bot that plays pokemon blue a la twitch plays pokemon.
What you are describing is called a Sybil attack. This voting scheme is super broken against Sybil attacks.
You could also create your own repo on Github and not destroy something else.
That what all good governing systems are based on. Hoping nobody does anything mean.
That's not the point. You do not design your server in a way that it is easily hackable because people can just set up their own server and not destroy something else.

I wish we lived in a word where that is not necessary and all human beings work together instead of against each other. But we do not live in such a world. Creating valid thread models and pointing out disatantages of systems that malicious parties will exploit is therefor necessary.

(comment deleted)
Thank you Nostradamus. it already happened.
Can't seem to reply any deeper so I'll reply here.

Let's just create 5000 accounts, have them all follow each other, then wait a month. Same outcome with basically the same amount of effort.

Then elect yourself as a dictator. Experiment successful.
The electoral college in this case is even less democratic, since user more Github-famous are worth more.
Just like in a real airport, some passengers are more random than others :)
Also in a more abstract sense, such as voter blocs and political strongholds...
I wonder if any of these experiments support variations. Like different thresholds for different classes of decisions. Simple majority, super majority, consensus (Roman evaluation), etc.

Rate of change matters. Sometimes you want fast (the intent of the US House of Representatives), sometimes slow (amending the USA Constitution).

This looks very similar to https://github.com/botwillacceptanything
And the activity looks very similar to a neuron firing! This is, in a sense, THE BASIC LEARNING UNIT a.k.a. neuron. If you think about the way water flows through a river (the water KEEPS ERODING THE RIVER! How can this possibly work ?!?!!?) or the way a neuron counts the "votes" from other neurons like an automatic electronic computer, you can see similarities in scale!

If you have any questions, you can send a PR to https://github.com/anythingbot/anythingbot/ or create an issue or ask in a reply here. My email is

anythingbot@anythingbot.org

And there is a video feed.

BWAA TV: Bot Will Accept Anything TV

http://anythingbot.org/video/

Has anyone tried to build a code version of Wikipedia?
Not the same thing, but Lunyr is building Wikipedia on blockchain technology: http://lunyr.com
They speak against centralization then right in their whitepaper they have:

> Lunyr may make changes to the size of the LUN pool, LUN distribution and other related matters that it believes, in its reasonable judgment, are beneficial to the LUN platform growth and development, or it considers reasonable under the circumstances. Keep in mind that any corrupt behavior would be irrational for Lunyr to do. Lunyr will be holding onto LUN and any decisions that dilute the value of LUN and devalue the knowledge base would be harmful to Lunyr.

So they say that you shouldn't use the centralized solution, but it's okay for Lunyr to maintain control because it's in it's economic interests.

Okay.

Not to mention they include ads, this just sounds like a worse version of wikipedia.

You have to say which set of programs you will run, and then you have to pick how you will describe a set of programs (since the name of a set of programs is just data).

Wikipedia lets malicious editors enter lies...these lies can be very difficult to detect so you need smart people to see them. The hope is that because it is text, people know how to read and can use critical thinking...computers on the other hand do not do this with code; they apply a set of rules that governs what can and cannot be executed; in other words, the input is either in the set of programs it will run (or not).

Now, you could allow each article to name a way of translating between...and all of a sudden we are kicking a hornet's nest of code-breakers :D :D :D

So, the short answer is...YOU COULD DO IT...but why would you want to attract the attention of people whose JOB it is to do figure out breakthroughs in code-breaking?

This gets into ZFC set theory and Tower of Babel and intelligence collection stuff. Essentially the problem is that if we want to define the boundary of what we will execute, we wind up getting marginally closer to state secrets.

And then, before you know it, somebody posted the code to crack the data-link to a drone in (redacted foreign country) and this caused the deaths of ___ soldiers.

So, you have to spend some time defining the territory before you let people wander aimlessly into danger.

How would the code version of Wikipedia work? Do you mean an encyclopedia of code snippets or code that anyone can edit that causes the hosting application to be recompiled?
There was a site called literate-programs.org (or something like that) where you could add literate programming examples. I think it's gone missing.

Luke Gorrie many years ago made a site like that just for Scheme code, which would also run the code and show the output. A page was also a module and could import from other pages. I helped a bit with the design. I've forgotten what it was called.

Later I made a couple more experiments along those lines, like https://github.com/darius/hmph, but it's undocumented and kind of weird.

programming by committee?
It may be possible to mitigate the "create 5000 dummy accounts" attack by steadily increasing the age required to vote, much like in Larry Niven's Struldbrugs Club membership.

Obviously the harshest, most stringent approach would be to block anyone whose account was created after the time of the PR merge. But this would prevent new players from participating.

You could also increase the age requirement by one day every two days, or have a logarithmically increasing requirement.

  ## Some things it could do

  * Provide some useful service to people.
  * Be malicious.
  * Recreate itself in a different programming language.
  * Break itself and die.
Hate to be pessimistic here, but I'm guessing the last option will happen fairly quickly.
At the time of writing this comment, that's only happened twice so far. See the Death Counter portion of the readme.
Interesting. I had a similar idea but for 'political policy' rather than code. Basically, a kind of social network where people work on editing a single corpus of text, making 'merge requests' and voting. It used a statistical technique called a sequential probability ratio test to work out whether a user's change should be accepted or rejected. http://brendonboshell.co.uk/voting-system/
I am the author of a similar game, called Nomyx: http://www.nomyx.net/ In Nomyx, the players can change the rules of the game, while playing it!