Development Set Up

Getting set up

Linux

You'll need a C++ compiler and the necessary supporting packages.

    sudo apt-get update && apt-get install build-essential

You'll need git for version control and bnfc from github for building parsers

    sudo apt-get install git haskell-platform cabal install jflex cup
cabal install BNFC

You'll need sbt for building the scala code. Installation instructions.

Mac

Get the Xcode C++ compiler and supporting packages from Apple. Install MacPorts and then type

    sudo port selfupdate

to get the latest software packages, then

    sudo port install hs-cabal-install

to install cabal and hackage. Install sbt.

    sudo port install sbt

Finally, install bnfc.

    cabal install BNFC

Getting the source code

Clone the rchain/Rholang and rchain/Rosette repos, then check out the working branch.

    git clone https://github.com/rchain/Rholang.git
git clone https://github.com/rchain/Rosette.git
cd Rholang
git checkout installJars
cd ../Rosette
git checkout dev

Building

Rosette

    make

Rholang

    sbt compile

Branching Strategy

 There is a master branch - current release. 

Dev Branch - next release.

Every developer makes personal branches from dev.  Create a pull request to merge with Dev.  Choose a reviewer that will approve it using their reviewer tools.  If you are a reviewer, it is your responsibility to thoroughly read all the code.  

Once approved, the developer will perform the merge into Dev.

When it is time to merge to master, Greg would like to be involved.  In future, we will schedule this discussion as part of a release cycle. 

TBD: Need to figure out cutting releases.  Medha to create a graph describing the branching and release cycles.