Grants:Programs/Wikimedia Community Fund/Rapid Fund/Expanding Twinkle Lite functionalities to admins, improving its maintainability and allowing user customisation (ID: 22666838)/Final Report
Application type: Standard application
Part 1: Project and impact
1. Describe the implemented activities and results achieved. Additionally, share which approaches were most effective in supporting you to achieve the results. (required)
As per the description provided in the application of the grant, the project was divided in tasks. I have included a description detailing the achieved results for each of the tasks:
Improving maintainability of the code:
Porting the code from JS to TS in order to catch errors early during the development cycle instead of during execution.
Setting up TS configuration: the project was moved from Javascript to Typescript. This entailed the setup and configuration of a `tsconfig.json` file and the adaptation of the dependencies to this new reality.
Adding type annotations, interfaces and type declarations: Wikimedia typing was applied to the project through the [types-mediawiki](https://www.npmjs.com/package/types-mediawiki) dependency. A `globals.d.ts` file was created on the project to handle types that will not be evaluated until execution, and two specific `morebits-types.ts` and `twinkle-types.ts` files were added for types related to the Morebits dependency and for those specific to this project, respectively.
Handling external libraries: external libraries were updated and adapted to the refactoring of the code. When necessary, type libraries were added to complement the dependencies. Webpack was adapted to work with TS instead of JS.
Transcribing the existing modules' code to TS: a full transcription of the code to TS was carried out. This proved to be the lengthiest task among the proposed ones. All the modules were adapted to JS and refactored. During the process, there was evaluation of code optimization levels, and these were improved when possible.
Refactoring part of the code to adapt to TS: code that was not usable in TS due to the language's specific restrictions to prevent errors during execution was modified, adding new types and using type casting when necessary. The refacting was carried out in a different branch and the merged into main as shown [here](https://github.com/nacaru-w/twinkle-lite/commit/2fe8b83aa4da30874112b5337a8fce42730daa81).
Adding testing through Jest:
Jest configuration and continuous integration: Jest 29.7.0 was added to the project. Jest transitive dependencies such as Babel and Types/Jest were also installed. A script was created on `package.json` to run the tests more easily.
Test cases for key functions: tests for key functions were added to the project in the twinkle-lite.test.ts file, especially for critical functions.
Mocking and stubbing to mimic Wikimedia API actions: due to the ongoing critical changes to the Mediawiki API, mocking of API actions was postponed as a future endeavour for the project.
Enabling customisation: allow users to selectively choose which Twinkle Lite options are available in their UI through a configuration panel:
Developing twinkle-lite-config module and testing: Twinkle-lite-config module was added to the project, allowing users to choose which Twinkle Lite modules they would like to see as part of their UI.
Integrating the module into Wikipedia's UI: the module can be accessed through the user profile page, as an actions menu button.
Introducing admin functionalities for sysop users:
Deletion-request-closer module: the `deletionrequestcloser.ts` module was added; and the script now identifies deletion request pages and adds an option to carry out the process of closing them through the submission of a form. The script accurately modiifes the deletion request page as well as the article's talk page and the nominated page's main page. There is an ongoing beta version for deletion requests on the Spanish Wikipedia, which entails that the script will need future adaptation if these are finally applied by default.
Block-appeals module: the `blockappeals.ts` module was added; showing an option for sysop users to be able to quickly close block appeals on Eswiki.
Fast-blocker module: The fast-blocker module developed by user -sasha- was integrated, allowing for quick blocking through a minimalistic Morebits form.
Common tasks such as developing each module's form, integrating each module into Wikipedia's UI, developing individual tests as per described above were carried out. Furthermore, as per requested by the Program Officer, code structure was adapted when possible to Twinkle Global's requirements for integration, allowing for easy future merging of the modules into that project if such endeavour is envisaged.
2. Documentation of your impact. Please use space below to share links that help tell your story, impact, and evaluation. (required)
Share links to:
- Project page on Meta-Wiki or any other Wikimedia project
- Dashboards and tools that you used to track contributions
- Some photos or videos from your event. Remember to share access.
You can also share links to:
- Important social media posts
- Surveys and their results
- Infographics and sound files
- Examples of content edited on Wikimedia projects
The project was terminated on the 31st of December 2024 as shown in [the version bump diff](https://github.com/nacaru-w/twinkle-lite/commit/8bf60791b8840725356d53b3286e77324a170bfd).
The project was integrated on Eswiki on the 2nd of January as shown on [this diff](https://es.wikipedia.org/w/index.php?diff=164450935). A post was published on Eswiki's village pump showcasing the new features, which can be consulted [here](https://es.wikipedia.org/wiki/Wikipedia:Caf%C3%A9/Portal/Archivo/Noticias/2025/01#Nueva_versi%C3%B3n_de_Twinkle_Lite_%284.0.0%29).
Commit history can be consulted [here](https://github.com/nacaru-w/twinkle-lite/commits/main/).
The project's main work platform was its [Github repository](https://github.com/nacaru-w/twinkle-lite). The project's [Wikipedia page](https://es.wikipedia.org/wiki/Wikipedia:Twinkle_Lite) was also updated to reflect the new features. Twinkle Lite use can be measured by its ample as seen on Eswiki's sysop noticeboards. Screenshots were introduced on the tool's main page to illustrate the new features.
Additionally, share the materials and resources that you used in the implementation of your project. (required)
For example:
- Training materials and guides
- Presentations and slides
- Work processes and plans
- Any other materials your team has created or adapted and can be shared with others
I used my own personal computer running Ubuntu 22.04 and my own workstation to complete the project.
3. To what extent do you agree with the following statements regarding the work carried out with this Rapid Fund? You can choose “not applicable” if your work does not relate to these goals. Required. Select one option per question. (required)
| A. Bring in participants from underrepresented groups | Agree |
| B. Create a more inclusive and connected culture in our community | Agree |
| C. Develop content about underrepresented topics/groups | Disagree |
| D. Develop content from underrepresented perspectives | Disagree |
| E. Encourage the retention of editors | Strongly agree |
| F. Encourage the retention of organizers | Neither agree nor disagree |
| G. Increased participants' feelings of belonging and connection to the movement | Strongly agree |
| F. Other (optional) | The main objective of Twinkle Lite is to allow users to carry out difficult maintenance tasks more easily through the simplification of bureaucratic and technical process with the different modules the tool provides. This can help people who are less technologically-abled to contribute to the daily maintenance of the encyclopedia by completing potentially difficult tasks such as completing maintenance template parameters or correctly structuring the code in sysop noticeboards in an automatic or semi-automatic manner. Furthermore, it also helps technologically-abled users by reducing the amount of time they have to dedicate to the bureaucratic part of maintenance, in such a way that they can use their volunteer time more productively by dedicating a more reduced percentage of it to such endeavours. |
Part 2: Learning
4. In your application, you outlined some learning questions. What did you learn from these learning questions when you implemented your project? How do you hope to use this learnings in the future? You can recall these learning questions below. (required)
You can recall these learning questions below: The project will help me:
- Explore administrators' experiences using the modules aimed at making common sysop tasks simpler.
- Allow me to explore users' UI preferences through the customisation panel.
- Learn how to implement mechanisms aimed at reducing barriers that prevent potential volunteer developers from contributing to the code.
The realisation of this project has helped me better understand the technical needs of volunteering sysops to the Spanish Wikipedia and further analyse the problems they face when carrying out administrative tasks. In addition, it has helped me integrate the customisation wishes of users that will only make a partial use of the module catalogue the tool offers, providing feedback for further possible improvements to be introduced to Twinkle Lite. I can also say that carrying out this project has renewed my interest in investing my free time in developing technical tools that make the encyclopedia better.
5. Did anything unexpected or surprising happen when implementing your activities? This can include both positive and negative situations. What did you learn from those experiences? (required)
As per described in my application document, I was unemployed at the time I applied for this project's rapid grant. Due to my sudden unemployment approximately two months after I started the project and the reduction in my ability in invest time in it, I was forced to ask for a postponement of the deadline. Thanks to this lengthening of the required hand-in date, I was able to fulfil almost all of the proposed objectives as envisaged from the beginning. However, due to the presence of tasks (such as feedback gathering, QA testing and description of the developments) that were not included in the application, a further estimate 60 hours of volunteer time were invested in order to see its completion.
6. What is your plan to share your project learnings and results with other community members? If you have already done it, describe how. (required)
As per discussed above, a post was developed on the Spanish Wikipedia showcasing the new features that were carried out through this project. Twinkle Lite's own Wikipedia page was also updated to reflect these changes. In addition, I am taking part in the Wikimedia Hackaton that will be carried out in Istambul in May and hope to be able to share part of my experience and discuss the importance of investing time in making tools such as Twinkle Lite more sustainable for future developers.
Part 3: Metrics
7. Wikimedia Metrics results. (required)
In your application, you set some Wikimedia targets in numbers (Wikimedia metrics). In this section, you will describe the achieved results and provide links to the tools used.
| Target | Results | Comments and tools used | |
|---|---|---|---|
| Number of participants | 750 | 750 | As of present, Twinkle Lite does not have any integrated manner to analyse metrics of use. The high percentage of edits carried out through the tool on Eswiki's noticeboards, however, gives us a rough estimate of its widespread use on the Spanish Wikipedia. Future endeavours to further analyse its use are within the envisaged mid-to-long term goals for the tool. |
| Number of editors | 1 | 1 | |
| Number of organizers | 1 | 1 |
| Wikimedia project | Target | Result - Number of created pages | Result - Number of improved pages |
|---|---|---|---|
| Wikipedia | 195455 | 195455 | 195455 |
| Wikimedia Commons | |||
| Wikidata | |||
| Wiktionary | |||
| Wikisource | |||
| Wikimedia Incubator | |||
| Translatewiki | |||
| MediaWiki | |||
| Wikiquote | |||
| Wikivoyage | |||
| Wikibooks | |||
| Wikiversity | |||
| Wikinews | |||
| Wikispecies | |||
| Wikifunctions or Abstract Wikipedia |
8. Other Metrics results.
In your proposal, you could also set Other Metrics targets. Please describe the achieved results and provide links to the tools used if you set Other Metrics in your application.
| Other Metrics name | Metrics Description | Target | Result | Tools and comments |
|---|---|---|---|---|
9. Did you have any difficulties collecting data to measure your results? (required)
Yes
9.1. Please state what difficulties you had. How do you hope to overcome these challenges in the future? Do you have any recommendations for the Foundation to support you in addressing these challenges? (required)
As discussed above, although it was not within the scope of this project, a way to analyse the use of Twinkle Lite through either [Wikipedia tagging](https://es.wikipedia.org/wiki/Wikipedia:Etiquetas) or [Wikimedia Hashtags](https://hashtags.wmcloud.org/) was envisaged as part of future goals for the tool.
Part 4: Financial reporting
[edit]10. Please state the total amount spent in your local currency. (required)
3343.02
11. Please state the total amount spent in US dollars. (required)
3487.34
12. Report the funds spent in the currency of your fund. (required)
Upload the financial report
12.2. If you have not already done so in your financial spending report, please provide information on changes in the budget in relation to your original proposal. (optional)
13. Do you have any unspent funds from the Fund?
No
13.1. Please list the amount and currency you did not use and explain why.
N/A
13.2. What are you planning to do with the underspent funds?
N/A
13.3. Please provide details of hope to spend these funds.
N/A
14.1. Are you in compliance with the terms outlined in the fund agreement?
Yes
14.2. Are you in compliance with all applicable laws and regulations as outlined in the grant agreement?
Yes
14.3. Are you in compliance with provisions of the United States Internal Revenue Code (“Code”), and with relevant tax laws and regulations restricting the use of the Funds as outlined in the grant agreement? In summary, this is to confirm that the funds were used in alignment with the WMF mission and for charitable/nonprofit/educational purposes.
Yes
15. If you have additional recommendations or reflections that don’t fit into the above sections, please write them here. (optional)
Review notes
[edit]Review notes from Program Officer:
N/A
Applicant's response to the review feedback.
N/A