-
Notifications
You must be signed in to change notification settings - Fork 92
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Extensions.gnome.org "blacklists" contact@projecthamster.org UUID #324
Comments
Extra weird, if the version is not known by e.g.o, it should also skip it entirely. However, it seems that the "Version" sent to e.g.o is actually a single integer, not a 3.36-style version number. Is there such a number you could also change? |
AFAICS all these are strings. Btw I had a "mental typo", I'd set the version in metadata.json to "0.36.0". Looking at the code, this would throw an exception and set |
Hooray that was it!! With the settings below, it works! 👍
|
Apparently the version needs to be set to at least "3". With "2" I get the same failure. |
If I read the Django code correctly, the call to As you already figured out, IOW, it seems that an extension with the |
I haven't found any documentation specifying that the "version" field needs to be an integer. But reading the code, it's of course obvious. |
Hm, what does that mean for our branches and versioning plan in #319? The update check does seem to assume a linear history of these version numbers, so a higher build number means a higher version, so if we just number releases incrementally, releasing an update for an older shell version would get a higher version. If the compatible version list is truncated on the top, this could still work (since the update has a higher version, but will not be valid for shell versions that have better (even though older) versions in place. Alternatively, we could do something like 0.36.1 => 000.036.001 => 36001 to ensure proper comparison of versions while keeping a single int? |
I like that proposal, but is the version maintained elsewhere? Maybe best to maintain a version string that's derived from some kind of single source of truth? I don't mind maintaining version strings in code, I think that's great, but if this conversion rule has to be maintained as well, it would be a kind trip wire for a stressed release maintainer. |
If I read the code of the GNOME web service correctly, the version number we set doesn't matter for extensions.gnome.org at all. IOW, we can set |
I'm not sure this is limited to local installs. If we release an update for an older shell version, we also want to upload that to e.g.o and we don't want that update to be used in favor of higher versions. E.g., if we have:
Then someone running 0.34.0 on shell 3.34 might be "upgraded" to 0.30.2. This is the scenario I referred to before. We could fix that by using the large version number, but I guess you're saying that the version number we set is ignored anyway, not that I re-read your code. In that case, the scenario above should be fixed by careful tracking of gnome-shell versions, e.g. release 0.30.2 for shell versions 3.30-3.32, so 3.34 will not use it (this should give each shell version its own proper incrementing range). Then I wonder what this means for the nice "0.30.2" version numbers we planned. They are probably still good to use, since they help use track branches, but the linear version numbers generated by e.g.o will then not be related to them (nor will they be recorded in git, which is a bit weird). Alternatively, we upload to e.g.o. before tagging and then put the version number in the tag (e.g. It seems that some other extensions do put these nice versions in their metadata, which probably always results in an "upgrade" command (because they'll have a version=1 on e.g.o that is valid). |
Firstly, unlike the "blacklist" case (*), this wouldn't happen silently. Rather, the user would receive a "Extension Updates Available" notification, which would open the "Extensions" tool when clicked. Secondly, this can only happen the user has IMO this is how versioning on E.G.O is designed to work, and it's actually quite powerful. It allows all shell-version branches of an extension to be updated, and still delivers the latest matching extensions to users. (*) Wrt the "blacklist", it's really a bug IMO, and I think we should report it. |
The question is where to use them. We can't use them in
Well, we could manually download the E.G.O. packages once they're public, extract the version number, and create a special tag for our own reference (e.g.
As we've learned now, that's pretty obviously wrong. The others, like us, just don't know that, because it isn't documented anywhere. |
If I read the code correctly, if the extension version is not compatible with the shell version, it won't be considered for a possible upgrade. I just noticed that I mislabeled a version in my previous post (wrote 0.36.0 where I meant 0.34.0, since that version was intended to still support 3.34) and I forgot to explicitly mention this problem would happen for someone running shell 3.34. So what I meant was that someone runing 0.36.0 on shell 3.34 (which is a valid combination) would be "upgraded" to 0.30.2 (because it is still compatible with 3.34 and version 12 > version 10). This happens unless we would mark 0.30.2 as not compatible with 3.34 (which I think is the solution here).
Well, putting them in tags or branches might work. OTOH, we might as well name branches after the "minimum" gnome shell version ( |
3.) is the default case, and 7.) would be the usual case for users upgrading to a new GNOME version. The case I ran into is the pathological 5.) Wrt branch names, it just occured to me that it might be reasonable to name branches after the latest shell version they support, rather than the oldest. After all, the current shell version will normally be supported by Does this make sense? |
Have you found examples? That might be useful for a GNOME bug report. Meanwhile, this comment makes me think that we probably shouldn't have set the |
@matthijskooijman and fellow @projecthamster/gnome-shell-extension maintainers, if you find time, please look at the GNOME issue. The GNOME devs say it "works as designed". Not that I expected much else, but some support in the discussion might still be helpful. Sp far I've learned two things:
The special case we've run in (some version uploaded, but none reviewed/approved) seems to be real pathological. |
The auto-blacklisting issue has been figured out by now (projecthamster#324), It was caused by our non-integer "version" tag in metadata.json, plus the fact that two version of the "contact@projecthamster.org" extension had been uploaded to extensions.gnome.org, but were never approved by a reviewer, plus the "extension auto-upgrade" feature of GNOME shell 3.36. Nevertheless, being able to change the UUID may be useful in the future.
I posted to the gnome issue before, but seeing they already had an issue about this predating ours, I expect this will be fixed on their end some way or another. The take away for us is to leave the version field empty, so maybe we can put some meaningful version number in the extension description or something like that. |
The auto-blacklisting issue has been figured out by now (projecthamster#324), It was caused by our non-integer "version" tag in metadata.json, plus the fact that two version of the "contact@projecthamster.org" extension had been uploaded to extensions.gnome.org, but were never approved by a reviewer, plus the "extension auto-upgrade" feature of GNOME shell 3.36. Nevertheless, being able to change the UUID may be useful in the future.
The auto-blacklisting issue has been figured out by now (projecthamster#324), It was caused by our non-integer "version" tag in metadata.json, plus the fact that two version of the "contact@projecthamster.org" extension had been uploaded to extensions.gnome.org, but were never approved by a reviewer, plus the "extension auto-upgrade" feature of GNOME shell 3.36. Nevertheless, being able to change the UUID may be useful in the future.
This relates to #304 but concerns a specific issue: When gnome-shell asks for update info on the extension, e.g.o seems to return "blacklist", which causes gnome-shell to uninstall the extension.
It is not entirely clear why this happens, or what this mechanism is intended for, but investigation of the e.g.o source code suggests that there is no explicit blacklist that triggers this, but instead some weird internal state (though reproducing it using a manual request has not succeeded yet, and with the values we think gnome-shell sends to this service, there should not really be a way to trigger this).
This issue also seems to happen only on gnome-shell 3.36, so maybe something changed in the request it sends to trigger this?
For previous discussion, detailed analysis and links to relevant source code, see #321 (comment) and onwards.
The text was updated successfully, but these errors were encountered: