Closed
Bug 217407
Opened 22 years ago
Closed 20 years ago
User-Agent String: Need Standard for Build Info (Format for vendorComment)
Categories
(Core :: Networking: HTTP, enhancement)
Core
Networking: HTTP
Tracking
()
RESOLVED
DUPLICATE
of bug 274928
People
(Reporter: mozilla, Assigned: darin.moz)
Details
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5b) Gecko/20030826 Mozilla Firebird/0.6.1+
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.5b) Gecko/20030826 Mozilla Firebird/0.6.1+
There are different builds by different people floating around for Mozilla and
Mozilla Firebird. There needs to be an easy and standardized way to signify
whose build is being used and what special sauce that build uses (XFT, SVG,
optimizations, etc.). The logical place to put such a standardized string seems
to be in the vendorComment as per
"http://www.mozilla.org/build/revised-user-agent-strings.html".
This bug exists to come to a resolution on what such a standardized build info
string would look like.
Reproducible: Always
Steps to Reproduce:
One such format could be as simple as a link to some page describing the
particular build in detail, such as a bugzilla entry, mozilla forums post, or
someone web page.
Another format could be the person's name and a small list of abbreviations,
such as "pryan #12: GTK2 XFT SVG G7 O2". The #12 could be a reference to a
particular mozconfig or anything else to precisely identify the build made by
that builder. It could be optional.
Reporter | ||
Comment 1•22 years ago
|
||
Another format could be this:
vendorComment = builder-ID (eg. "pryan")
And then some detailed comments could be placed in a new section of
about:buildconfig.
Comment 2•22 years ago
|
||
Seeing the additional comment I have to ask is the goal here to:
- identify the build origin to end users
- identify the build origin to external servers
- identify the build capabilities to end users
- identify the build capabilities to external servers
Reporter | ||
Comment 3•22 years ago
|
||
Re: Comment #2
Seeing the additional comment I have to ask is the goal here to:
- identify the build origin to end users
- identify the build origin to external servers
- identify the build capabilities to end users
- identify the build capabilities to external servers
The goal I originally had in mind was two-fold:
1) Provide an easy way for users in the Mozilla Firebird Build Forum
(http://forums.mozillazine.org/viewforum.php?f=23) to identify exactly which
unofficial build they are using by having a standard way for builders to put
differentiating information in the User-Agent string.
2) Provide an uniform way for end users to find out precise information about a
particular build, or at least as much information as the builder wants to provide.
So, the answer to your question is
- identify the build origin to end users
- identify the build capabilities to end users
However, if there were a standard, then HTTP servers could make use of that
information too, but that was not my intent when I filed this bug.
Assignee | ||
Comment 4•22 years ago
|
||
so how many non-standard builds are there really? seems like it'd be enough to
add an identifying name in the vendor comment plus some identifying number.
(pyran:16)
where "16" would mean a particular build configuration. presumably the site
from which the build originated could provide an index mapping "16" to a list of
features.
i don't think you want to use this vendorComment to identify supported features
to websites. that is the job of things like the HTTP Accept header and other
mechanisms.
Reporter | ||
Comment 5•22 years ago
|
||
Re: Comment #4
There are actually quite a few Mozilla Firebird builds (the Mozilla Firebird
Build forums link to most of them, I'm sure), and I know there are several
Mozilla builds too.
I agree that there is no need to identify capabilities to web sites in the
vendorComment, as there are other mechanisms in place for such things.
<aside>
I should point out that there is a report
(http://forums.mozillazine.org/viewtopic.php?p=159765#159765) that the
vendorComment string borks Mozilla Firebird when it is over a certain, seemingly
short length. It should probably be a bug, now that I'm thinking about it.
</aside>
Thinking about it more, it would probably be best to leave out the mapping
number and just rely on the description provided by the builder to create a
precise mapping to the build config.
(pryan:GTK2,XFT,SVG,O2)
It would be even nicer to provide a space for a URL to the config and release
notes for that build. Perhaps there is a place in about:buildconfig to place
that URL? Or we could just rely on out-of-band information to convey the home
of the build, such as a readme in the top-level directory.
I don't like the idea of putting a URL in the User-Agent string. I do like the
idea of having the vendorComment, a URL and possibly a builder-provided detailed
description of the build in a section of about:buildconfig.
Assignee | ||
Comment 6•22 years ago
|
||
i would strongly advise against a lengthy vendorComment string. remember that
every byte you add to the UA string is an extra byte that must be sent by the
browser with every requested URL. and, that can really add up. the big issue
is that there is a cost-jump when the entire HTTP request spills over into a
second TCP packet. anyways, our UA string is already extremely bloated..
probably a good idea to not go overboard here :-/
Reporter | ||
Comment 7•22 years ago
|
||
Re: Comment #6
Good point about bandwidth usage. Why don't we go with this:
(builder-ID:builder-Config-ID)
e.g.
(pryan:16)
and then put some builder notes in about:buildconfig.
Would that be reasonable?
Comment 8•22 years ago
|
||
>(pryan:GTK2,XFT,SVG,O2)
Only SVG and mathml could be in the UA string but not the other options
(XFT, GTK2, Pentium V super optimized,..) and SVG and mathml belongs in the
requests header if we need to send this.
If you want to add your own buildname into the UA,you should append it after the
Gecko/build ID string (the Vendor ID belongs there)
BTW:I would reduce the current UA (remove the crypto strenght, remove the rv: and
also remove the 2 digits in the Build ID : 2003=03)
Assignee | ||
Comment 9•22 years ago
|
||
pyran: yes, i think that is reasonable.
matti: yeah, our UA string does suck... maybe we need another bug for trimming
those parts out. however, i suspect removing those parts is going to be pain.
Comment 10•22 years ago
|
||
> BTW:I would reduce the current UA (remove the crypto strenght, remove the rv:
> and also remove the 2 digits in the Build ID : 2003=03)
Matti, if you remove rv:, what noticable difference will be between trunk and
branch builds of same date? If you reduce year, you probably break
statistics/analysis of user browsers based on user-agent sniffing etc.
If you change anything to save several bytes, you'll probably break applications
you never heard about. There is some specification of user-agent string for
Gecko based application, so follow it as long as is possible.
Comment #7 looks good for me, but IMHO there isn't any reason (usefull for user)
to put this kind of info to user-agent string.
Reporter | ||
Comment 11•22 years ago
|
||
Re: Comment #8
"If you want to add your own buildname into the UA,you should append it after the
Gecko/build ID string (the Vendor ID belongs there)"
Yes, normally, except Mozilla Firebird is using the vendorID already (see the
User-Agent for this bug).
Re: Comment #9
Ok, so this proposal looks good then. I have some changes to make it work better:
0) The builderID and builderConfigID entry is optional and up to the vendor
(builder) in all cases.
1) We should switch from the colon format to the semi-colon format to maintain
symmetry with the mozillaComment format.
2) When the vendorID is used but not the vendorComment, as is the case with
Mozilla Firebird, then the builderID will be in the vendorComment in the form of
"(builderID; buildConfigID)". This is a workaround for the special case of
browsers like Mozilla Firebird that have used the vendorID but not the
vendorComment. If the need arises to address the case where both vendorID and
vendorComment are used, then this bug can be reopened.
3) When the vendorID field is not used, as is the case with Mozilla, then the
builderID will be in the vendorID field in the form of
"builderID/buildConfigID". This is the normal case.
4) There will be a new optional section to about:buildconfig where the builder
can make notes about this build. This section will be called the "Vendor Notes"
section of about:buildconfig. The builder/vendor can put things like a
description, a URL for the builds, the mozconfig and any other notes about
patches, optimizations, etc. Other than the name of the section, the contents
are free-form.
Re: Comment #10
"IMHO there isn't any reason (usefull for user) to put this kind of info to
user-agent string."
I see users pass around User-Agent strings to compare builds. They are
important in bugzilla, and are in fact captured automatically when a bug is
filed. They are captured automatically in some tech-help forums when posting,
and on other websites. The User-Agent string is used as a unique token to
identify a paticular build, but with so many builds out there, the current
User-Agent string is not uniquely identifying builds.
Comment 12•22 years ago
|
||
Do we really want to touch the user-agent for branding purposes? How different
would these builds be from each other that a website would need to check for a
particular brand? If we're just talking about something that can be visibly
identifiable by a human, we may just want to revisit the branding via the build
id issue that we briefly touched upon in bug 26798. Or add a vendor string to
about:buildconfig .
Comment 13•22 years ago
|
||
why is this needed? why does it need to be in the user agent?
does every site visited need to know this stuff?
is it a diagnostic?
is it a popularity indicator?
is it to help target plugins or extensions to a build?
is it to help select the right quirky content for a build?
Reporter | ||
Comment 14•22 years ago
|
||
Re: Comment #12
This isn't for branding purposes. People use the User-Agent as a unique
identifier for a build, but the User-Agent is not acting as a unique identifier
currently. Having a unique User-Agent for each build on a given day by
different people is invaluable for troubleshooting purposes. The combination of
the proposed User-Agent and notes in about:buildconfig allow a user to know
exactly where the build came from without having to spend time tracking down a
build's origin via out-of-band channels.
Re: Comment #13
"why is this needed? why does it need to be in the user agent?"
People use the User-Agent string to identify builds. We could train users to
tell the difference by placing that information in about:buildconfig, but then
this complicates the work of troubleshooters who rely on the User-Agent string
to tell exactly which build is causing the trouble (re: bugzilla, in the forums,
developers, etc.).
"does every site visited need to know this stuff?"
No, but then again, there is stuff in the User-Agent currently that sites don't
need to know (*Comments). This proposal is within the bounds of the User-Agent
Strings document at http://www.mozilla.org/build/revised-user-agent-strings.html
and merely sets a standard on which people can rely and builders can reference.
"is it a diagnostic?"
Yes.
"is it a popularity indicator?"
No, but it would end up being shown in statistics for web server logs and may
prove useful in the future.
"is it to help target plugins or extensions to a build?"
No.
"is it to help select the right quirky content for a build?"
No.
Comment 15•22 years ago
|
||
IMHO, this should be in <about:buildconfig>, not user agent, and if the user
doesn't know where the build came from, then he shouldn't be running it and even
less so play a beta-tester.
BTW: Firebird's UA is off. "Firebird" is not the vendor.
(And what's that second "Mozilla" in there? Is that supposed to be
Gecko->Mozilla->Firebird? Or "Mozilla Firebird", Version 0.6.1? The latter would
be malformed per HTTP spec.)
Reporter | ||
Comment 16•22 years ago
|
||
Re: Comment #15
I agree with you about Mozilla Firebird's User-Agent being non-compliant.
The User-Agent needs to be unique over different builds for the same day.
People and websites, including bugzilla.mozilla.org, rely on the User-Agent
being unique. People who use Mozilla aren't always the ones who installed it on
their machines, or did so long enough ago to have forgotten where they grabbed
it. There needs to be a differentiating string in the User-Agent, as per
http://www.mozilla.org/build/revised-user-agent-strings.html.
Not only that, having a unique User-Agent makes troubleshooting easier, opening
the door for more testers and reducing the workload on people reviewing bugs and
other troubleshooters.
It is not a good idea to turn users away when it would be so easy to include
them in the QA process.
Assignee | ||
Comment 17•22 years ago
|
||
According to the UA spec, vendorProductToken is a "product [token] for
applications based on Mozilla." I'd argue that Firebird falls into this
category. It does not have to be the name of the vendor responsible for the
product. That said, I think "Mozilla Firebird/0.6.1" should be shorted to
"Firebird/0.6.1" or at least we should remove the space between "Mozilla" and
"Firebird."
Comment 18•22 years ago
|
||
> According to the UA spec, vendorProductToken is a "product [token] for
> applications based on Mozilla." I'd argue that Firebird falls into this
> category.
I'd argue that the description in the "spec" is unfortunate. :-) "vendor" makes
the intent quite clear IMHO, and Firebird is not a vendor version. What do I do,
if I create a vendor version based on Firebird? That's quite likely, if Firebird
will be the default mozilla.org product.
I wonder, if we're getting offtopic, though.
Reporter | ||
Comment 19•22 years ago
|
||
Non-compliant Mozilla Firebird User-Agent (space in VendorProductToken) -> bug
217529.
Reporter | ||
Comment 20•22 years ago
|
||
Re: Comment #17
http://www.mozilla.org/build/revised-user-agent-strings.html allows for multiple
VendorProductToken|VendorComment entries.
"MozillaProductToken (MozillaComment) GeckoProductToken
*(VendorProductToken|VendorComment)"
Comment 21•22 years ago
|
||
> The User-Agent needs to be unique over different builds for the same day.
Oh, no it doesn't! The user agent is NOT for users, the user agent identifies
the user's software to web servers. Do servers care about the difference between
IE and Mozilla? Certainly. Between Mozilla and Gecko-based Galeon or Firebird?
Mostly not because they work the same, though people are always curious so it
can't hurt to distinguish if it doesn't cost much.
When we first came up with the current compromise user agent we argued over the
resolution of the Gecko token and agreed that resolution of one day is workable.
There was a contingent that thought anything more fine-grained than milestone
releases was a perversion of the UA intent, and another camp who wanted to use
the full build string down to the hour. Turns out our own servers (bugzilla,
primarily) benefit from date granularity on occassion so we went with that.
The current UA is ugly, and if we were starting the UA from scratch there's a
lot we could do differently. Even at the beginning of the Mozilla project,
though, there were things we wanted to do different but were locked in by server
expectation and that's only more true now. We can do anything we want, but
aesthetic changes will come at a real-world-usability cost. We need to be very
careful and conservative in changing the content and structure of the UA.
When we invented the "vendor" token we were mainly thinking of re-branded
Mozilla appsuites (that is, Netscape), but also non-Mozilla Gecko-derivatives
like Galeon, K-meleon, and, we hoped, AOL. Note that "Netscape" is not just
Mozilla built by someone else, it is a separate product with a different name
and partially different features. Although at the time we didn't consider that
mozilla.org would ship multiple Gecko-based products, Firebird, Thunderbird, et
al fit reasonably well with the intent of the "vendor" field. You could come up
with a different scheme such as putting "Firebird" in the Mozilla or Gecko
comment fields, but since it's versioned it fits pretty nicely as a standard
product token.
If you need to designate the builder of the Firebird product then you could use
the vendor comment field. Netscape's "Browser Distribution Project" allows
people to ship modified (including re-branded) versions of Netscape, but
requires that the modified builds be identified in the vendor comment. For
example, Netscape/7.1 (CK-SillyDog), where "CK-" is a fixed string probably
standing for "Customization Kit" or something.
If someone is building a Firebird modified enough to be a new product then it
should probably not be called Firdbird in the vendor token. If it's official
Firebird source built by Joe Schmoe with zero modifications there's no need to
identify that in the user agent -- it's of no interest to servers. Users may
want to know, but there are better mechanisms than the user agent that gets sent
with every HTTP transaction. The about: page comes to mind. about:buildconfig if
you like, but that's pretty geeky if you expect users, as opposed to testers, to
care. If there's some statistical good that comes from putting the builder in
the vendor comment it would not be wrong to do, but remember the user agent is
for servers, not for users.
"Mozilla<space>Firebird" is wrong as has been pointed out: that would be a
versionless second Mozilla product token followed by a separate Firebird product
token. Since the beginning of the UA identifies it as "Mozilla" plain Firebird
seems OK to me and would fit in with the RFC's pleas for brevity. But if we're
still having fights with the DB people then you need a product token that does
not contain control characters or any of the following:
tspecials = "(" | ")" | "<" | ">" | "@"
| "," | ";" | ":" | "\" | <">
| "/" | "[" | "]" | "?" | "="
| "{" | "}" | SP | HT
Re: Matti's comment #8, two parts of the UA we probably cannot trim are the rv:
portion and the current Gecko version format -- we know sites that avoid or use
functionality based on those values. If we had the freedom to change them, or
were willing to live with the pain, we would come up with something entirely
different like Gecko/1.5b (bd:20030826) where the build date ("bd:") comment was
provided in nightly test builds but not releases.
Anyway, we have another bug for general discussion of what the UA should be.
This bug is either a duplicate of that, or could be satisfied in quite a
different way by beefing up about:buildconfig or inventing a standard mechanism
to get build information included into the main about: page.
Reporter | ||
Comment 22•22 years ago
|
||
Re: Comment #21
Thank you for the great explaination.
I would be satisfied with an entry in about:buildconfig titled "Vendor Notes"
(or something along those lines) containing free-form notes. If the User-Agent
string does not need to be unique over different builds in principle, then I
will start encouraging people to not treat the User-Agent string as such.
Should builders modify xpfe/global/buildconfig.html.in before starting the build?
I also like the idea that if the browser were modified enough for a server to
care but not enough to rebrand it then it would be prudent to put some
information in the VendorComment along with adding an entry to about:buildconfig.
Also, in the case calling for a VendorComment, it may also be a good idea to put
something in about: but I have no thoughts about how that should be handled
other than whatever would go there should be short.
Should I come up with a patch for the revised user-agent strings page reflecting
this discussion?
![]() |
||
Comment 23•22 years ago
|
||
Just as a note, there was discussion about having the bugzilla helper
automatically request the about:buildconfig info from all submitters. For
bugzilla purposes, that's much more useful than sticking abbreviations in the
UA string...
Comment 24•20 years ago
|
||
This is an automated message, with ID "auto-resolve01".
This bug has had no comments for a long time. Statistically, we have found that
bug reports that have not been confirmed by a second user after three months are
highly unlikely to be the source of a fix to the code.
While your input is very important to us, our resources are limited and so we
are asking for your help in focussing our efforts. If you can still reproduce
this problem in the latest version of the product (see below for how to obtain a
copy) or, for feature requests, if it's not present in the latest version and
you still believe we should implement it, please visit the URL of this bug
(given at the top of this mail) and add a comment to that effect, giving more
reproduction information if you have it.
If it is not a problem any longer, you need take no action. If this bug is not
changed in any way in the next two weeks, it will be automatically resolved.
Thank you for your help in this matter.
The latest beta releases can be obtained from:
Firefox: http://www.mozilla.org/projects/firefox/
Thunderbird: http://www.mozilla.org/products/thunderbird/releases/1.5beta1.html
Seamonkey: http://www.mozilla.org/projects/seamonkey/
Comment 25•20 years ago
|
||
This bug has been automatically resolved after a period of inactivity (see above
comment). If anyone thinks this is incorrect, they should feel free to reopen it.
Status: UNCONFIRMED → RESOLVED
Closed: 20 years ago
Resolution: --- → EXPIRED
This was actually fixed by bug 274928.
Resolution: EXPIRED → DUPLICATE
You need to log in
before you can comment on or make changes to this bug.
Description
•