|
|
|
|
|
by treyd
199 days ago
|
|
FOSS projects have their constraints on time and usually not talent, like for-profit teams often are, so they should want the code they write to go farther. They've explicitly stated that they wanted to discourage building abstractions, since "abstractions are hard to learn". Concretely, this is evident in how channels and goroutines both poorly compose together, in part a result of the unsophisticated type system. It's difficult to build very generic libraries that can be leveraged as force multipliers, like the tokio-tower ecosystem does. You can do it, but it comes at performance costs or involves relying on codegen. Google's Bazel build systems are designed around reasoning about and checking-in generated code, but the standard go tooling doesn't do this well and git workflows also don't really grapple with it well. This aspect of the design is very clearly an example of internal Google processes leaking out. |
|