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]
