Page MenuHomePhabricator

GSoC 2025: Cat-a-lot javascript gadget development
Closed, DeclinedPublic

Description

Project title: Cat-a-lot javascript gadget development
Description of project: Cat-a-lot is a JavaScript gadget primarily used on Wikimedia Commons for categorizing photos. Wikimedia Commons is Wikimedia Foundation's repository with 114 million photos and other media files. Approximately 5% of daily Wikimedia Commons editors utilize this tool. However, it currently lacks an active developer, and several bugs need to be fixed. There are also open feature requests, including improved handling for batch editing thousands of files.
Expected outcomes: documenting the developing process, better batch edit handling
Required skills and/or preferred skills: javascript, html, Vue.js, mediawiki API
Possible mentor(s):

  • Zache (software developer, fixed Cat-a-lot bugs in autumn 2024)
  • Teromakotero (teacher, ICT mentor for teachers in Finland)

Size of project:350
Add a rating of difficulty for the project - easy, medium, or hard. medium:
Microtasks: T386778, T386779, T386783 TODO: links to easy and self-contained tasks on Phabricator that students can work on to get familiar with the project and technologies
Any other additional information that the interns should know about:

NOTE: Currently, most of the development is done on Wikimedia Commons using personal JavaScript pages (example). Describing solid local development process could also be a worthwhile task.
IMPORTANT: GSoC / Outreachy candidates are required to complete micro-tasks during the application period to prove their ability to work on a three month long project.

Event Timeline

Zache renamed this task from GSoC 2025: [add project title] to GSoC 2025: Cat-a-lot tech support.Feb 18 2025, 1:51 PM
Zache renamed this task from GSoC 2025: Cat-a-lot tech support to GSoC 2025: Cat-a-lot javascript gadget developer .
Zache updated the task description. (Show Details)
Zache updated the task description. (Show Details)
Zache updated the task description. (Show Details)
Zache renamed this task from GSoC 2025: Cat-a-lot javascript gadget developer to GSoC 2025: Cat-a-lot javascript gadget development .Feb 18 2025, 2:17 PM
Zache updated the task description. (Show Details)
Zache updated the task description. (Show Details)
Zache updated the task description. (Show Details)
Zache updated the task description. (Show Details)
Zache updated the task description. (Show Details)
Zache updated the task description. (Show Details)

Hi @Zache, I'm Hridyesh! Just dropping a comment to express my interest in working on this project. I have fair amount of experience working with JavaScript, HTML, and Mediawiki API, and I'm eager to help improve the tool's functionality. I've started exploring the project and have gone through the microtasks.
Next, I plan to start by completing those suggested microtasks to familiarize myself with the codebase and the development process. I look forward to the possibility of working together to enhance this tool.

Hi, thank you for your interest! Some practical notes:

  1. I still need to write guidance on Wikimedia gadget development (based on my experience developing Cat-a-lot last autumn) and I will do some housekeeping with Phabricator tickets
  2. Regarding timelines: Accepted mentoring organizations will be published on Feb 27, which is when WMF will be approved as an organization and begin registering mentors and formal project idea defining is after that date. ( https://developers.google.com/open-source/gsoc/timeline )

In any case well come! One question is that are you familiar already with Mediawiki user scripts and gadgets?

Hello @Zache, thank you for your response and the information regarding the GSoC timeline and the upcoming guidance on gadget development. I appreciate your efforts in organizing the Phabricator tickets and providing clarity for potential contributors.

I want to let you know that I am pretty well aware of MediaWiki user scripts and gadgets, although I have not contributed to them directly yet. My experience includes contributing to various extensions like Translate, Universal Language Selector, etc, where my changes have been successfully merged for the task (T65635). Recently, I have explored the Cat-a-lot codebase and gained some understanding of how I can contribute to gadgets and related functionalities.

However, I have some questions regarding the contribution process:

  • Currently, I am working on this micro-task (T386779), once I resolve the issues related to this task and test my changes in my local development environment, how should I submit those changes to you?
  • Would I have to add the edited code in a personal JavaScript page and then mention that page in the Phabricator task, or is there a different process I should follow?

Hello @Zache, I am Rashi, interested in this task. I have also explored it for some time. Additionally, I have good experience with the MediaWiki codebase, as I have successfully merged T385327 and am currently working on an issue in Wikimedia Portals (T386646), as well as T381642 in Codex and T386718 in the project structure.
I would appreciate your further guidance.

FYI, I started to write howto develop Cat-a-lot documentation on Wikimedia Commons ( https://commons.wikimedia.org/wiki/Help:Gadget-Cat-a-lot/Developing ). The phabricator task is T387057. Please check and notify if there is something what is missing or should be improved. Feel free also to edit the text.

Hello @Zache, thank you for your response and the information regarding the GSoC timeline and the upcoming guidance on gadget development. I appreciate your efforts in organizing the Phabricator tickets and providing clarity for potential contributors.

I want to let you know that I am pretty well aware of MediaWiki user scripts and gadgets, although I have not contributed to them directly yet. My experience includes contributing to various extensions like Translate, Universal Language Selector, etc, where my changes have been successfully merged for the task (T65635). Recently, I have explored the Cat-a-lot codebase and gained some understanding of how I can contribute to gadgets and related functionalities.

However, I have some questions regarding the contribution process:

  • Currently, I am working on this micro-task (T386779), once I resolve the issues related to this task and test my changes in my local development environment, how should I submit those changes to you?

The link to the page works fine.

  • Would I have to add the edited code in a personal JavaScript page and then mention that page in the Phabricator task, or is there a different process I should follow?

I have documented the deployment process at Help:Gadget-Cat-a-lot/Developing#Deploying_the_changes. The Special:MediaSearch changes (T386778) are almost ready to merge, so I can demonstrate the process in action. I'll do some additional testing and then submit the merge to production request, which will serve as a practical example of the process.

@Zache, I've completed the local development up to MediaWiki:Gadgets-definition, but I'm unable to create MediaWiki:Gadgets-definition. Could you please help me out with this?

@RJ2904: See https://commons.wikimedia.org/wiki/MediaWiki:Gadgets-definition#Categories for the line to potentially insert. In general, if you think that you cannot do something, please always explain why you think so. Please see https://www.mediawiki.org/wiki/New_Developers#Compose_good_questions - Thanks!

FYI, I started to write howto develop Cat-a-lot documentation on Wikimedia Commons ( https://commons.wikimedia.org/wiki/Help:Gadget-Cat-a-lot/Developing ). The phabricator task is T387057. Please check and notify if there is something what is missing or should be improved. Feel free also to edit the text.

I’ve gone through the documentation Help:Gadget-Cat-a-lot/Developing and it looks like you’ve covered all the essential points for a beginner. All the key prerequisites are clearly explained.

One optional enhancement I’d like to propose is to add an extra point in the prerequisites section. After creating the sandbox copy of the gadget, we could also recommend copying the CSS code, and the dependency codes (such as MediaWiki:Gadget-libAPI.js, MediaWiki:Gadget-SettingsManager.js, and MediaWiki:Gadget-SettingsUI.js). This way, the development version can use these resources without interference from the production gadget.

If you think adding this optional note is a great move, I'll be happy to include it.

@Zache, as you mentioned in the task description to document the whole local development process, concerning it I've successfully installed the Cat-a-lot gadget on my local MediaWiki instance. Would you like me to develop documentation about setting up a local development environment for Cat-a-lot? This guide will cover everything necessary. Let me know how you'd like me to proceed with it!

One optional enhancement I’d like to propose is to add an extra point in the prerequisites section. After creating the sandbox copy of the gadget, we could also recommend copying the CSS code, and the dependency codes (such as MediaWiki:Gadget-libAPI.js, MediaWiki:Gadget-SettingsManager.js, and MediaWiki:Gadget-SettingsUI.js). This way, the development version can use these resources without interference from the production gadget.

I initially left this out on purpose as Gadget-libAPI.js, Gadget-SettingsManager.js, and Gadget-SettingsUI.js are shared with other gadgets, and changing them would require ensuring we don't break anything. This was why I thought that editing them was out of scope and preferred to focus on Cat-a-lot's main codebase. Updating Gadget-libAPI.js is also waiting for T365303 to be completed first.

@Zache, as you mentioned in the task description to document the whole local development process, concerning it I've successfully installed the Cat-a-lot gadget on my local MediaWiki instance. Would you like me to develop documentation about setting up a local development environment for Cat-a-lot? This guide will cover everything necessary. Let me know how you'd like me to proceed with it!

Yes please! :) I would have written it, but I havent really done anything related to installing mediawiki dev-env locally since 2014 so i have postponed starting this..

Gopavasanth subscribed.

Hi @Hridyesh_Gupta, I'm unassigning the project from you since GSoC hasn’t officially started yet. Please take a look at the process and timeline here: GSoC Timeline.

Anyone can apply for this project, and you’re welcome to work on microtasks to gain more familiarity with it. For now, I’m removing you as an assignee, but I look forward to seeing your contributions to the microtasks! Wishing you the best! :)

@Gopavasanth Thank you for the management. Couple of technical questions (from mentor point of view).

1.) Should we remove persons from microtasks also? (or should there be some process how many microtasks one person can claim at one time if there is multiple applicants)
2.) If there is need for more microtasks as applicants have done them i should just write more tasks so there is always something available?

Hi @Hridyesh_Gupta, I'm unassigning the project from you since GSoC hasn’t officially started yet. Please take a look at the process and timeline here: GSoC Timeline.

Anyone can apply for this project, and you’re welcome to work on microtasks to gain more familiarity with it. For now, I’m removing you as an assignee, but I look forward to seeing your contributions to the microtasks! Wishing you the best! :)

Apologies, as I was not aware of this thing, thanks for correcting me @Gopavasanth!
Thanks :)

I initially left this out on purpose as Gadget-libAPI.js, Gadget-SettingsManager.js, and Gadget-SettingsUI.js are shared with other gadgets, and changing them would require ensuring we don't break anything. This was why I thought that editing them was out of scope and preferred to focus on Cat-a-lot's main codebase. Updating Gadget-libAPI.js is also waiting for T365303 to be completed first.

Ohh, if this is the case then we can skip to include the dependencies in the documentation.

Yes please! :) I would have written it, but I havent really done anything related to installing mediawiki dev-env locally since 2014 so i have postponed starting this..

For sure, I'll be glad to do this. :)

I think for installing MediaWiki we don't have to define the entire installation process again as there are already some documentation present on MediaWiki like Local development quickstart and Manual:Installing MediaWiki. So after mentioning these pages, I'll start with the further process to set up a local development environment for the gadget, covering all the remaining necessary points.
Will update you soon regarding it!

Yes please! :) I would have written it, but I havent really done anything related to installing mediawiki dev-env locally since 2014 so i have postponed starting this..

Hello @Zache, I’ve completed the documentation for setting up the local development environment for the Cat-a-lot gadget. The corresponding Phabricator task is T387139.

Could you review it and let me know if there’s anything that could be added or modified? Also, please point out any inaccuracies, if any. Looking forward to your feedback!

Hi @Zache in case you missed the update on the parent task:
Unfortunately, the Wikimedia Foundation will not be participating in this year's Google Summer of Code program. We look forward to coming back in 2026. In the meanwhile, we will be participating in Outreachy round 30 this summer. You can propose a project here. Thank you for your patience and support.

@LGoto Thank you for the information. I did miss that. I will create a new task for the Outreachy and keep this for wrapping up GSoC discussion.

@RJ2904, @Hridyesh_Gupta, @ichandrasharma thank you for your interest to this as potential GSoC project.

I think that I will next continue with T386778 so that it will get MediaSearch to the production and I will have some ideas to add to the local dev documentation.