blob: c1726ea1fef87a8cdce6309f13c7268d481d5927 [file] [log] [blame]
# Third-party libraries: goprotobuf and beyond
20 Apr 2010
Tags: protobuf, community
Summary: Announcing Go support for Protocol Buffers, Google's data interchange format.
OldURL: /third-party-libraries-goprotobuf-and
Andrew Gerrand
##
On March 24, Rob Pike announced [goprotobuf](http://code.google.com/p/goprotobuf/),
the Go bindings of Google's data interchange format [Protocol Buffers](http://code.google.com/apis/protocolbuffers/docs/overview.html),
called protobufs for short.
With this announcement, Go joins C++, Java,
and Python as languages providing official protobuf implementations.
This marks an important milestone in enabling the interoperability between
existing systems and those built in Go.
The goprotobuf project consists of two parts:
a 'protocol compiler plugin' that generates Go source files that,
once compiled, can access and manage protocol buffers;
and a Go package that implements run-time support for encoding (marshaling),
decoding (unmarshaling), and accessing protocol buffers.
To use goprotobuf, you first need to have both Go and [protobuf](http://code.google.com/p/protobuf/) installed.
You can then install the 'proto' package with [goinstall](https://golang.org/cmd/goinstall/):
goinstall goprotobuf.googlecode.com/hg/proto
And then install the protobuf compiler plugin:
cd $GOROOT/src/pkg/goprotobuf.googlecode.com/hg/compiler
make install
For more detail see the project's [README](http://code.google.com/p/goprotobuf/source/browse/README) file.
This is one of a growing list of third-party [Go projects](http://godashboard.appspot.com/package).
Since the announcement of goprotobuf, the X Go bindings have been spun off
from the standard library to the [x-go-binding](http://code.google.com/p/x-go-binding/) project,
and work has begun on a [Freetype](http://www.freetype.org/) port,
[freetype-go](http://code.google.com/p/freetype-go/).
Other popular third-party projects include the lightweight web framework
[web.go](http://github.com/hoisie/web.go),
and the Go GTK bindings [gtk-go](http://github.com/mattn/go-gtk).
We wish to encourage the development of other useful packages by the open source community.
If you're working on something, don't keep it to yourself - let us know
through our mailing list [golang-nuts](http://groups.google.com/group/golang-nuts).