Grants:Programs/Wikimedia Community Fund/Rapid Fund/Making DelintBot able to reliably fix more lint categories (ID: 23811013)
Applicant details
[edit]- Main Wikimedia username. (required)
Redmin
- Organization
N/A
- If you are a group or organization leader, board member, president, executive director, or staff member at any Wikimedia group, affiliate, or Wikimedia Foundation, you are required to self-identify and present all roles. (required)
N/A
- Describe all relevant roles with the name of the group or organization and description of the role. (required)
Main proposal
[edit]- 1. State the title of your proposal. This will also be the Meta-Wiki page title.
Making DelintBot able to reliably fix more lint categories
- 2. and 3. Proposed start and end dates for the proposal.
2026-07-15 - 2027-01-15
- 4. What is your tech project about, and how do you plan to build the product?
Include the following points in your answer:
- Project goal and problem you solve
- Product strategy or project roadmap
- Technical approach (infrastructure, tech stack, key tools and services)
- Integrations or dependencies (if any)
According to the data shared on [1], there were about 286 million lint errors on Wikimedia wikis as of December 2025. Up to about 225 million of these could potentially be fixed by an automated tool such as a bot because they do not require understanding the intent of the editors who had originally written the text. More than 186 million of these errors can potentially make it impossible to read the text using the 'dark mode' feature on wikis. While the larger wikis have added custom CSS to fix the issue for readers reading the text on those wikis, others have not; and even for the wikis that have gone down this route, portability of the content on those wikis (to software like native apps or offline readers like Kiwix) is hurt so other wikis may deliberately choose not to use this option. The impact of the remaining 39 million errors is usually less drastic but even then they can and do result in issues such as improperly styled text, broken links, etc.
Since July 2025, I have been working on a bot to fix these errors as a volunteer, which I would make drastically more capable and reliable as part of this project. It initially tried to fix the most trivial of these errors by simple text replacement on Bengali Wikibooks (where it runs under the username 'RedminBot'), which seemed sufficient at first but quickly turned out to be a strategy that fell short as it turned out that many pages had invalid markup in ways that were not documented. Since then, my strategy has been to rely on regular expressions, and try to catch all sorts of invalid markup and fix them before attempting to fix the lint errors themselves. On Bengali Wikibooks and Bengali Wikibooks, this has worked - but deployment to Wikidata has been less smooth where in the beginning, page content was incorrectly identified as malformed and the supposed fixes broke the rendering of existing valid content in a few instances. I have since fixed the bugs that caused those malformed edits but it is possible that as I deploy the bot to more wikis, similar issues would arise again if the bot is left as it currently is, which limits the community's ability to benefit from the work I have already done. At the same time, I have already implemented fixes for most of the lower hanging fruit in terms of the lint categories which the bot could potentially fix, and further development will take significantly more effort. Given the circumstances, I have identified this plan as the best way forward to fixing the more challenging lint categories which I would implement should this project be funded:
- Making the bot rely on visual regression testing to identify whether an edit would change how the page looked when it should not (sometimes it should look different and in such cases this step would be skipped)
- Using Wikimedia's REST APIs to verify whether lint errors were properly fixed before saving the edit
- Making the bot perform edits concurrently while respecting Wikimedia's robots policy which puts a cap on the concurrency as the steps mentioned previously would slow down the bot
- Write proper logic for generating edit summaries so even non-tech-savvy editors can understand exactly why the bot changed certain things on a page
- Inform administrators exactly what needs to be changed when the bot cannot edit a protected page (this is especially important because these are usually templates transcluded on a very large number of pages that have been protected to minimize the potential impact of vandalism so one edit there can easily fix hundreds to thousands of errors depending on the size of the wiki)
- Implement fixes for anything not currently being fixed by the bot but which could be fixed without knowing the intent behind the existing format on the page
I have filed tasks for all of these on Phabricator: [2]. Please note that though there is a task currently open that aims to make the bot usable on third-party wikis, I cannot see myself getting around to implementing that before the period where I work on the project, nor will I work on it if it is funded during that period.
To do these, I plan to rely on Wikimedia Cloud Services infrastructure with this tech stack:
- Python 3.13 as the primary programming language (already in use)
- Toolforge for hosting (already in use)
- Git and GitLab for version control and open sourcing the code (already in use)
- My fork of mw-api-client for accessing the MediaWiki Action API (already in use)
- Node.js, Playwright, pngjs and Pixelmatch for visual regression testing (new dependencies)
- 5. What is the expected impact of your project, and how will you measure success?
Include the following points in your answer:
- Milestones and progress tracking
- Project impact and success metrics
Project progress and success would be measured using the number of open tasks on Phabricator and the number of lint errors left on wikis where the bot is approved to run. As of the time of writing this, there were more than 270000 errors on Wikidata, more than 4000 errors on Bengali Wiktionary and more than 4000 errors on Bengali Wikibooks. As I noticed different Wiktionaries (including Bengali Wiktionary) being partially unreadable when using dark mode, I would like to reach out to more Wiktionary communities as I work on the project with enhanced capabilities so they can benefit from the new work as well; so increasing the number of wikis the bot is deployed to would be a goal as well.
- 6. Who is your target audience, and how have you confirmed there is demand for this project? How did you engage with the Wikimedia community?
Include the following points in your answer:
- Project demand and target audience description
- Links to interaction(s) with Wikimedia community
- Evidence from community consultation such as the [Community Wishlist]
Link to Bengali Wikibooks discussion: উইকিবই:বট/অনুমোদনের অনুরোধ/RedminBot (please note that this discussion calls the bot 'RedminBot' because that is what I had decided to call it before creating a new account for it under the username 'DelintBot', this username only ever be used on Bengali Wikibooks)
Link to Bengali Wiktionary discussion: ব্যবহারকারী:DelintBot
[3]Link to Wikidata discussion: Wikidata:Requests for permissions/Bot/DelintBot
- 7. How will your team predict and manage potential user security and privacy risks, and what risks do you currently see?
Include the following points in your answer:
- The level of in-house or consulted security and privacy expertise you will have available to you during delivery of this project
- How your development, testing, and deployment processes mitigate the introduction of unnecessary security or privacy risks
No user data will be handled as part of the project. The bot's job is to simply retrieve the list of pages with lint errors using Wikimedia's database replicas, retrieve the source Wikitext for each page on that list, and then edit that page after fixing the Wikitext. This minimizes the security risks.
- 8. Who is on your team, and what is your experience?
Include the following points in your answer:
- Your experience as a developer, relevant past projects
- Wikimedia SUL (developer), Gerrit, Github, Gitlab or other relevant public account handles
- Other team members, their roles and expertise
I am the only person on the team.
I have been a member of the Wikimedia community since 2020 and am currently a volunteer Security Reviewer at the non-profit wiki farm Miraheze (under WikiTide Foundation, Inc.) and initially joined the Wikimedia technical community to report security vulnerabilities in MediaWiki extensions (something I continue to do, including for Wikimedia-developed extensions) I found while performing security reviews for them. I have developed a MediaWiki extension (Extension:Snap! Project Embed) and a MediaWiki skin (Skin:Snap! Wiki Skin) and have made significant contributions to and help maintain two others (Extension:DarkMode and Extension:Snapblocks) I have been operating bots on Wikimedia since 2023; one of them is RedminBot, which is responsible for importing modules to Bengali Wiktionary from English Wiktionary on an as-needed basis and the other is LexemeBot, which is responsible for creating new entries on Bengali Wiktionary which use data from Wikidata Lexemes that have Bengali senses and references. Other wiki-related projects I have worked on include a Chrome extension that makes it easy to link Wikidata Lexemes to Bengali Wiktionary entries so data on Wikidata is shown on Bengali Wiktionary. I have also made a different bot that uses structured data in a Wikibase repository to make articles with Wikitext on a third party wiki.
Wikimedia Developer Account: [5]
Gerrit: [6]
GitHub: [7]
GitLab: [8]
Phabricator: [9]
- 9. How will the project be maintained long-term?
Include the long-term maintenance plan with maintainer(s) in your answer. If you expect the long-term maintenance to incur expenses, please list those and the plan for long-term expense coverage.
I will continue to maintain the project as a volunteer. That being said, it will not require much long-term maintenance because if the bot completes operating on a specific wiki, it is unlikely that the number of lint errors will meaningfully rise up in a way that makes operating the bot necessary again. But even then, I would make sure to write comprehensive documentation to explain how the bot needs to be run to eliminate the bus factor. Also, anyone can fork the repository on GitLab to either propose changes on the main repository or just get a new Toolforge tool account and start running it on their own.
- 10. Under what license will your code be released, and how will you ensure the product is well documented?
Include the following points in your answer:
- Code license and compatibility with Wikimedia projects
- Documentation plan
The code is currently licensed under the GNU General Public License Version 3, which is a widely used Open Source Initiative-approved license, and this would continue to be the case after the completion of the project. MediaWiki itself is licensed under the GNU General Public License Version 2 or later.
Regarding documentation, currently, the main script used to run the bot comes with a help message that explains how to run it but it requires the operator to have already successfully installed dependencies. I plan to write proper documentation detailing how to operate the bot on Toolforge and publish it in the 'Tool' namespace on Wikitech so it is clear to anyone how to get the bot to work on their home wiki. The documentation would cover everything from the dependencies to the functionalities involved.
- 11. Will your project depend on or contribute to third-party tools or services?
Yes, it will depend on the dependencies previously mentioned but no third-party services will be used.
No, contributions to third-party tools are not planned.
- 12. Is there anything else you’d like to share about your project? (optional)
Budget
[edit]- 13. Upload your budget for this proposal or indicate the link to it. (required)
- 14. and 15. What is the amount you are requesting for this proposal? Please provide the amount in your local currency. (required)
290500 BDT
- 16. Convert the amount requested into USD using the Oanda converter. This is done only to help you assess the USD equivalent of the requested amount. Your request should be between 500 - 5,000 USD.
2347.8 USD
- By submitting your proposal/funding request you confirm that you have read and agree to the Application Privacy Statement, WMF Friendly Space Policy, and the Universal Code of Conduct.
Yes
Endorsements and Feedback
[edit]Please add endorsements and feedback to the grant discussion page only. Endorsements added here will be removed automatically.
Community members are invited to share meaningful feedback on the proposal and include reasons why they endorse the proposal. Consider the following:
- Stating why the proposal is important for the communities involved and why they think the strategies chosen will achieve the results that are expected.
- Highlighting any aspects they think are particularly well developed: for instance, the strategies and activities proposed, the levels of community engagement, outreach to underrepresented groups, addressing knowledge gaps, partnerships, the overall budget and learning and evaluation section of the proposal, etc.
- Highlighting if the proposal focuses on any interesting research, learning or innovation, etc. Also if it builds on learning from past proposals developed by the individual or organization, or other Wikimedia communities.
- Analyzing if the proposal is going to contribute in any way to important developments around specific Wikimedia projects or Movement Strategy.
- Analysing if the proposal is coherent in terms of the objectives, strategies, budget, and expected results (metrics).
This is an automatically generated Meta-Wiki page. The page was copied from Fluxx, the web service of Wikimedia Foundation Funds, where the user has submitted their application. Please do not make any changes to this page because all changes will be removed after the next update. Use the discussion page for your feedback. The page was created by CR-FluxxBot.
