ZackButcher opened a new issue #5266:
URL: https://github.com/apache/skywalking/issues/5266


   Please answer these questions before submitting your issue.
   
   - Why do you submit this issue?
   - [X] Question or discussion
   - [ ] Bug
   - [ ] Requirement
   - [X] Feature or performance improvement
   
   ___
   ### Requirement or improvement
   
   There has been interest in other projects integrating with SkyWalking (for 
example [Envoy](https://github.com/envoyproxy/envoy/issues/12486)) using the 
Trace Data Protocol v3 gRPC interface 
([skywalking-data-collect-protocol](https://github.com/apache/skywalking-data-collect-protocol)).
 However, today those protobufs don't have a lot of documentation on the 
individual fields, and they don't match the [usual protobuf style 
guide](https://developers.google.com/protocol-buffers/docs/style) in a few 
places.
   
   <details><summary>Here's the output of running a <a 
href="https://github.com/uber/prototool#prototool-lint";>linter</a> on the 
protobufs today:</summary>
   <pre>
   browser/BrowserPerf.proto:1:1:File name should be lower_snake_case.proto.
   browser/BrowserPerf.proto:1:1:File option "java_outer_classname" is required.
   browser/BrowserPerf.proto:1:1:File option "objc_class_prefix" is required.
   browser/BrowserPerf.proto:1:1:File option "php_namespace" is required.
   browser/BrowserPerf.proto:1:1:No package declaration found.
   browser/BrowserPerf.proto:1:1:No package declaration found.
   browser/BrowserPerf.proto:1:1:C-Style comments are not allowed.
   browser/BrowserPerf.proto:29:1:Service name "BrowserPerfService" must end 
with "API". Since it currently ends with "Service", this likely means replacing 
"Service" with "API"
   browser/BrowserPerf.proto:29:1:Expected filename to be 
"browser_perf_service.proto" for file containing service "BrowserPerfService" 
but was "BrowserPerf.proto".
   browser/BrowserPerf.proto:32:5:The name "collectPerfData" contains the 
outlawed name "data". Data is a decorator and all types on Protobuf are data, 
consider merging this information into a higher-level type, or if you must have 
such a type, Use "Info" instead..
   browser/BrowserPerf.proto:32:5:Name of request type "BrowserPerfData" should 
be "collectPerfDataRequest".
   browser/BrowserPerf.proto:32:5:Name of response type "Commands" should be 
"collectPerfDataResponse".
   browser/BrowserPerf.proto:32:5:Response type "Commands" should be defined in 
the same file as the corresponding service.
   browser/BrowserPerf.proto:32:5:RPC "collectPerfData" needs a comment with a 
complete sentence that starts on the first line of the comment.
   browser/BrowserPerf.proto:32:5:RPC name "collectPerfData" must be 
capitalized.
   browser/BrowserPerf.proto:36:5:Name of request type "BrowserErrorLog" should 
be "collectErrorLogsRequest".
   browser/BrowserPerf.proto:36:5:Name of response type "Commands" should be 
"collectErrorLogsResponse".
   browser/BrowserPerf.proto:36:5:Response type "Commands" should be defined in 
the same file as the corresponding service.
   browser/BrowserPerf.proto:36:5:Message "Commands" is already used as a 
request or response type in an RPC and all request and response types must be 
unique.
   browser/BrowserPerf.proto:36:5:RPC "collectErrorLogs" needs a comment with a 
complete sentence that starts on the first line of the comment.
   browser/BrowserPerf.proto:36:5:RPC name "collectErrorLogs" must be 
capitalized.
   browser/BrowserPerf.proto:40:1:The name "BrowserPerfData" contains the 
outlawed name "data". Data is a decorator and all types on Protobuf are data, 
consider merging this information into a higher-level type, or if you must have 
such a type, Use "Info" instead..
   browser/BrowserPerf.proto:43:5:Field name "serviceVersion" must be 
lower_snake_case.
   browser/BrowserPerf.proto:48:5:Field name "pagePath" must be 
lower_snake_case.
   browser/BrowserPerf.proto:50:5:Field name "redirectTime" must be 
lower_snake_case.
   browser/BrowserPerf.proto:51:5:Field name "dnsTime" must be lower_snake_case.
   browser/BrowserPerf.proto:52:5:Field name "reqTime" must be lower_snake_case.
   browser/BrowserPerf.proto:54:5:Field name "domAnalysisTime" must be 
lower_snake_case.
   browser/BrowserPerf.proto:55:5:Field name "domReadyTime" must be 
lower_snake_case.
   browser/BrowserPerf.proto:57:5:Field name "blankTime" must be 
lower_snake_case.
   browser/BrowserPerf.proto:62:5:Field name "uniqueId" must be 
lower_snake_case.
   browser/BrowserPerf.proto:65:5:Field name "serviceVersion" must be 
lower_snake_case.
   browser/BrowserPerf.proto:70:5:Field name "pagePath" must be 
lower_snake_case.
   browser/BrowserPerf.proto:77:5:Field name "errorUrl" must be 
lower_snake_case.
   browser/BrowserPerf.proto:79:5:Field name "firstReportedError" must be 
lower_snake_case.
   browser/BrowserPerf.proto:82:1:Enum "ErrorCategory" needs a comment with a 
complete sentence that starts on the first line of the comment.
   browser/BrowserPerf.proto:82:1:Enum "ErrorCategory" is in the same file as a 
service and should be in a separate file.
   browser/BrowserPerf.proto:83:5:Field name "ajax" must be UPPER_SNAKE_CASE.
   browser/BrowserPerf.proto:83:5:Enum field "ajax" is expected to have the 
prefix "ERROR_CATEGORY_".
   browser/BrowserPerf.proto:83:5:Zero value enum field "ajax" is expected to 
have the name "ERROR_CATEGORY_INVALID".
   browser/BrowserPerf.proto:84:5:Field name "resource" must be 
UPPER_SNAKE_CASE.
   browser/BrowserPerf.proto:84:5:Enum field "resource" is expected to have the 
prefix "ERROR_CATEGORY_".
   browser/BrowserPerf.proto:85:5:Field name "vue" must be UPPER_SNAKE_CASE.
   browser/BrowserPerf.proto:85:5:Enum field "vue" is expected to have the 
prefix "ERROR_CATEGORY_".
   browser/BrowserPerf.proto:86:5:Field name "promise" must be UPPER_SNAKE_CASE.
   browser/BrowserPerf.proto:86:5:Enum field "promise" is expected to have the 
prefix "ERROR_CATEGORY_".
   browser/BrowserPerf.proto:87:5:Field name "js" must be UPPER_SNAKE_CASE.
   browser/BrowserPerf.proto:87:5:Enum field "js" is expected to have the 
prefix "ERROR_CATEGORY_".
   browser/BrowserPerf.proto:88:5:Field name "unknown" must be UPPER_SNAKE_CASE.
   browser/BrowserPerf.proto:88:5:Enum field "unknown" is expected to have the 
prefix "ERROR_CATEGORY_".
   common/Common.proto:1:1:File name should be lower_snake_case.proto.
   common/Common.proto:1:1:File option "java_outer_classname" is required.
   common/Common.proto:1:1:File option "objc_class_prefix" is required.
   common/Common.proto:1:1:File option "php_namespace" is required.
   common/Common.proto:1:1:No package declaration found.
   common/Common.proto:1:1:No package declaration found.
   common/Common.proto:1:1:C-Style comments are not allowed.
   common/Common.proto:26:1:Message "KeyStringValuePair" needs a comment with a 
complete sentence that starts on the first line of the comment.
   common/Common.proto:31:1:Message "CPU" needs a comment with a complete 
sentence that starts on the first line of the comment.
   common/Common.proto:32:5:Field name "usagePercent" must be lower_snake_case.
   common/Common.proto:39:5:Field name "client" must be UPPER_SNAKE_CASE.
   common/Common.proto:39:5:Enum field "client" is expected to have the prefix 
"DETECT_POINT_".
   common/Common.proto:39:5:Zero value enum field "client" is expected to have 
the name "DETECT_POINT_INVALID".
   common/Common.proto:40:5:Field name "server" must be UPPER_SNAKE_CASE.
   common/Common.proto:40:5:Enum field "server" is expected to have the prefix 
"DETECT_POINT_".
   common/Common.proto:41:5:Field name "proxy" must be UPPER_SNAKE_CASE.
   common/Common.proto:41:5:Enum field "proxy" is expected to have the prefix 
"DETECT_POINT_".
   common/Common.proto:44:1:Message "Commands" needs a comment with a complete 
sentence that starts on the first line of the comment.
   common/Common.proto:48:1:Message "Command" needs a comment with a complete 
sentence that starts on the first line of the comment.
   language-agent/CLRMetric.proto:1:1:File name should be 
lower_snake_case.proto.
   language-agent/CLRMetric.proto:1:1:File option "csharp_namespace" set in 
some files in directory but not in others.
   language-agent/CLRMetric.proto:1:1:File option "go_package" set in some 
files in directory but not in others.
   language-agent/CLRMetric.proto:1:1:File option "java_outer_classname" is 
required.
   language-agent/CLRMetric.proto:1:1:File option "objc_class_prefix" is 
required.
   language-agent/CLRMetric.proto:1:1:File option "php_namespace" is required.
   language-agent/CLRMetric.proto:1:1:No package declaration found.
   language-agent/CLRMetric.proto:1:1:No package declaration found.
   language-agent/CLRMetric.proto:1:1:C-Style comments are not allowed.
   language-agent/CLRMetric.proto:28:1:Service "CLRMetricReportService" needs a 
comment with a complete sentence that starts on the first line of the comment.
   language-agent/CLRMetric.proto:28:1:Service name "CLRMetricReportService" 
must end with "API". Since it currently ends with "Service", this likely means 
replacing "Service" with "API"
   language-agent/CLRMetric.proto:28:1:Expected filename to be 
"clr_metric_report_service.proto" for file containing service 
"CLRMetricReportService" but was "CLRMetric.proto".
   language-agent/CLRMetric.proto:29:5:Name of request type 
"CLRMetricCollection" should be "collectRequest".
   language-agent/CLRMetric.proto:29:5:Name of response type "Commands" should 
be "collectResponse".
   language-agent/CLRMetric.proto:29:5:Response type "Commands" should be 
defined in the same file as the corresponding service.
   language-agent/CLRMetric.proto:29:5:RPC "collect" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/CLRMetric.proto:29:5:RPC name "collect" must be capitalized.
   language-agent/CLRMetric.proto:36:5:Field name "serviceInstance" must be 
lower_snake_case.
   language-agent/CLRMetric.proto:39:1:Message "CLRMetric" needs a comment with 
a complete sentence that starts on the first line of the comment.
   language-agent/CLRMetric.proto:39:1:Message "CLRMetric" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/CLRMetric.proto:46:1:Message "ClrGC" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/CLRMetric.proto:46:1:Message "ClrGC" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/CLRMetric.proto:47:5:Field name "Gen0CollectCount" must be 
lower_snake_case.
   language-agent/CLRMetric.proto:48:5:Field name "Gen1CollectCount" must be 
lower_snake_case.
   language-agent/CLRMetric.proto:49:5:Field name "Gen2CollectCount" must be 
lower_snake_case.
   language-agent/CLRMetric.proto:50:5:Field name "HeapMemory" must be 
lower_snake_case.
   language-agent/CLRMetric.proto:53:1:Message "ClrThread" needs a comment with 
a complete sentence that starts on the first line of the comment.
   language-agent/CLRMetric.proto:53:1:Message "ClrThread" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/CLRMetric.proto:54:5:Field name 
"AvailableCompletionPortThreads" must be lower_snake_case.
   language-agent/CLRMetric.proto:55:5:Field name "AvailableWorkerThreads" must 
be lower_snake_case.
   language-agent/CLRMetric.proto:56:5:Field name "MaxCompletionPortThreads" 
must be lower_snake_case.
   language-agent/CLRMetric.proto:57:5:Field name "MaxWorkerThreads" must be 
lower_snake_case.
   language-agent/JVMMetric.proto:1:1:File name should be 
lower_snake_case.proto.
   language-agent/JVMMetric.proto:1:1:File option "csharp_namespace" set in 
some files in directory but not in others.
   language-agent/JVMMetric.proto:1:1:File option "go_package" set in some 
files in directory but not in others.
   language-agent/JVMMetric.proto:1:1:File option "java_outer_classname" is 
required.
   language-agent/JVMMetric.proto:1:1:File option "objc_class_prefix" is 
required.
   language-agent/JVMMetric.proto:1:1:File option "php_namespace" is required.
   language-agent/JVMMetric.proto:1:1:No package declaration found.
   language-agent/JVMMetric.proto:1:1:No package declaration found.
   language-agent/JVMMetric.proto:1:1:C-Style comments are not allowed.
   language-agent/JVMMetric.proto:29:1:Service name "JVMMetricReportService" 
must end with "API". Since it currently ends with "Service", this likely means 
replacing "Service" with "API"
   language-agent/JVMMetric.proto:29:1:Expected filename to be 
"jvm_metric_report_service.proto" for file containing service 
"JVMMetricReportService" but was "JVMMetric.proto".
   language-agent/JVMMetric.proto:30:5:Name of request type 
"JVMMetricCollection" should be "collectRequest".
   language-agent/JVMMetric.proto:30:5:Name of response type "Commands" should 
be "collectResponse".
   language-agent/JVMMetric.proto:30:5:Response type "Commands" should be 
defined in the same file as the corresponding service.
   language-agent/JVMMetric.proto:30:5:RPC "collect" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/JVMMetric.proto:30:5:RPC name "collect" must be capitalized.
   language-agent/JVMMetric.proto:37:5:Field name "serviceInstance" must be 
lower_snake_case.
   language-agent/JVMMetric.proto:40:1:Message "JVMMetric" needs a comment with 
a complete sentence that starts on the first line of the comment.
   language-agent/JVMMetric.proto:40:1:Message "JVMMetric" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/JVMMetric.proto:44:14:Field name "memoryPool" must be 
lower_snake_case.
   language-agent/JVMMetric.proto:49:1:Message "Memory" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/JVMMetric.proto:49:1:Message "Memory" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/JVMMetric.proto:50:5:Field name "isHeap" must be 
lower_snake_case.
   language-agent/JVMMetric.proto:57:1:Message "MemoryPool" needs a comment 
with a complete sentence that starts on the first line of the comment.
   language-agent/JVMMetric.proto:57:1:Message "MemoryPool" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/JVMMetric.proto:65:1:Enum "PoolType" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/JVMMetric.proto:65:1:Enum "PoolType" is in the same file as a 
service and should be in a separate file.
   language-agent/JVMMetric.proto:66:5:Enum field "CODE_CACHE_USAGE" is 
expected to have the prefix "POOL_TYPE_".
   language-agent/JVMMetric.proto:66:5:Zero value enum field "CODE_CACHE_USAGE" 
is expected to have the name "POOL_TYPE_INVALID".
   language-agent/JVMMetric.proto:67:5:Enum field "NEWGEN_USAGE" is expected to 
have the prefix "POOL_TYPE_".
   language-agent/JVMMetric.proto:68:5:Enum field "OLDGEN_USAGE" is expected to 
have the prefix "POOL_TYPE_".
   language-agent/JVMMetric.proto:69:5:Enum field "SURVIVOR_USAGE" is expected 
to have the prefix "POOL_TYPE_".
   language-agent/JVMMetric.proto:70:5:Enum field "PERMGEN_USAGE" is expected 
to have the prefix "POOL_TYPE_".
   language-agent/JVMMetric.proto:71:5:Enum field "METASPACE_USAGE" is expected 
to have the prefix "POOL_TYPE_".
   language-agent/JVMMetric.proto:74:1:Message "GC" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/JVMMetric.proto:74:1:Message "GC" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/JVMMetric.proto:80:1:Enum "GCPhrase" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/JVMMetric.proto:80:1:Enum "GCPhrase" is in the same file as a 
service and should be in a separate file.
   language-agent/JVMMetric.proto:81:5:Enum field "NEW" is expected to have the 
prefix "GC_PHRASE_".
   language-agent/JVMMetric.proto:81:5:Zero value enum field "NEW" is expected 
to have the name "GC_PHRASE_INVALID".
   language-agent/JVMMetric.proto:82:5:Enum field "OLD" is expected to have the 
prefix "GC_PHRASE_".
   language-agent/JVMMetric.proto:85:1:Message "Thread" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/JVMMetric.proto:85:1:Message "Thread" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/JVMMetric.proto:86:3:Field name "liveCount" must be 
lower_snake_case.
   language-agent/JVMMetric.proto:87:3:Field name "daemonCount" must be 
lower_snake_case.
   language-agent/JVMMetric.proto:88:3:Field name "peakCount" must be 
lower_snake_case.
   language-agent/Meter.proto:1:1:File name should be lower_snake_case.proto.
   language-agent/Meter.proto:1:1:File option "csharp_namespace" set in some 
files in directory but not in others.
   language-agent/Meter.proto:1:1:File option "go_package" set in some files in 
directory but not in others.
   language-agent/Meter.proto:1:1:File option "csharp_namespace" is required.
   language-agent/Meter.proto:1:1:File option "go_package" is required.
   language-agent/Meter.proto:1:1:File option "java_outer_classname" is 
required.
   language-agent/Meter.proto:1:1:File option "objc_class_prefix" is required.
   language-agent/Meter.proto:1:1:File option "php_namespace" is required.
   language-agent/Meter.proto:1:1:No package declaration found.
   language-agent/Meter.proto:1:1:No package declaration found.
   language-agent/Meter.proto:1:1:C-Style comments are not allowed.
   language-agent/Meter.proto:26:1:Service "MeterReportService" needs a comment 
with a complete sentence that starts on the first line of the comment.
   language-agent/Meter.proto:26:1:Service name "MeterReportService" must end 
with "API". Since it currently ends with "Service", this likely means replacing 
"Service" with "API"
   language-agent/Meter.proto:26:1:Expected filename to be 
"meter_report_service.proto" for file containing service "MeterReportService" 
but was "Meter.proto".
   language-agent/Meter.proto:28:5:Name of request type "MeterData" should be 
"collectRequest".
   language-agent/Meter.proto:28:5:Name of response type "Commands" should be 
"collectResponse".
   language-agent/Meter.proto:28:5:Response type "Commands" should be defined 
in the same file as the corresponding service.
   language-agent/Meter.proto:28:5:RPC name "collect" must be capitalized.
   language-agent/Meter.proto:33:1:Message "Label" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/Meter.proto:33:1:Message "Label" is not a request or response 
of any service in this file and should be in a separate file.
   language-agent/Meter.proto:39:1:Message "MeterBucketValue" is not a request 
or response of any service in this file and should be in a separate file.
   language-agent/Meter.proto:49:1:Message "MeterSingleValue" needs a comment 
with a complete sentence that starts on the first line of the comment.
   language-agent/Meter.proto:49:1:Message "MeterSingleValue" is not a request 
or response of any service in this file and should be in a separate file.
   language-agent/Meter.proto:59:1:Message "MeterHistogram" needs a comment 
with a complete sentence that starts on the first line of the comment.
   language-agent/Meter.proto:59:1:Message "MeterHistogram" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/Meter.proto:69:1:The name "MeterData" contains the outlawed 
name "data". Data is a decorator and all types on Protobuf are data, consider 
merging this information into a higher-level type, or if you must have such a 
type, Use "Info" instead..
   language-agent/Meter.proto:72:9:Field name "singleValue" must be 
lower_snake_case.
   language-agent/Meter.proto:78:5:Field name "serviceInstance" must be 
lower_snake_case.
   language-agent/Meter.proto:83:1:Message "MeterDataCollection" needs a 
comment with a complete sentence that starts on the first line of the comment.
   language-agent/Meter.proto:83:1:The name "MeterDataCollection" contains the 
outlawed name "data". Data is a decorator and all types on Protobuf are data, 
consider merging this information into a higher-level type, or if you must have 
such a type, Use "Info" instead..
   language-agent/Meter.proto:83:1:Message "MeterDataCollection" is not a 
request or response of any service in this file and should be in a separate 
file.
   language-agent/Meter.proto:84:14:Field name "meterData" must be 
lower_snake_case.
   language-agent/Meter.proto:84:14:The name "meterData" contains the outlawed 
name "data". Data is a decorator and all types on Protobuf are data, consider 
merging this information into a higher-level type, or if you must have such a 
type, Use "Info" instead..
   language-agent/Tracing.proto:1:1:File name should be lower_snake_case.proto.
   language-agent/Tracing.proto:1:1:File option "csharp_namespace" set in some 
files in directory but not in others.
   language-agent/Tracing.proto:1:1:File option "go_package" set in some files 
in directory but not in others.
   language-agent/Tracing.proto:1:1:File option "java_outer_classname" is 
required.
   language-agent/Tracing.proto:1:1:File option "objc_class_prefix" is required.
   language-agent/Tracing.proto:1:1:File option "php_namespace" is required.
   language-agent/Tracing.proto:1:1:No package declaration found.
   language-agent/Tracing.proto:1:1:No package declaration found.
   language-agent/Tracing.proto:1:1:C-Style comments are not allowed.
   language-agent/Tracing.proto:30:1:Service name "TraceSegmentReportService" 
must end with "API". Since it currently ends with "Service", this likely means 
replacing "Service" with "API"
   language-agent/Tracing.proto:30:1:Expected filename to be 
"trace_segment_report_service.proto" for file containing service 
"TraceSegmentReportService" but was "Tracing.proto".
   language-agent/Tracing.proto:31:5:Name of request type "SegmentObject" 
should be "collectRequest".
   language-agent/Tracing.proto:31:5:Name of response type "Commands" should be 
"collectResponse".
   language-agent/Tracing.proto:31:5:Response type "Commands" should be defined 
in the same file as the corresponding service.
   language-agent/Tracing.proto:31:5:RPC "collect" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/Tracing.proto:31:5:RPC name "collect" must be capitalized.
   language-agent/Tracing.proto:42:5:Field name "traceId" must be 
lower_snake_case.
   language-agent/Tracing.proto:44:5:Field name "traceSegmentId" must be 
lower_snake_case.
   language-agent/Tracing.proto:57:5:Field name "serviceInstance" must be 
lower_snake_case.
   language-agent/Tracing.proto:62:5:Field name "isSizeLimited" must be 
lower_snake_case.
   language-agent/Tracing.proto:66:1:Message "SegmentReference" is not a 
request or response of any service in this file and should be in a separate 
file.
   language-agent/Tracing.proto:70:5:Field name "refType" must be 
lower_snake_case.
   language-agent/Tracing.proto:72:5:Field name "traceId" must be 
lower_snake_case.
   language-agent/Tracing.proto:74:5:Field name "parentTraceSegmentId" must be 
lower_snake_case.
   language-agent/Tracing.proto:76:5:Field name "parentSpanId" must be 
lower_snake_case.
   language-agent/Tracing.proto:79:5:Field name "parentService" must be 
lower_snake_case.
   language-agent/Tracing.proto:82:5:Field name "parentServiceInstance" must be 
lower_snake_case.
   language-agent/Tracing.proto:86:5:Field name "parentEndpoint" must be 
lower_snake_case.
   language-agent/Tracing.proto:92:5:Field name "networkAddressUsedAtPeer" must 
be lower_snake_case.
   language-agent/Tracing.proto:99:1:Message "SpanObject" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/Tracing.proto:102:5:Field name "spanId" must be 
lower_snake_case.
   language-agent/Tracing.proto:106:5:Field name "parentSpanId" must be 
lower_snake_case.
   language-agent/Tracing.proto:109:5:Field name "startTime" must be 
lower_snake_case.
   language-agent/Tracing.proto:112:5:Field name "endTime" must be 
lower_snake_case.
   language-agent/Tracing.proto:124:5:Field name "operationName" must be 
lower_snake_case.
   language-agent/Tracing.proto:130:5:Field name "spanType" must be 
lower_snake_case.
   language-agent/Tracing.proto:132:5:Field name "spanLayer" must be 
lower_snake_case.
   language-agent/Tracing.proto:139:5:Field name "componentId" must be 
lower_snake_case.
   language-agent/Tracing.proto:143:5:Field name "isError" must be 
lower_snake_case.
   language-agent/Tracing.proto:157:5:Field name "skipAnalysis" must be 
lower_snake_case.
   language-agent/Tracing.proto:160:1:Message "Log" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/Tracing.proto:160:1:Message "Log" is not a request or 
response of any service in this file and should be in a separate file.
   language-agent/Tracing.proto:165:14:The name "data" contains the outlawed 
name "data". Data is a decorator and all types on Protobuf are data, consider 
merging this information into a higher-level type, or if you must have such a 
type, Use "Info" instead..
   language-agent/Tracing.proto:169:1:Enum "SpanType" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/Tracing.proto:169:1:Enum "SpanType" is in the same file as a 
service and should be in a separate file.
   language-agent/Tracing.proto:171:5:Field name "Entry" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:171:5:Enum field "Entry" is expected to have 
the prefix "SPAN_TYPE_".
   language-agent/Tracing.proto:171:5:Zero value enum field "Entry" is expected 
to have the name "SPAN_TYPE_INVALID".
   language-agent/Tracing.proto:173:5:Field name "Exit" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:173:5:Enum field "Exit" is expected to have the 
prefix "SPAN_TYPE_".
   language-agent/Tracing.proto:175:5:Field name "Local" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:175:5:Enum field "Local" is expected to have 
the prefix "SPAN_TYPE_".
   language-agent/Tracing.proto:179:1:Message "ID" is not a request or response 
of any service in this file and should be in a separate file.
   language-agent/Tracing.proto:184:1:Enum "RefType" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/Tracing.proto:184:1:Enum "RefType" is in the same file as a 
service and should be in a separate file.
   language-agent/Tracing.proto:186:5:Field name "CrossProcess" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:186:5:Enum field "CrossProcess" is expected to 
have the prefix "REF_TYPE_".
   language-agent/Tracing.proto:186:5:Zero value enum field "CrossProcess" is 
expected to have the name "REF_TYPE_INVALID".
   language-agent/Tracing.proto:189:5:Field name "CrossThread" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:189:5:Enum field "CrossThread" is expected to 
have the prefix "REF_TYPE_".
   language-agent/Tracing.proto:193:1:Enum "SpanLayer" needs a comment with a 
complete sentence that starts on the first line of the comment.
   language-agent/Tracing.proto:193:1:Enum "SpanLayer" is in the same file as a 
service and should be in a separate file.
   language-agent/Tracing.proto:195:5:Field name "Unknown" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:195:5:Enum field "Unknown" is expected to have 
the prefix "SPAN_LAYER_".
   language-agent/Tracing.proto:195:5:Zero value enum field "Unknown" is 
expected to have the name "SPAN_LAYER_INVALID".
   language-agent/Tracing.proto:197:5:Field name "Database" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:197:5:Enum field "Database" is expected to have 
the prefix "SPAN_LAYER_".
   language-agent/Tracing.proto:197:5:The name "Database" contains the outlawed 
name "data". Data is a decorator and all types on Protobuf are data, consider 
merging this information into a higher-level type, or if you must have such a 
type, Use "Info" instead..
   language-agent/Tracing.proto:199:5:Field name "RPCFramework" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:199:5:Enum field "RPCFramework" is expected to 
have the prefix "SPAN_LAYER_".
   language-agent/Tracing.proto:201:5:Field name "Http" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:201:5:Enum field "Http" is expected to have the 
prefix "SPAN_LAYER_".
   language-agent/Tracing.proto:203:5:Enum field "MQ" is expected to have the 
prefix "SPAN_LAYER_".
   language-agent/Tracing.proto:205:5:Field name "Cache" must be 
UPPER_SNAKE_CASE.
   language-agent/Tracing.proto:205:5:Enum field "Cache" is expected to have 
the prefix "SPAN_LAYER_".
   management/Management.proto:1:1:File name should be lower_snake_case.proto.
   management/Management.proto:1:1:File option "java_outer_classname" is 
required.
   management/Management.proto:1:1:File option "objc_class_prefix" is required.
   management/Management.proto:1:1:File option "php_namespace" is required.
   management/Management.proto:1:1:No package declaration found.
   management/Management.proto:1:1:No package declaration found.
   management/Management.proto:1:1:C-Style comments are not allowed.
   management/Management.proto:29:1:Service name "ManagementService" must end 
with "API". Since it currently ends with "Service", this likely means replacing 
"Service" with "API"
   management/Management.proto:29:1:Expected filename to be 
"management_service.proto" for file containing service "ManagementService" but 
was "Management.proto".
   management/Management.proto:31:5:Name of request type "InstanceProperties" 
should be "reportInstancePropertiesRequest".
   management/Management.proto:31:5:Name of response type "Commands" should be 
"reportInstancePropertiesResponse".
   management/Management.proto:31:5:Response type "Commands" should be defined 
in the same file as the corresponding service.
   management/Management.proto:31:5:RPC name "reportInstanceProperties" must be 
capitalized.
   management/Management.proto:37:5:Name of request type "InstancePingPkg" 
should be "keepAliveRequest".
   management/Management.proto:37:5:Name of response type "Commands" should be 
"keepAliveResponse".
   management/Management.proto:37:5:Response type "Commands" should be defined 
in the same file as the corresponding service.
   management/Management.proto:37:5:Message "Commands" is already used as a 
request or response type in an RPC and all request and response types must be 
unique.
   management/Management.proto:37:5:RPC name "keepAlive" must be capitalized.
   management/Management.proto:44:5:Field name "serviceInstance" must be 
lower_snake_case.
   management/Management.proto:50:5:Field name "serviceInstance" must be 
lower_snake_case.
   profile/Profile.proto:1:1:File name should be lower_snake_case.proto.
   profile/Profile.proto:1:1:File option "java_outer_classname" is required.
   profile/Profile.proto:1:1:File option "objc_class_prefix" is required.
   profile/Profile.proto:1:1:File option "php_namespace" is required.
   profile/Profile.proto:1:1:No package declaration found.
   profile/Profile.proto:1:1:No package declaration found.
   profile/Profile.proto:1:1:C-Style comments are not allowed.
   profile/Profile.proto:28:1:Service "ProfileTask" needs a comment with a 
complete sentence that starts on the first line of the comment.
   profile/Profile.proto:28:1:Service name "ProfileTask" must end with "API".
   profile/Profile.proto:28:1:Expected filename to be "profile_task.proto" for 
file containing service "ProfileTask" but was "Profile.proto".
   profile/Profile.proto:31:5:Name of request type "ProfileTaskCommandQuery" 
should be "getProfileTaskCommandsRequest".
   profile/Profile.proto:31:5:Name of response type "Commands" should be 
"getProfileTaskCommandsResponse".
   profile/Profile.proto:31:5:Response type "Commands" should be defined in the 
same file as the corresponding service.
   profile/Profile.proto:31:5:RPC "getProfileTaskCommands" needs a comment with 
a complete sentence that starts on the first line of the comment.
   profile/Profile.proto:31:5:RPC name "getProfileTaskCommands" must be 
capitalized.
   profile/Profile.proto:35:5:Name of request type "ThreadSnapshot" should be 
"collectSnapshotRequest".
   profile/Profile.proto:35:5:Name of response type "Commands" should be 
"collectSnapshotResponse".
   profile/Profile.proto:35:5:Response type "Commands" should be defined in the 
same file as the corresponding service.
   profile/Profile.proto:35:5:Message "Commands" is already used as a request 
or response type in an RPC and all request and response types must be unique.
   profile/Profile.proto:35:5:RPC "collectSnapshot" needs a comment with a 
complete sentence that starts on the first line of the comment.
   profile/Profile.proto:35:5:RPC name "collectSnapshot" must be capitalized.
   profile/Profile.proto:39:5:Name of request type "ProfileTaskFinishReport" 
should be "reportTaskFinishRequest".
   profile/Profile.proto:39:5:Name of response type "Commands" should be 
"reportTaskFinishResponse".
   profile/Profile.proto:39:5:Response type "Commands" should be defined in the 
same file as the corresponding service.
   profile/Profile.proto:39:5:Message "Commands" is already used as a request 
or response type in an RPC and all request and response types must be unique.
   profile/Profile.proto:39:5:RPC "reportTaskFinish" needs a comment with a 
complete sentence that starts on the first line of the comment.
   profile/Profile.proto:39:5:RPC name "reportTaskFinish" must be capitalized.
   profile/Profile.proto:47:5:Field name "serviceInstance" must be 
lower_snake_case.
   profile/Profile.proto:50:5:Field name "lastCommandTime" must be 
lower_snake_case.
   profile/Profile.proto:56:5:Field name "taskId" must be lower_snake_case.
   profile/Profile.proto:58:5:Field name "traceSegmentId" must be 
lower_snake_case.
   profile/Profile.proto:67:1:Message "ThreadStack" needs a comment with a 
complete sentence that starts on the first line of the comment.
   profile/Profile.proto:67:1:Message "ThreadStack" is not a request or 
response of any service in this file and should be in a separate file.
   profile/Profile.proto:69:14:Field name "codeSignatures" must be 
lower_snake_case.
   profile/Profile.proto:76:5:Field name "serviceInstance" must be 
lower_snake_case.
   profile/Profile.proto:79:5:Field name "taskId" must be lower_snake_case.
   service-mesh-probe/service-mesh.proto:1:1:File name should be 
lower_snake_case.proto.
   service-mesh-probe/service-mesh.proto:1:1:File option "java_outer_classname" 
is required.
   service-mesh-probe/service-mesh.proto:1:1:File option "objc_class_prefix" is 
required.
   service-mesh-probe/service-mesh.proto:1:1:File option "php_namespace" is 
required.
   service-mesh-probe/service-mesh.proto:1:1:No package declaration found.
   service-mesh-probe/service-mesh.proto:1:1:No package declaration found.
   service-mesh-probe/service-mesh.proto:1:1:C-Style comments are not allowed.
   service-mesh-probe/service-mesh.proto:29:1:Service name 
"ServiceMeshMetricService" must end with "API". Since it currently ends with 
"Service", this likely means replacing "Service" with "API"
   service-mesh-probe/service-mesh.proto:29:1:Expected filename to be 
"service_mesh_metric_service.proto" for file containing service 
"ServiceMeshMetricService" but was "service-mesh.proto".
   service-mesh-probe/service-mesh.proto:30:5:Name of request type 
"ServiceMeshMetric" should be "collectRequest".
   service-mesh-probe/service-mesh.proto:30:5:Name of response type 
"MeshProbeDownstream" should be "collectResponse".
   service-mesh-probe/service-mesh.proto:30:5:RPC "collect" needs a comment 
with a complete sentence that starts on the first line of the comment.
   service-mesh-probe/service-mesh.proto:30:5:RPC name "collect" must be 
capitalized.
   service-mesh-probe/service-mesh.proto:37:5:Field name "startTime" must be 
lower_snake_case.
   service-mesh-probe/service-mesh.proto:40:5:Field name "endTime" must be 
lower_snake_case.
   service-mesh-probe/service-mesh.proto:41:5:Field name "sourceServiceName" 
must be lower_snake_case.
   service-mesh-probe/service-mesh.proto:42:5:Field name 
"sourceServiceInstance" must be lower_snake_case.
   service-mesh-probe/service-mesh.proto:43:5:Field name "destServiceName" must 
be lower_snake_case.
   service-mesh-probe/service-mesh.proto:44:5:Field name "destServiceInstance" 
must be lower_snake_case.
   service-mesh-probe/service-mesh.proto:47:5:Field name "responseCode" must be 
lower_snake_case.
   service-mesh-probe/service-mesh.proto:50:5:Field name "detectPoint" must be 
lower_snake_case.
   service-mesh-probe/service-mesh.proto:53:1:Enum "Protocol" needs a comment 
with a complete sentence that starts on the first line of the comment.
   service-mesh-probe/service-mesh.proto:53:1:Enum "Protocol" is in the same 
file as a service and should be in a separate file.
   service-mesh-probe/service-mesh.proto:54:5:Enum field "HTTP" is expected to 
have the prefix "PROTOCOL_".
   service-mesh-probe/service-mesh.proto:54:5:Zero value enum field "HTTP" is 
expected to have the name "PROTOCOL_INVALID".
   service-mesh-probe/service-mesh.proto:55:5:Field name "gRPC" must be 
UPPER_SNAKE_CASE.
   service-mesh-probe/service-mesh.proto:55:5:Enum field "gRPC" is expected to 
have the prefix "PROTOCOL_".
   </pre>
   </details>
   
   Cleaning up these protos and adding documentation will make it a lot easier 
for other projects to start to use SkyWalking gRPC interfaces. If the community 
is open to it, I think there's a few things we can do:
   
   - [ ] Add documentation to the protobufs. [Zipkin protobuf 
documentation](https://github.com/openzipkin/zipkin-api/blob/master/zipkin.proto)
 is a great example and I think the SkyWalking protobufs can be documented that 
well.
   - [ ] Add a protobuf linter to CI to help keep new additions in line with 
style guide
   - [ ] Incrementally update the existing protobufs to be in line with style 
guide (address all the linter issues above)
     - _some_ of these changes might be breaking for clients - I'm not 100% how 
changing the names to snake_case will affect the generated client names (this 
might be different for each language depending on its protoc plugin 
implementation).
   
   I'm already starting to work on a PR to add more documentation to the 
protobufs (though it'll take a lot more work to get them to anywhere near 
Zipkins!). If the community is behind changing the protobufs to match the style 
guide then I can follow up the docs with some PRs to start to address the 
linter complaints.
   
   /cc @wu-sheng, we spoke about this briefly - let me know what you think.


----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to