On Fri, Jan 24, 2025 at 7:39 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > The only remaining issue from my point of view is if we really want > this as a separate and new knob with capability, or if we would be > better off to carry this kind of extra piece of information by > enhancing existing "agent" capability. Given what Web Browsers do > in their UA strings, it does feel cumbersome for analitics tools to > pay attention to two separate input sources (os-version and agent). > > Has somebody brought up any downsides of cramming the OS information > to the existing agent thing? I have not thought of any possible > downsides since I made this suggestion in a previous review of this > topic, but I may be missing something obvious, so... My opinion is that it isn't a good idea to enhance the existing "agent" capability. Yeah, it goes in the same direction as what web browsers have been doing with the User-Agent header, but I think web browsers are an especially bad example that we should strive not to follow. According to Wikipedia (https://en.wikipedia.org/wiki/User-Agent_header) the format for the User-Agent header is now "Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]", for example "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405". This is obviously very difficult to parse for everyone including analytics tools and is not very flexible either. It serves as a way to pass information about available features, but leak some privacy information in the process. The fact that it's used to pass information about available features has led to a lot of user agent spoofing which means that analytics, statistics and debugging are likely harder than they need to be. When Git developed capabilities and the "agent" capability, the doc took care of saying things that it "MUST NOT be used to programmatically assume the presence or absence of particular features". This was done to go in the direction of not passing more information through this "agent" capability but instead use separate ones. So I think we should just avoid putting other things in the "agent" capability to avoid what happened to the User-Agent header in browsers and to stay true to our original intent to have a different capability for each advertised information or feature.