Grants:Project/Rapid/SD0001/Twinkle localisation

SD0001/Twinkle localisation
Create a framework through which Twinkle can be localised to different wikis easily
targetAll Wikimedia projects
start dateNovember 10
end dateJanuary 10 March 10
budget (local currency)INR ~146,300
budget (USD)2000
grant typeindividual
contact(s)• SD0001

Review your report

Project Goal


Briefly explain what are you trying to accomplish with this project, or what do you expect will change as a result of this grant. Example goals include, "recruit new editors", "add high quality content", or "train existing editors on a specific skill".

Twinkle is a popular gadget used on a number of wikis, for a large variety of tasks such as reverting vandalism, filing deletion nominations, reporting vandals, etc. Twinkle has been used for performing more than 175,000 edits/actions on English Wikipedia in just the last 1 month alone.[1]
Currently, Twinkle is devoid of any form of systematic internationalisation or localisation. Each wiki has a separate version of Twinkle forked (or simply copied) from the English Wikipedia version, which tend to become out of date quickly (example issue). This project seeks to refactor and rewrite Twinkle in an object-oriented way which is easy to localise to different wikis. Since the processes which Twinkle helps facilitate (such as filing deletion nominations) are wildly different across wikis, localisation thus far has been considered quite difficult – the relevant task on the issue tracker has been open for over 8 years. This project seeks to change that.
I have been making contributions to Twinkle for about 2 years, and am very familiar with the codebase. I have about 170 merged commits.


  1. According to w:Special:Tags. The "twinkle" tag was enabled on 5 September 2020

Project Plan




Tell us how you'll carry out your project. What will you and other organizers spend your time doing?

An exhaustive list of tasks to be carried out has been posted on the GitHub issue 1144.

The first month would involve:

  • Building a modern replacement for Morebits (core library for API actions) that builds on existing functionality from mw.Api, mw.Title, etc. All common usages of the API would be encapsulated here for easy invocation from the modules.
  • Write documentation for the this library, with example code snippets.
  • Refactor some of the key modules such as Tag (used for adding maintenance tags) and XFD (used for creating deletion nominations) in an object-oriented manner that is easily extensible. Since XFD processes are greatly different across wikis and even within the wiki for different types of pages, the work would involve creating an abstract base class that provides typical functionality, and allowing wikis to extend it and override the methods which are different. All individual operations used in XFD processes will be shared.
  • Explore techniques for setting up unit tests for Twinkle modules (which is entirely non-existent as of now).
  • Localise the strings in the main (non-module) files.
  • Separate messages for each module to a separate file. The central repository of Twinkle would host enwiki's messages and other configurations. Other wikis can modify the configuration files locally. The source of Twinkle core would be hosted on English Wikipedia. Each wiki would have a JavaScript configuration file for each module stored in the MediaWiki namespace of that wiki.
  • Localise Fluff, Diff, and the batch modules.

In the second month, I would:

  • Evaluate the use of for facilitating message translations.
  • Localise the remaining modules: the key among them being CSD (used for making speedy deletion requests), Warn (used for warning users as part of recent changes patrol), Block and Protect (used for making page protection requests) modules.
  • Explore the feasibility of localising the ARV module (used for reporting users to AIV, SPI, UAA and AN3). Since the processes are very different across wikis, this may be handled in a way similar to XFD module.

How will you let others in your community know about your project (please provide links to where relevant communities have been notified of your proposal, and to any other relevant community discussions)? Why are you targeting a specific audience?

What will you have done at the end of your project? How will you follow-up with people that are involved with your project?

  • Most of the modules in Twinkle will have become easily localisable. The process for localisation would be well-documented. Modules such as Fluff and Diff can be set up even by a user with no knowledge of JavaScript.
  • More involved modules like XFD and Tag can be set up without compromising on any features or having to unduly change the wiki's processes to match that of English Wikipedia.
  • It would be possible for wikis to set up new Twinkle modules, automating processes which do not even exist on English Wikipedia.
  • Wikis would be informed of the this project and encouraged to upgrade their Twinkle installations.
  • I will be continuously following up with maintainers of Twinkle from different projects.

Are you running any in-person events or activities? If so, you will need to complete the steps outlined on the Risk Assessment protocol related to COVID-19. When you have completed these steps, please provide a link to your completed copy of the risk assessment tool below:

  • No in-person events are involved.



How will you know if the project is successful and you've met your goals?

  • Improved user experience in setting up Twinkle on a new wiki
  • Feedback from the maintainers of Twinkle on projects other than English Wikipedia
  • Number of wikis upgrading their existing Twinkle installations
  • Number of new wikis adopting the gadget
  • Number of issues resolved within English Wikipedia's Twinkle as part of the localisation work



What resources do you have? Include information on who is the organizing the project, what they will do, and if you will receive support from anywhere else (in-kind donations or additional funding).

  • My computer and software development skills. I will not formally be receiving any support, but other Twinkle contributors may provide code reviews, feedback and advice.

What resources do you need? For your funding request, list bullet points for each expense:

  • USD 2000 for 2 months of software development time, commensurate with the budget requested for previously funded Rapid Grants such as 1 and 2.


  •   Support with the hope that this finally breaks the vicious cycle of Twinkle maintainers agreeing to support i18n on one hand and showing no interest to accept i18n patches on the other hand. Huji (talk) 00:35, 10 October 2020 (UTC)
  • Support, would be so much easier for cross-wiki patrollers when you can use the same tool eveywhere. The localization need to be easy to other wikis. Stryn (talk) 08:58, 10 October 2020 (UTC)
  •   Support Yes, I support this project and hope it can help viwiki also. Alphama (talk) 09:29, 10 October 2020 (UTC)
  •   Support - There is a Twinkle on arwiki, one on fawiki, one on simplewiki, one on zhwiki, one on viwiki, one outdated version on Commons, one outdated version on fawiktionary, and most likely on several other projects as well. Some of these Twinkles do not function properly, some don't work at all, and many (maybe all of them) are not updated regularly. This will hopefully fix that, and finally give all projects a chance to use the latest version of Twinkle easily. Ahmadtalk 10:31, 10 October 2020 (UTC)
  •   Support فرهنگ2016 (talk) 15:16, 10 October 2020 (UTC)
  • This would be incredibly useful on smaller wikis. Majavah talk/contribs/sul 16:22, 10 October 2020 (UTC)
  •   Support Shiasun (talk) 17:47, 10 October 2020 (UTC)
  •   Support Jeeputer (talk) 18:14, 10 October 2020 (UTC)
  •   Support per Huji and Ahmad. Mahdy Saffar (talk) 19:02, 10 October 2020 (UTC)
  •   Support On bnwiki we use 10 years old code & many function stopped working. I would be nice if Twinkle supports i18n, we can easily update to new code. আফতাবুজ্জামান (talk) 19:56, 10 October 2020 (UTC)
  •   Support Freshman404Talk 20:38, 10 October 2020 (UTC)
  •   Support per my comments on talk and SD0001's response. A very worthy and long overdue project! This, that and the other (talk) 23:36, 10 October 2020 (UTC)
  •   Support--Editor7798 (talk) 06:41, 11 October 2020 (UTC)
  •   Supportper hujiRajabi.abolghasem (talk) 11:38, 11 October 2020 (UTC)
  •   Support P.T.Đ (talk) 15:44, 11 October 2020 (UTC)
  •   Support Amir smt (talk) 16:05, 11 October 2020 (UTC)
  •   Support GodNey (talk) 17:30, 11 October 2020 (UTC)
  •   Support Twinkle is a very useful tool, and having a consistent and up-to-date version available across projects will be valuable. This looks like an ambitious project, but based on SD0001's record of contributions already, I have confidence in their ability to tackle it. the wub "?!" 11:48, 12 October 2020 (UTC)
  •   Support Gharouni 00:33, 13 October 2020 (UTC)
  •   Support --Gomdoli (talk) 22:41, 14 October 2020 (UTC)
  •   Support Helder 13:09, 16 October 2020 (UTC)
  •   Support Would be quite useful to many communities– Ammarpad (talk) 05:44, 24 October 2020 (UTC)
  •   Support per all of the above and prior discussions about this --DannyS712 (talk) 23:14, 24 October 2020 (UTC)