Wikipedia:Gadget
This is an information page. It is not one of Wikipedia's policies or guidelines, but rather intends to describe some aspect(s) of Wikipedia's norms, customs, technicalities, or practices. It may reflect varying levels of consensus and vetting. |
|
This IP address is used for vandalism on Meta |
Welcome to the Wikimedia Meta-Wiki! Please keep test edits in the sandbox. Otherwise, this could be considered vandalism and may lead to you being blocked from editing. |
Edits (deleted) | WHOIS | Global contribs. | Block (log) |
Namespaces | |||
---|---|---|---|
Subject namespaces | Talk namespaces | ||
0 | (Main/Article) | Talk | 1 |
2 | User | User talk | 3 |
4 | Wikipedia | Wikipedia talk | 5 |
6 | File | File talk | 7 |
8 | MediaWiki | MediaWiki talk | 9 |
10 | Template | Template talk | 11 |
12 | Help | Help talk | 13 |
14 | Category | Category talk | 15 |
100 | [[Wikipedia:Portal|]] | 101 | |
118 | [[Wikipedia:Drafts|]] | 119 | |
710 | TimedText | TimedText talk | 711 |
828 | Module | Module talk | 829 |
Deprecated | |||
2300 | [[Wikipedia:Gadget|]] | 2301 | |
2302 | [[Wikipedia:Gadget|]] | 2303 | |
Not installed | |||
90 | Thread | Thread talk | 91 |
92 | Summary | Summary talk | 93 |
108 | Book | Book talk | 109 |
442 | Course | Course talk | 443 |
444 | Institution | Institution talk | 445 |
446 | Education Program | Education Program talk | 447 |
2600 | Topic | 2601 | |
Virtual namespaces | |||
-1 | Special | ||
-2 | Media | ||
Current list (API call) |
A Wikipedia gadget is a JavaScript program and/or a CSS snippet that can be enabled simply by checking an option in your preferences. The gadget's function is provided by the MediaWiki extension Gadgets.
Many gadgets started out as user scripts. Once a user script is approved as a gadget, it is removed from Wikipedia:User scripts/List.
General criteria for gadgets
lembaIn order to be deployed on the English language Wikipedia, gadgets should generally pass the following conditions:
- Gadgets must work if just included with no further configuration. They can be configurable via personal common.js, but must work unconfigured.
- Gadgets must be compatible with all major browsers, i.e., they must not terminate with errors.
- Gadgets should be functional in most major browsers (cross-browser compatibility). Exceptions must be clearly stated.
- Duplication of gadgets should only be made if it is reasonable.
- Collections of scripts should be split if they have disparate functions.
- Gadgets requiring permissions must be marked and must fail gracefully if the permissions aren't present.
- Gadgets only working in some skins must be marked as such if that data is available.
Proposals
lembaNew gadgets should be proposed at the technical Village Pump.
Historically, new gadgets were proposed at a subpage of this page, but that page was marked historical due to low participation. Also, existing WikiProject User scripts used to be evaluated for conversion to gadgets, but that process has also been marked historical.
Installation
lembaGadgets can be installed after discussion at the technical section of the village pump by interface administrators in the following way:
- Add the header below and the script code to MediaWiki:Gadget-scriptname.js
- Optionally, add the header below and CSS code to MediaWiki:Gadget-scriptname.css
- Add a script description to MediaWiki:Gadget-scriptname. Please link to the script home and/or help page and state browser requirements if needed.
- Add to MediaWiki:Gadgets-definition under the appropriate heading
* scriptname|scriptname.js[|scriptname.css|otherscript.js|...]
The gadget should now appear on Special:Gadgets.
Comments
lembaComments or warnings can be added to the gadget description templates in two ways:
- noinclude tag (visible on description page with links):
<noinclude> comment </noinclude>
- HTML comments (visible in source text only):
<!-- comment -->
Comments added in this way will be automatically discarded during the page creation process.
Header
lembaThe following header is to be added to the gadget files:
/* _____________________________________________________________________________
* | |
* | === WARNING: GLOBAL GADGET FILE === |
* | Changes to this page affect many users. |
* | Please discuss changes on the talk page or on [[WT:Gadget]] before editing. |
* |_____________________________________________________________________________|
*
* Imported from version XXXX as of DATE from [[SCRIPT_SOURCE]]
* SHORT_DESCRIPTION, see [[SCRIPT_HOME_PAGE]]
*/
Default gadgets
lembaA gadget with default
keyword is enabled for all Wikipedia visitors and only registered users can disable it.
A gadget with [default|rights=minoredit]
description would be automatically enabled only for registered users.
Currently installed gadgets
lembaUsers can browse a list of all available gadgets in the gadgets section of their preferences page:
See Special:Gadgets for a list of all active gadgets and links to their script files.
Pros and cons of changing a user script to a gadget
lembaPros
lemba- Adds the script to Special:Preferences, which makes installing it much easier.
- Adds the script to Special:Preferences, which will help with marketing the script and boost install counts over time.
- Gives the user script to the community, making interface administrators more likely to grant edit requests from other users, reducing the need to fork the user script if the maintainer goes inactive.
- Ability to mark it as a "default gadget", which will load for everyone.
- The ResourceLoader modules and CSS the script depends on load on page load, allowing the script to be ready faster.
Especially once a user script has a lot of users...
- Gadgets provide minification and bundling with other gadgets, which reduces file sizes and HTTP traffic.
- Possible protection against hacking. Interface administrators all have two factor authentication, and are removed if they become inactive. A regular maintainer might go inactive then have their account compromised at a later date.
- Possible protection against a rogue user script developer. Interface administrators have gone through RFA and are possibly less likely to go rogue.
Cons
lemba- Requires using ES5 or ES6. ES5 is an old version of JavaScript from 2009 that is lacking modern features. ES6 is from 2015.
- If the maintainer is not an interface administrator, they will now need to make {{Edit interface-protected}} requests in order to make any code changes, slowing down development.
- Lots of steps. Need to make sure the maintainer is OK with it, get consensus at WP:VPT, then get an interface administrator to set everything up. May need a plan to switch everyone over from the old user script to the gadget. If there is any concern about bugs, may need to do a staggered rollout.
- ResourceLoader dependencies may load even where they are not needed, wasting traffic and possibly slowing down the user experience.
See also
lemba- MediaWiki talk:Gadgets-definition, discussing technical details of making and maintaining gadgets
- Special:GadgetUsage, provides statistics on gadget usage
- mw:Extension:Gadgets, the Mediawiki gadget extension page
- Template:Bug report, template message asking for detailed bug-related information
- mw:Gadget kitchen, tutorial on writing gadgets
- Wikipedia:Gadget/Repositories, a list of version control repositories for gadgets and user scripts