On Fri, Jan 31, 2025 at 10:07 PM Junio C Hamano <gitster@xxxxxxxxx> wrote: > > Christian Couder <christian.couder@xxxxxxxxx> writes: > > > By the way, if we put the OS information in the "agent" capability, > > how do we separate it from the existing "package/version" content and > > make it easy to parse? > > Do NOT parse, period. > > If three "things" that talk the Git protocol on the other end of the > connection gives "Linux git/2.48.0", and "macOS libgit2/1.9.0", and > "Windows git/2.47.1" as their (enhanced) "agent" strings, there is > no "ah, this one is 1.9.0 which way older than 2.47.1 so it must be > missing features X and Y" the users of the information are allowed > to infer. > > Just take it as a single opaque string, and group identical ones. > > In the above scenario, we found three different kinds now. Maybe > we'll accumulate the counts and notice that there are N times as > many connections whose agent string begins with "Windows" as "Linux" > and "macOS" combined or something. That would be an offline > analysis, and forcing users to do the stats offline would reduce the > temptation to use it for purposes other than its intended one. > > You may find "ImNotTellingYou" and may wonder what OS the user is > really using, but they do not want to tell you, so you honor their > wish. While the current implementation allows user to specify this form of string i.e "ImNotTellingYou", for agent value, it is not mentioned in the docs, I will add in the next iteration. > > > I don't see a good solution because > > GIT_USER_AGENT could be used, and the config option to not show the OS > > name could be used too. > > That is a good privacy measure. > > > Also we don't know what could be in the "version" part. The doc says > > that the agent part is typically of the form "package/version" but > > doesn't require it. > > Exactly. I would think it is a feature, and the way to treat the > string in line with the philosophy behind that feature is to take it > as a single opaque thing. > >