NebulousLabs/Sia — pull request #187 by lukechampine (2014-08-08 16:55:17+00:00)
Title: Make Sia go-gettable

The Golang blog has [this to say](http://blog.golang.org/organizing-go-code) about project organization:

>Import paths should be globally unique, so use the path of your source repository as its base. For instance, the websocket package from the go.net sub-repository has an import path of "code.google.com/p/go.net/websocket". The Go project owns the path "code.google.com/p/go", so that path cannot be used by another author for a different package. Because the repository URL and import path are one and the same, the go get command can fetch and install the package automatically.
>Sometimes people set GOPATH to the root of their source repository and put their packages in directories relative to the repository root, such as "src/my/package". On one hand, this keeps the import paths short ("my/package" instead of "github.com/me/project/my/package"), but on the other it breaks go get and forces users to re-set their GOPATH to use the package. Don't do this.

Well...we were doing that. (But it's okay, we can blame Colin.) This PR changes the project's directory structure to one that is go-gettable. Ideally, this would mean that users could just run `go get -u github.com/NebulousLabs/Sia` and the project would be automatically downloaded and installed. Unfortunately, our use of submodules (specifically longhair) means that we still require a Makefile.

Nevertheless, using the standard directory structure makes it much easier for others to install and work with our libraries. It gives us a fully-specified import path, so no one needs to fuss with their $GOPATH to make things work.