Last modified: 2014-02-12 23:39:53 UTC

Wikimedia Bugzilla is closed!

Wikimedia migrated from Bugzilla to Phabricator. Bug reports are handled in Wikimedia Phabricator.
This static website is read-only and for historical purposes. It is not possible to log in and except for displaying bug reports and their history, links might be broken. See T47574, the corresponding Phabricator task for complete and up-to-date bug report information.
Bug 45574 - MediaWiki:Gadget-TabbedLanguages.js on the English Wiktionary having an issue
MediaWiki:Gadget-TabbedLanguages.js on the English Wiktionary having an issue
Status: NEW
Product: Wikimedia
Classification: Unclassified
General/Unknown (Other open bugs)
wmf-deployment
All All
: Low normal (vote)
: ---
Assigned To: Nobody - You can work on this!
:
Depends on:
Blocks:
  Show dependency treegraph
 
Reported: 2013-02-28 19:40 UTC by MZMcBride
Modified: 2014-02-12 23:39 UTC (History)
5 users (show)

See Also:
Web browser: ---
Mobile Platform: ---
Assignee Huggle Beta Tester: ---


Attachments

Description MZMcBride 2013-02-28 19:40:46 UTC
From bug 27488 comment 72:

---
This bug is blocking deployment of the tabbed languages gadget on the English
Wiktionary ([[wikt:en:MediaWiki:Gadget-TabbedLanguages.js]]), which was
approved by vote a few months ago: [[wikt:en:Wiktionary:Votes/2012-10/Enabling
Tabbed Languages]]. It requires loading from the top for a number of reasons,
such as conditional running of CSS based on cookies.
---

He's referring to bug 27488, of course.

Splitting this issue out to a separate bug report, as whatever issue this gadget is hitting is obviously divergent (if not tangential). Possibly related to bug 27488, possibly not, and possibly solved by a different solution.
Comment 1 MZMcBride 2013-02-28 19:49:35 UTC
I seem to remember some rule like "extensions can set CSS/JS at the top, but gadgets and user scripts can't" or something. Is that right? Could this just be ported to a MediaWiki extension?

The English Wiktionarians are wary of MediaWiki extensions as the past process for getting them reviewed and deployed has been pretty awful for them (and many other projects). But I think our processes in this area have improved dramatically recently, so this seems like a viable option.

Please tell me to shut up if I'm wrong about any of this. :-)
Comment 2 MZMcBride 2013-02-28 19:53:01 UTC
From bug 27488 comment 75:

---
Um, gadgets used to load from the head. This is a feature we had before, and it
was then removed. Gadgets (and scripts in general) being moved to a position
where everything done is delayed caused many significant problems. I assume
that the benefits of these actions made them make sense overall, but gadgets
are rather important to many wikis, and I'm not sure that inadvertently
impairing them and then generally ending maintaining/fixing resulting issues
because of a possible distant-future replacement is completely appropriate. I
suppose if no one has the time to devote to this bug in particular to due more
pressing/important issues, all the resulting problems will just have to wait
however many months or years until 2.0 is ready, but I don't agree that
"feature requests" like this on lost features should just be ignored as a rule,
hm?
---

From bug 27488 comment 76 and bug 27488 comment 77:

---
Yair, it won't be years until Gadgets 2.0 is out.  Like Krinkle, I don't know a
clean way (without breaking backwards compatibility) to do this in the current
implementation.  When 2.0 comes out, it should be up to the gadget, like it is
for regular ResourceLoader modules
(https://www.mediawiki.org/wiki/Manual:$wgResourceModules).

In the meantime, I don't see why TabbedLanguages *has* to be loaded from the
top.  The DOM, CSS, and cookies all provide full read-write access at the
bottom.  The only thing you can't do is document.write.

You may get certain UX benefits from doing it at the top, but it's not
impossible to make a working gadget now.

Also, I forgot to note, the version at
https://en.wiktionary.org/wiki/MediaWiki:Gadget-TabbedLanguages.js does not use
document.write.
---

From bug 27488 comment 78:

---
The gadget needs to have the styles run before the body starts loading, and it
needs to be disableable for non-logged-in users. The only way to do that is to
have the script itself check for a cookie, and set up styles depending on its
contents.
---

From bug 27488 comment 79:

---
Are you trying to load the styles before the body to avoid a flash of unstyled
content?  I agree that's annoying, but the flash should be brief, so that's not
necessarily a blocker.

There is nothing position-related about the cookies.  They can be manipulated
from either place.
---

From bug 27488 comment 80:

---
The unstyled content means that the entire page is essentially unusable, until
the script runs. The community has made it clear that that is not acceptable,
which is why we've been waiting until this bug is fixed.
---
Comment 3 Marius Hoch 2013-02-28 19:58:11 UTC
(In reply to comment #1)
> I seem to remember some rule like "extensions can set CSS/JS at the top, but
> gadgets and user scripts can't" or something. Is that right? Could this just
> be
> ported to a MediaWiki extension?
Yes and yes (though I didn't really take a look at the code)...
I don't see why position=top couldn't be implemented in the gadget extension though (performance issues maybe?)
Comment 4 Matthew Flaschen 2013-02-28 20:00:10 UTC
(In reply to comment #1)
> I seem to remember some rule like "extensions can set CSS/JS at the top, but
> gadgets and user scripts can't" or something. Is that right? Could this just
> be
> ported to a MediaWiki extension?
> 
> The English Wiktionarians are wary of MediaWiki extensions as the past
> process
> for getting them reviewed and deployed has been pretty awful for them (and
> many
> other projects). But I think our processes in this area have improved
> dramatically recently, so this seems like a viable option.
> 
> Please tell me to shut up if I'm wrong about any of this. :-)

Yes, extensions have control over top/bottom, and it defaults to bottom. (https://www.mediawiki.org/wiki/Manual:$wgResourceModules).  So that is another possible work-around.

(In reply to comment #3)
> (In reply to comment #1)
> > I seem to remember some rule like "extensions can set CSS/JS at the top, but
> > gadgets and user scripts can't" or something. Is that right? Could this just
> > be
> > ported to a MediaWiki extension?
> Yes and yes (though I didn't really take a look at the code)...
> I don't see why position=top couldn't be implemented in the gadget extension
> though (performance issues maybe?)

I believe they will be in the Gadgets 2.0 branch.  They just don't want to do a special-case before the branch is done.
Comment 5 MZMcBride 2013-02-28 20:02:36 UTC
Okay, so the options here are for the English Wiktionarians are:

* try to work around whatever issue they're hitting in local JavaScript/CSS alone;

* port this gadget to a MediaWiki extension; or

* wait for Gadgets 2.0 (sometime in the latter half of 2013, I'll say).

Did I miss any?
Comment 6 Matthew Flaschen 2013-02-28 20:48:08 UTC
I don't know exactly when Gadgets 2.0 will be done.  However, those options generally make sense.

Devs may be able to offer some help with getting the gadget working.
Comment 7 Yair Rand 2013-02-28 21:56:14 UTC
(In reply to comment #5)
> Okay, so the options here are for the English Wiktionarians are:
> 
> * try to work around whatever issue they're hitting in local JavaScript/CSS
> alone;
The problem is, there isn't any way to have any locally-defined JS run before the DOM is finished loading, and that's far too late. JS alone can't do anything about this if we can't use any JS at all until it's too late.
> * port this gadget to a MediaWiki extension; or
Extensions need to be reviewed. In my experience, that simply doesn't happen. (Additionally, I'm not sure any Wiktionarians are even able to make extensions.) If extensions actually were feasible, it would be kind of silly to have TL do the very sub-optimal work of reworking the entire contents of the page entirely via JS, while a pile of CSS, which is allowed to load earlier, is used so that it doesn't look wrong before the script does its work. 
> * wait for Gadgets 2.0 (sometime in the latter half of 2013, I'll say).
Yeah, that's probably what's going to happen. I mentioned in the Wiktionary Beer parlour in April 2011, ten months after TL was first developed by Atelaes, that we just have to wait until the issue with the script delays is fixed. I didn't expect it to take 2.5 years, though. Sigh...

Note You need to log in before you can comment on or make changes to this bug.


Navigation
Links