/ README.md
README.md
  1  <p align="center"><img src="https://raw.githubusercontent.com/status-im/crvc/master/docs/crvc.png"></p>
  2  <h1 align="center">CRVC</h1>
  3  <h2 align="center"> Cryptoeconomic Release & Version Control</h1>
  4  
  5  CRVC is an extension to [Git](https://git-scm.com) that allows for the coordination of source code and binary releases among unknown and untrusted participants.
  6  
  7  * [Introduction](#introduction)
  8    * [Purpose](#purpose)
  9    * [Features](#features)
 10    * [Who is it for?](#who-is-it-for)
 11    * [What CRVC isn't](#what-crvc-isnt)
 12    * [Where does this tool come from?](#where-does-this-tool-come-from)
 13  * [Get started](#get-started)
 14    * [Requirements](#requirements)
 15  * [Contribute](#contribute)
 16    * [As a community](#as-a-community)
 17  * [Contribute as a developer](#contribute-as-a-developer)
 18  * [Principles, vision, goals](#principles-vision-goals)
 19    * [Principles](#principles)
 20    * [Vision](#vision)
 21    * [Goals](#goals)
 22  * [Todo](#todo)
 23  * [Public Domain](#public-domain)
 24  
 25  ## Introduction
 26  
 27  CRVC aims to be secure source-control oriented software distribution method. This means you can download binaries and source code that are cryptoeconomically verified by multiple builders.
 28  
 29  CRVC encourages the use of a deterministic build process to allow multiple builders to create identical binaries. This allows multiple parties to sign the resulting binaries, creating high assurances that the binaries and tool chain were not tampered with and that the same source was used. It attempts to remove the build and distribution process as a single point of failure.
 30  
 31  CRVC is a custom `git-remote`, a helper binary and a collection of cryptoeconomic games to allow anonymous actors to trustlessly coordinate git repositories and software releases.
 32  
 33  The current idea is to treat git commit history and release binary hashes as [Schelling Points](https://en.wikipedia.org/wiki/Focal_point_(game_theory)).
 34  Git Objects are deployed on decentralized file storage (Swarm/IPFS) and are extended to provide hash of the content that is more robust than SHA1.
 35  
 36  The work is a generalization of the discussion for providing a voluntary update mechanism to Status and encourage deterministic builds , which [can be found here](https://discuss.status.im/t/self-updating-status/964).
 37  Inspired by [mango](https://github.com/axic/mango), [pando](https://github.com/pandonetwork/pando) and [Gitian](https://gitian.org).
 38  
 39  ### Purpose
 40  
 41  To allow coordination of source code and binary releases among a group of actors you don't know. 
 42  
 43  ### Features
 44  
 45  - Smart Contract Managed Git Repository
 46  - Source and Binaries are Stored on Swarm/IPFS
 47  - A set of Cryptoeconomic Games
 48  
 49  ### Who is it for?
 50  
 51  CRVC is for developers that cannot rely on access control lists (and therefore trust and unique identities) to manage their software repositories and binary releases.
 52  
 53  ### What CRVC isn't
 54  
 55   * CRVC is not a decentralized Github
 56   * CRVC is not a unique Version Control System
 57  
 58  ### Where does this tool come from?
 59  
 60  While it's my belief that the introduction of Australia's Telecommunications and Other Legislation Amendment (Assistance and Access) Act 2018 and the recent FATF Recommendations are well-intentioned, it is clear that these rules are alarming, harmful and prematurely stifle innovation, preventing us from discovering newer, more efficient ways of protecting users and upholding [human rights](http://www.un.org/en/universal-declaration-human-rights/).
 61  
 62  As a result, these actions point to a future where I or Status Research & Development GmbH may be prevented from producing & distributing binaries that do not comply with distribution channel terms of service and jurisdictional policies. CRVC is a foot in the door, it may allow for a future where future generations can create software that better upholds [human rights](http://www.un.org/en/universal-declaration-human-rights/).
 63  
 64  ## Get started
 65  
 66  `nimble build`
 67  
 68  ### Requirements
 69  
 70  - Nim 0.19 or above
 71  - Git
 72  - An Ethereum Node
 73  - IPFS/Swarm Node
 74  
 75  ## Contribute
 76  
 77  Do you want to help? That's awesome. Here are simple things you can do.
 78  
 79  ### As a community
 80  
 81  * Unlike Fight Club, the best way to help is **to actually talk about the project** as much as you can (blog post, articles, Twitter, Facebook).
 82  * You can answer questions in [the issue tracker](https://github.com/status-im/crvc/issues) to help other community members.
 83  
 84  ## Contribute as a developer
 85  
 86  * Read our [Contribution Guide](/CONTRIBUTING.md).
 87  * Install the developer version locally so you can start contributing [instructions](/docs/contribute/index.md).
 88  * Look for [issues labelled bugs](https://github.com/status-im/crvc/issues?q=is%3Aopen+is%3Aissue+label%3Abug) if you are looking to have an immediate impact on the project.
 89  * Look for [issues labelled Help wanted](https://github.com/status-im/crvc/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22) These are issues that you can solve relatively easily.
 90  * Look for [issues labelled Good first issue](https://github.com/status-im/crvc/labels/good%20first%20issue) These issues are for people who want to contribute, but try to work on a small feature first.
 91  * If you are an advanced developer, you can try to tackle [issues labelled feature requests](https://github.com/status-im/crvc/issues?q=is%3Aopen+is%3Aissue+label%3A%22feature+request%22). Beware though - they are harder to do and will require a lot of back and forth with the repository administrator in order to make sure we are going to the right direction with the product.
 92  
 93  We welcome contributions of all kinds from anyone.
 94  
 95  ## Principles, vision, goals
 96  
 97  Software are cultural artefacts, and as such I want to embed in them the ability to uphold [human rights](http://www.un.org/en/universal-declaration-human-rights/).
 98  
 99  ### Principles
100  
101  You can read [Status' Principles here](https://our.status.im/our-principles/).
102  
103  * Liberty
104  * Censorship resistance
105  * Security
106  * Privacy
107  * Transparency
108  * Openness
109  * Decentralization
110  * Inclusivity
111  * Continuance
112  * Resourcefulness
113  
114  ### Vision
115  
116  CRVC's vision is to **help people write the software of the future, even when the walls have closed in**.
117  
118  ### Goals
119  
120  - Friends don't let friends run untrusted binaries.
121  - Providing some assurance that:
122      + the binaries and build environment were not tampered with
123      + the same source code was used.
124  - Checking for updates should be passive.
125  - A user should be able to independently build and check artifacts against the respective hash of a binary.
126  - Updating should be voluntary, trust is in the eye of the beholder.
127  
128  ### Todo
129  - Contract Games
130  - Create a Git-Remote
131  - Pretty much everything
132  
133  ## Public Domain
134  
135  This software is released into the public domain to the full extent the law allows. [View CC0](/LICENSE.md).
136  (oh the irony).