You take full responsibility for any actions taken using any gadget. You must read andunderstand all relevantWikipedia policies and abide by them when using this tool; failure to do so may result in beingblocked from editing.
AWikipedia gadget is aJavaScript program and/or aCSSsnippet that can be enabled simply by checking an option in yourpreferences. The gadget's function is provided by theMediaWiki extensionGadgets.
Historically, new gadgets were proposed ata subpage of this page, but that page was marked historical due to low participation. Also, existingWikiProject User scripts used to beevaluated for conversion to gadgets, but that process has also been marked historical.
The 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]] */
A gadget withdefault 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.
Gadgets that are enabled by default for all users have to comply with stricter rules. These are essentially the same rules that apply to all default shipped code. This is because users have no active choice in them being enabled and the gadgets can impact the performance, security and stability of the entire website. These gadgets should:
Have been reviewed by an experienced JavaScript developer (generally an interface admin).
Be written to run efficiently, i.e. with as little code as required. If full functionality of the gadget requires a lot of JavaScript code, then this code should be loaded conditionally and lazily, or only on demand (click to load).
Template gadgets are a special category of default gadgets. These gadgets only run on pages in explicit trigger categories, generally controlled by adding a template to a page. Trigger categories should be move-protected as they are integrated with the definition.
Adds the script toSpecial:Preferences, which makes installing it much easier.
Adds the script toSpecial:Preferences, which will help with marketing the script and boost install counts over time.
Gives the user script to the community, makinginterface 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.
TheResourceLoader 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 provideminification 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 throughRFA and are possibly less likely to go rogue.
Allows use of JavaScript features up toES7 only. A few ES8 features like async–await can be used with therequiresES6 flag.
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 atWP: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.