Cells: Contribute

Contribute to the Cells Project

In order to contribute to the Cells project, you will need to login to our Gerrit Review site (https://cells-source.cs.columbia.edu/) with valid OpenID credentials such as a Google, or WordPress account.

SSH Keys

Access is granted using SSH key-pairs. You can easily generate one using the ssh-keygen program:

mkdir ~/.ssh
chmod 700 ~/.ssh
cd ~/.ssh
ssh-keygen -t rsa -C "youruser@somedomain.com"
You may also want to add the following lines to your ~/.ssh/config file (creating it if necessary):
Host cells-source.cs.columbia.edu
    User [USENAME]
    Port 2222
    Hostname cells-source.cs.columbia.edu
    PreferredAuthentications publickey
    IdentityFile ~/.ssh/id_rsa
    TCPKeepAlive yes
    IdentitiesOnly yes

Cells Gerrit Account

After establishing an account on the Cells Gerrit Review site, https://cells-source.cs.columbia.edu/, you need to setup a username and associate your SSH public key with the account. This is done through Gerrit’s web interface. Follow the prompts under the settings page.

NOTE we recommend that your username match your email username (everything before the “@” symbol). If this does not match, you may have to adjust your git configuration or set the GIT_COMMITTER_EMAIL environment variable to correctly interact with Gerrit.

Download Cells

Instead of using the public HTTPS access, you need to initialize your Cells source using the SSH protocol. The Cells Gerrit server runs an SSH server on port 2222. The commands to initialize (or re-initialize) the Cells source using SSH for Linux and OS X respectively are:
$ repo init -u ssh://[USERNAME]@cells-source.cs.columbia.edu:2222/platform/manifest -b cells-jb -g common,linux,grouper
$ repo init -u ssh://[USERNAME]@cells-source.cs.columbia.edu:2222/platform/manifest -b cells-jb -g common,darwin,grouper
Continue downloading the source:

$ repo sync

Refer to the Cells build instructions for more details.

Submit a Patch

Here are the steps required to successfully modify, test and submit a patch to the Cells project. We follow the same workflow proposed by the Android OpenSource Project.

Repo + Gerrit Workflow

  1. Use repo tool to prepare git repositories for local work, e.g.:
    $ cd kernel
    $ repo start mydevbranch .

    More generally:

    $ repo start <newbranchname> [--all | <project>...]
  2. Change files / hack / test – compile the kernel with:
    $ kbuild -j4
  3. Commit files via git:
    $ git commit -a
  4. Make additional changes / test more / hack more / test more
  5. Update the git commit:
    $ git add file-you-hacked-on.c
    $ git commit --amend

    IMPORTANT do not use git commit -a as this will automatically create a new commit object!

  6. Send your changes to Gerrit:
    $ repo upload .
  7. Possibly work on other things
  8. Modify files based on any comments / test more
  9. Update the git commit:
    $ git add file-you-hacked-on.c
    $ git commit --amend
  10. Update the Gerrit ChangeId:
    $ repo upload .

More Info

You can find a reference for the different environment scripts / functions that Cells provides here.

You can also refer to the repo commands documentation, and the Android version control cheat sheet.

Columbia University Department of Computer Science