This page describes the day-to-day aspects of working in our group. It assumes that “you” (the one reading this) is a student, researcher, or staff member of the group and “us” (the ones who wrote this) are the faculty members. Even though we created this page, you are welcome to contribute to it!
We use Slack for a catch-all IRC and IM equivalent. We don’t require you to be on Slack at all times but since many of us are on Slack, that’s usually the best way to get in touch.
We try to have a per-project channel.
We keep publicly-available software on our GitHub organization.
During the course of your studies, you will write a lot of software. Even though our overarching goal is not to be a software shop, using decent engineering principles will make everyone’s lives easier.
Please try to make your software easy to run and compile for other people. This means you should try to include build scripts with all your work. The more you use standard tools, the better. For example, if you’re creating C++ software, please make sure to include either a https://cmake.org/ script or an http://www.gnu.org/software/autoconf/autoconf.html script. At the very least, you should have a Makefile.
Learn to use git. We’ll help you. (If you’ve heard about git before and you read elsewhere that it’s terrible, the good news is that it’s not that bad. The bad news is that every other version control software is worse than git in some important way. So even if you don’t like it, we’re stuck with it).
Every project of yours should be in a git repository. This will make it easier for you to send a copy to me. It will make it easier to release your software as open source later should that make sense. Git branches will save you a lot of time when you are trying different things: you can keep different experiments in different branches and make sure that they are not stepping on each other’s toes.
It is tremendously important that you keep a web presence. Even if you participate in the standard social network websites, we will ask you to keep an up-to-date personal website. This is important because you get to control the discourse around yourself, and doing so effectively is 1) an important part of research life 2) a skill: it can be taught and learned, and learning this is part of our job.
If you want to suggest changes to this website, we welcome pull requests in the main repo.
Since we are all going to be writing a lot of software together, it makes sense to standardize on the style we use. We try to adhere to Google’s style guides whenever possible. This means, mostly that we’ll use:
Python has very good support for virtual environments: isolated deployments of Python in your hard disk which make it easy for you to keep minimal installs. If you’re using python, I strongly encourage you to always use per-project virtualenvs.
In addition, you should have per-project
requirements.txt which work
pip. Please refer to the pip documentation to see how this works.
The end goal here is that anyone should be able to clone your git repository, create a local virtual environment, and then type
pip install -r requirements.txt
Which will install everything necessary for your Python project to run.
TODO: Pick a workflow that includes a build tool and a linter.
Unless there’s a reason to choose otherwise, pick the MIT license. Also note that all the code you develop as part of your work will have the following copyright line:
Copyright 2015- Arizona Board of Regents