

Facebook Go Libraries - akavel
https://github.com/facebookgo

======
tptacek
This is neat. I like that everything's packaged independently like this.

httpcontrol looks particularly handy:

[https://github.com/facebookgo/httpcontrol](https://github.com/facebookgo/httpcontrol)

------
jvehent
This is the first time I see a patent file in an open source project [1] and
now I know I won't use this until my lawiers take a look at it. Sad world...

[1]
[https://github.com/facebookgo/runcmd/blob/master/patents](https://github.com/facebookgo/runcmd/blob/master/patents)

~~~
autarch
Well, if you read the file you'd see that it's a grant of rights to use this
software regardless of any patents Facebook has that may apply to said
software.

It looks to be more or less the same as the relevant clause in the Apache 2.0
license that says "you can use our patents but if you sue us your right to use
this software is automatically revoked."

~~~
DannyBee
"Well, if you read the file you'd see that it's a grant of rights to use this
software regardless of any patents Facebook has that may apply to said
software.

It looks to be more or less the same as the relevant clause in the Apache 2.0
license that says "you can use our patents but if you sue us your right to use
this software is automatically revoked." "

It 100% is not the same as Apache.

1\. If you challenge any facebook patent's validity, at all, you lose the
right to use the software. Apache has no such clause. (This is the "(b) that
any right in any patent claim of Facebook is invalid or unenforceable.")

2\. Apache is a tit for tat clause (for lack of a better term). If you have
apache licensed software X, and sue someone about patents in X, you lose any
granted patent rights to X. You keep rights to other software.

In Facebook's wording, if you have facebook software X, and sue Facebook about
software Y, you lose granted patent rights to X.

The breadth is not the problem though. I'm perfectly fine with folks trying to
prevent others from suing them.

However, _this_ broad clause also applies to counter claims.

So if _facebook sues you_ , and you _counter claim_ , at all, you lose patents
rights to _all_ facebook software.

I actually know they have their good reasons to want to do this, but it is not
a simple "you should feel good about this" type of situation.

~~~
autarch
I was merely trying to point out that contrary to what the OP seemed to be
suggesting, this file is not a list of patents that Facebook says apply to
this code, or anything else particularly nefarious.

Also, your paraphrasing leaves out the crucial bit that you only lose your
rights _if you sue Facebook for patent infringment_. If, say, you decide to
sue Facebook because you're sick of seeing the stupid Buzzfeed articles your
so-called friends keep liking in your news feed, you can continue using their
software.

------
nahname
Looks more like Naitik Shah's open-source libraries.

~~~
csmajorfive
These were all developed on the Parse team. Naitik is a huge contributor :)

I believe we're the only ones doing using Go in production at Facebook. Join
us! [https://parse.com/about#jobs](https://parse.com/about#jobs)

~~~
harisamin
Nice. Thanks for open sourcing these libs :)

------
zeebeee
I have no idea how to evaluate this, or even tell what it is. Could someone
help me out?

I see that it's a bunch of packages, under the heading of "Facebook Go". I
assume this is something related to Google's Golang?

I click on "tool" ("Go library that wraps the go tool"). This has a README
that points to a documentation link. And that documentation says things like,
"Build the Command and return the path to the binary."

So, I guess we're talking about some kind of compiler here? A Golang compiler?
How to I get it, how do I use it, and what -- if anything -- does this whole
mess have to do with Facebook?

~~~
chc
The name of the language is Go, not Golang. This is a collection of tools and
libraries for Go that Facebook has developed. I don't see any compiler, though
one of them wraps the Go tool that is used to compile Go programs.

~~~
zeebeee
Thanks!

> This is a collection of tools and libraries for Go that Facebook has
> developed.

How did you figure that out? (And thus, in the future, how can _I_ figure it
out?)

~~~
chc
Well, I think the primary difference is that I'm a little more familiar with
Go, so I have slightly more context. Most of these say things like "Package
that provides such-and-such functions" or "Library for doing this thing".

------
Kiro
OT but I think GitHub should show tabs as 4 columns. I find Go code is hard to
read with all this whitespace.

~~~
tuxone
Or better, we should save source code files replacing tabs with spaces. That's
the best practice that makes everybody happy.

~~~
custardcream
Go uses tabs. That's the law. It's in the documentation.

Groups of spaces and tabs are semantically different. Tabs mean indentation.
Spaces mean spaces.

~~~
Artemis2
Spaces are tolerated, but the usage of tabs is very encouraged.

------
stesch
Wow, Facebook sure uses a lot of languages. PHP, Hack, C++, Erlang, OCaml, D,
Go, JavaScript, …

~~~
nuclear_eclipse
... Python, ...

------
chubot
Is there any repo of Facebook D code? I thought they were making an investment
in D. But this is a bit surprising because it seems possible that they use
more Go than D.

~~~
manacit
This is not a lot of Go - it's mostly small contained packages for doing
useful things. It was also written by the Parse team, who are the only people
using Go at FB in production[0].

0:
[https://news.ycombinator.com/item?id=8601850](https://news.ycombinator.com/item?id=8601850)

