Coder Social home page Coder Social logo

nomic's Introduction

Github Nomic

Join the chat at https://gitter.im/mburns/nomic Build Status

This is an instance of the game Nomic driven by Github interactions:

What is Nomic

"Nomic is a game in which changing the rules is a move. In that respect it differs from almost every other game. The primary activity of Nomic is proposing changes in the rules, debating the wisdom of changing them in that way, voting on the changes, deciding what can and cannot be done afterwards, and doing it. Even this core of the game, of course, can be changed." -- Peter Suber, The Paradox of Self-Amendment

Getting Started

Gameplay consists of:

  1. Follow the existing rules. Questions can be asked via Issues.
  2. A Player proposes a rule-change to an existing (or entirely new) rule via Pull Request.
  3. Players discuss and vote on proposals, earning points in the process.

The game is won when the first user reaches +200 points or is stuck on a turn that is an impossible position and it cannot be resolved through discussion or jurisdiction within the game.

Joining the game

  1. Vote
  2. Suggests a rule-change.

Minimum rules worth knowing

Here are the basic set of rules that describe the parameters of the game. All rules are subject to change (even 'immutable' rules), as that is central to the game.

  1. Players vote on and submit rule-changes to evolve the game
  2. Disputes are resolved through Call For Judgments by choosing another Player as a nuetral arbitrator.

Ground Rules

Rule Mutable Brief Description
101 N All players must always abide by all the rules
116 N Whatever is not prohibited or regulated by a rule is permitted and unregulated

Player Actions

Rule Mutable Brief Description
309 Y Every player is an eligible voter
307 Y Each player always has exactly one vote
202 Y One turn consists of: (1) proposing one rule-change and having it voted on, and (2) adding a computed value to your score

Rule-changes

Rule Mutable Brief Description
111 N If a rule-change as proposed is unclear then the other players may suggest amendments or argue against the proposal before the vote.
104 N All rule-changes proposed in the proper way shall be voted on
205 Y An adopted rule-change takes effect the moment of the completion of the vote that adopted it.

End-game

Rule Mutable Brief Description
208 Y The winner of the Round is the first Player to achieve 200 (positive) points.
213 Y If the rules are changed so that further play is impossible, then the first player unable to complete a turn is the winner.
301 Y The nomic itself does not end and the ruleset remains unchanged.

Meta game

The Wiki and Issues are intended to be 'out of bounds' or meta-game (in so much as such a thing is possible in Nomic) and used for coordination and clarification of the game's process by Players and spectators alike.

Influences

Formatting for these documents was inspired by chef-rfc.

This repository was inspired by a Hacker News comment by ChrisAcky and follows in the footsteps of other Nomic Github games:

Copyright

All information on this site is public domain and may be distributed or copied unless otherwise specified.

nomic's People

Contributors

gitter-badger avatar jirwin avatar mburns avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

nomic's Issues

Taking turns in 'alphabetical order by surname'

Rule 201 says:

players shall alternate in alphabetical order by surname.

This doesn't map necessarily well to the event-driven nature of open discussion in Pull Requests.

Justification

A Github User that forks the repo (joins the game) but does not submit a rule-change PR would halt the progress of the game forever when it became their turn in the alphabetical ordering. This would block even a vote on a rule-change to fix the problem.

proposal: global vars

Call To Action

We need a mechanism to declare global variables that can be referred to by other rules without duplicating definitions.

We might also have uniform names for referring to the metadata.

Globals:

  • NUM_PLAYERS - number of active players (rule309)
  • NUM_ELIGIBLE number eligible voters

Per-vote:

  • NUM_QUORUM number of votes required for quorum to be reached (rule308)
  • NUM_CAST number of votes cast (rule308)
  • NUM_AGAINST number negative votes
  • NUM_FOR number positive votes (rule308)
  • AUTHOR user that submitted the rule-change proposal

bot software to track votes and score

Terms Definition
Player A Github user that has forked this repo
Vote a comment that contains `/(+
Abstain a comment that is not specifically a for/against vote (doesn't contain `/(+
Quorum >=N% of active Players having Voted. N is currently 100.

Pull Requests

When Quorum is reached,

  • tally the votes and post a comment with {total for, total against, % for, % against, winning side, etc}
    • Abstaining from a vote would be a comment from an active Player that doesn't include /(+|-)1/
  • close the PR to further comments
  • Determine points to reward Players & update SCOREBOARD.rb.
    • Users with 0 points don't need to be listed.

Add CI to Pull Requests

Github lets repositories protect branches and lock Pull Requests from being mergable until status API says everything is good. We can use this to only let a PR be merged once it is well-formatted and has enough votes to pass.

  • validate Markdown file formatting
  • non-duplicate Rule and RFJ numbers
  • metadata validation of rules/RFJ
    • filename numbers match
    • status/authorship is correct

point of order: amendments and transmutabiltiy require rule number changes

What

As I (now) read rule 108, transmuting or modifying a rule requires that we assign it a new 3xx rule number, for purposes of assigning points (and aiding in versioning the rules themselves).

Corrections

  • #12 should represent proposal 302 (failed)
  • #14 should have renumbered 105 -> 303
  • #15 should have been numbered 304 originally
  • #22 should renumber (formerly rule 105) 303 -> 305
  • #23 should renumber 201 -> 306
  • #27 should renumber 207 -> 307
  • #30 should renumber 203 -> 308
  • #31 should renumber 305 -> 309

Generate page to summarize progress

We should maintain summary pages that link to the individual files once they are merged/accepted.

  • RULES.md
    • Grab text of rule*.md between the # Rule and the next leading # or EOF.
  • SCOREBOARD.md
    • user and their corresponding score.
    • indicate win scenario (200 points)
  • JUDGMENTS.md

This should be updated every time a rule-change vote is complete.

Unanimous / Super Majority / Quorum voter turnout

Rule 105 says:

Every player is an eligible voter. Every eligible voter must participate in every vote on rule-changes.

  1. 'Untimely' votes should default to NO by default, so that inactive players don't hold up the game. The length of that time needs to be determined (30 days? 7 days?)
  2. Votes should require fewer players than 100% to reach quorum.

Justification

A Github User that forks the repo (joins the game) but does not vote or eventually becomes inactive would eventually halt progress in the game, as no votes (or turns) could complete.

Path Forward

  • amend rule 203 for required votes of eligible voters
    • static 2/3 instead of 'unanimous -> eventually 50%'
  • make rule 105 Mutable
  • make rule 105 not require unanimous voter participating #22
  • ~~pass quorum rule-change proposal #12 ~~
  • make rule 105 Immutable

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.