7af23e1dde
Please refer to #2694 and #2670 for motivation and reasoning for this change. I've tried to follow best practice in inserting the copyright headers. In other open source projects, not all files carry the notice. For example documentation doesn't. I've followed similar ground rules. I did not change the php because there is a separate LICENSE file there by Pixel Federation. We'll first need to notify them our intent before changing anything there. As for the presubmit check, it's going to be non-trivial because of the number of exceptions, like file types, directories and generated code. So, it will have to be a separate project. |
||
---|---|---|
.. | ||
README.md | ||
automation.proto | ||
automationservice.proto | ||
binlogdata.proto | ||
binlogservice.proto | ||
logutil.proto | ||
mysqlctl.proto | ||
query.proto | ||
queryservice.proto | ||
replicationdata.proto | ||
tableacl.proto | ||
tabletmanagerdata.proto | ||
tabletmanagerservice.proto | ||
throttlerdata.proto | ||
throttlerservice.proto | ||
topodata.proto | ||
vschema.proto | ||
vtctldata.proto | ||
vtctlservice.proto | ||
vtgate.proto | ||
vtgateservice.proto | ||
vtrpc.proto | ||
vttest.proto | ||
vtworkerdata.proto | ||
vtworkerservice.proto | ||
workflow.proto |
README.md
Vitess Protobuf Definitions
This directory contains all Vitess protobuf definitions.
Our protobuf messages are both used as wire format (e.g. query.proto
) and for
storage (e.g. topodata.proto
).
RPC messages and service definitions are in separate files (e.g. vtgate.proto
and vtgateservice.proto
) on purpose because our internal deployment does not
use gRPC.
Style Guide
Before creating new messages or services, please make yourself familiar with the style of the existing definitions first.
Additionally, new definitions must adhere to the Google Cloud API Design Guide: https://cloud.google.com/apis/design/
Comments
We are more strict than the Design Guide on the format for comments. Similar to comments for Go types or fields, protobuf comments must start with the name. For example:
// TabletAlias is a globally unique tablet identifier.
message TabletAlias {
// cell is the cell (or datacenter) the tablet is in.
string cell = 1;
...
}
Note that the Design Guide also has the following ask:
If the field value is required, input only, output only, it must be documented at the start of the field description. By default, all fields and parameters are optional.
Here's an example which combines this ask with our stricter comments style:
// ExecuteKeyspaceIdsRequest is the payload to ExecuteKeyspaceIds.
message ExecuteKeyspaceIdsRequest {
...
// Required. keyspace to target the query to.
string keyspace = 4;
...
}
Note that most of our existing files (as of March 2017) do not have e.g.
"Required."
comments. Nonetheless, new files should follow this where
applicable.