PLAN
P.rivacy
L.ogistics
A.ccessibility
P L A N.etworks
PLAN is a free and open platform for groups to securely communicate, collaborate, and coordinate projects and activities.
About
This repo contains PLAN's backend infrastructure that ultimately hosts plan-client-unity instances on client-facing devices. Since PLAN uses open standards, protocols, and data structures, other implementations may someday also exist, so plan-go
is offered as the reference implementation.
The PLAN Design Docs lay out PLAN's architecture in detail.
Links
Team Lead | Drew O'Meara |
Design & Engineering Docs | https://github.com/plan-systems/design-docs |
PLAN Website | http://plan-systems.org |
License | GPL-v3 |
Developer Setup
This library uses protobuf definitions found in the plan-protobufs repo. The *.pb.go
source code files generated from those protobuf definitions has been vendored into this repository at the appropriate subpackage location. This means that if you are consuming this library for use in another application, you can simply:
go get github.com/plan-systems/plan-go
If you are contributing new features to plan-go
, you may end up needing to update the generated *.pb.go
source. To do that, you'll need to do the following:
-
Set up Gprc.Tools:
-
Download the latest Grpc.Tools nuget package
curl -Lso "grpc.tools.1.22.0.nupkg" \ "https://www.nuget.org/api/v2/package/Grpc.Tools/1.22.0"
-
Unzip the nuget pkg zip file using unzip.
Don't use macOS's default unarchiver since it does not restore
.nupkg
filenames properly. Instead:unzip grpc.tools.1.22.0.nupkg -d Grpc.Tools
-
Copy the binary appropriate for your platform to somewhere on your
$PATH
and give it executable permissions:cp ./Grpc.Tools/tools/macosx_x64/protoc /usr/local/bin cp ./Grpc.Tools/tools/linux_x64/protoc /usr/local/bin cp ./Grpc.Tools/tools/windows_x64/protoc /usr/local/bin chmod +x /usr/local/bin/protoc
-
-
Ensure your
$PATH
contains your$GOPATH
'sbin
directory:# if you have GOPATH set: PATH="${PATH}:${GOPATH}/bin" # if you don't have GOPATH set: PATH="${PATH}:~/go/bin"
-
Install gogo protobufs:
go get -u github.com/gogo/protobuf/protoc-gen-gofast
-
Install gRPC:
go get -u google.golang.org/grpc
-
Invoke the build scripts, giving it the path to the protobufs files and this repo. Then commit the changes:
./build-protobufs.sh --protos ../plan-protobufs/pkg --dest . git add . git commit -m "updated protobufs from v1.2.3"
-
Pick up your lambo.