w3c / trace-context-protocols-registry

Trace Context Protocols Registry
https://w3c.github.io/trace-context-protocols-registry/
0 stars 4 forks source link

Additional Protocol Support #4

Open jkowall opened 7 years ago

jkowall commented 7 years ago

Today's OSS tracing systems are focused on http, the typical enterprise has a lot of other protocols which are critical to the application. Some examples include:

wu-sheng commented 7 years ago

We can discuss them when we have settled the HTTP.

objectiser commented 6 years ago

Although we may want to deal with HTTP first, I think it would be good to structure the report on the basis of defining the "core" concepts first (i.e. three header types), and then protocol bindings separately (initially just HTTP) but would then be easy to extend later. This is the way other w3c specs seem to work.

SergeyKanzhelev commented 6 years ago

@objectiser I started this overview https://github.com/w3c/distributed-tracing/blob/master/abstract/overview.md Is it what you suggesting?

objectiser commented 6 years ago

@SergeyKanzhelev No, I was meaning that the report structure should discuss the three types of information (headers) initial independently of HTTP - so just describe their purpose and the structure of the value. Then in separate section describe the bindings - with initially just one section for the HTTP binding, where actual header names and encoding can be described. So any protocol specific details are dealt with separately.

codefromthecrypt commented 6 years ago

I do see value in discussing concepts separately, but as there's a lot about encoding here, I don't expect a clear separation to survive towards open-ended protocols, especially knowing what we know about binary encoding. I'd recommend we refactor later as it is more honest with the state of affairs we can describe.

Many efforts cite open-endedness, but without mechanics to achieve that. Let's not get bogged down or hint that solving http solves anything else in the same way. If we must break navigation by splitting into parts, which people will need to scroll up and down to get to, let's make it count.. like have that happen when there are multiple encodings defined.

my 2p

codefromthecrypt commented 6 years ago

Adds an associated discussion from Brave, as JMS (a java messaging api) has some constraints that affect propagation portability https://github.com/openzipkin/brave/issues/584

SergeyKanzhelev commented 5 years ago

Some finding after writing specs for binary, AMQP and MQTT protocols. Two big ones:

Charset of tracestate value

HTTP-imposed limitation on character set of the opaque value of tracestate value doesn't may not be an issue for other protocols, which generally support UTF-8 charset. This potentially may lead to various issues like one may assume UTF-8 charset for messaging protocol and will assume something like urlencoding will be applied to non-ASCII characters. However specification operates with opaque values and does not assume any encoding. So value may be simply dropped by implementation.

One of the way to solve it is in fact suggest some encoding mechanism specifically for HTTP protocol. This will, however, complicate implementations and is hard to test in existing test harness (it only supports binary now).

Parsing of tracestate

Binary protocol and AMQP benefits from having a list of tracestate values, not simply treating it as a string. However, this format adds a requirement for every implementation to have a parsing logic for the tracestate implemented. Even if implementation simply wants to forward it from HTTP to GRPC or AMQP.

nrktkt commented 4 years ago

Over on the JSON-RPC mailing list we've been talking about creating a trace context for JSON-RPC. Is there a way we can get a repo under the w3c org (w3c/trace-context-json-rpc) to start drafting? Please let me know if there's another, better place to discuss.

SergeyKanzhelev commented 4 years ago

@kag0 if you want to host it someplace else - you can follow this example: https://github.com/w3c/trace-context-protocols-registry/pull/11

Having spec under w3c org may create unnecessary overhead for you, but if needed I believe it can be done. @caribouW3 any objections?

nrktkt commented 4 years ago

@SergeyKanzhelev we'd prefer the formality of having it as a w3c spec, but open to alternate directions as we progress.

SergeyKanzhelev commented 4 years ago

@kag0 added to the agenda of the next meeting: https://docs.google.com/document/d/12AAIbnkt_AH1YjZwUwxirX_7WA7aWOSXpDweCgfqIiQ/edit#heading=h.g9nd8akmp2p2 Next meeting on calendar is Dec 1st.

My understanding is that nothing should prevent us from having this repository. I believe contributors/editors for the spec must be in w3c org which may be a blocker for some people to participate (just something to consider).

nrktkt commented 4 years ago

Yes that might be a bit of a blocker. @AArnott and I are the two people working on it, and neither of us are in w3c. So one or both of us would need to join w3c if we wanted to author content for the spec? ie. we can't open PRs and have someone inside the org merge them?

AArnott commented 4 years ago

How do we join the w3c?

caribouW3 commented 4 years ago

@AArnott your company is already a W3C Member, you only need the Advisory Committee representative of the company to join the group and nominate you as a participant. After that you can contribute to the group's work (this is for securing the licensing/patent commitments)

It is also possible to use the W3C submission process https://www.w3.org/2020/Process-20200915/#Submission

AArnott commented 3 years ago

I haven't had any luck finding who at Microsoft is an Advisory Committee rep. You wouldn't happen to have a list of those, would you?

caribouW3 commented 3 years ago

First you need to create a W3C account https://www.w3.org/accounts/request, affiliated to Microsoft. Then ask @travisleithead (AC rep)

flx5 commented 1 year ago

Would it make sense to add SOAP to the List? Or is one supposed to instrument the underlying protocol (http for example)?