Here is my idea for a deprecation plan: 1. On the server side, including PromQL:
A future PromQL server should still be able to recognize classic histograms when scraped, but only to convert them to native histograms with custom buckets (NHCB). From that point on (storage, query, remote write), it shoud have no notion of classic histograms anymore. This is also a reason why I think a "reverse transparency" layer to query NHCB as if they were classic histograms is undesirable. We want to get rid of the query patterns for classic histograms. (Another reason is that it will be really hard to implement such a "reverse transparency" layer reliably.) 2. On the instrumentation side, including exposition formats: In direct instrumentation, if you need a histogram, you should default to a native histogram with a standard exponential schema (which guarantees mergeability across time and space and is compatible with OTel's eponential histogram). Only if you need custom bucket boundaries for some reason, you should use an NHCB. Generally, I think the libraries can even keep their existing API for that. If you instrument a histogram in the classic way, the API doesn't actually tell you that this will result in a classic histogram. It just asks you for the bucket boundaries, and then you call `Observe` as you do for a native histogram, too. Hence, future libraries can just expose an NHCB in that case. If you translate a histogram from a 3rd party source, you use a suitable flavor of native histograms as the translation target. In the unlikely case that the source histogram fits the exponential bucketing schema, use a regular exponential native histogram. For specific types of 3rd party histograms (e.g. DDSketch, but there are many more), we might implement additional schemas of native histograms that directly accommodate them. And finally, if nothing else fits, you do NHCB. The exposition formats of the future should be able to represent all flavors of native histograms, so that we don't need to expose classic histograms anymore. _However_, the existing Prometheus exposition formats are so ubiquitious by now, that I don't think they will ever die. For as long as technically feasible, Prometheus servers should be able to understand old exposition formats. Which circles back to the very beginning: Any Prometheus server should still understand classic histograms, but convert them into NHCB on scrape. -- Björn Rabenstein [PGP-ID] 0x851C3DA17D748D03 [email] [email protected] -- You received this message because you are subscribed to the Google Groups "Prometheus Developers" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/prometheus-developers/Zmmjs%2BQen6u7brfz%40mail.rabenste.in.

