===Profile Information
Name: I don't want to disclose it publicly :)
IRC nickname on Freenode: Ostrzyciel
User page: https://www.mediawiki.org/wiki/User:Ostrzyciel
GitLab: https://gitlab.com/Ostrzyciel
Location: Poland
Typical working hours: 10AM to 10PM CEST (UTC+2)
===Synopsis
Based on T164307:
It would be valuable to be able to filter out or highlight edits that have already been "rolled back" or "undone". This task is about adding a "Reverted" filter to the Tagged Edits interface in #mediawiki-recent-changes
{F31616248 size=full, alt=Recent Changes UI}
We will want to identify the edit that is being reverted and tag it with a "reverted" tag.
We'll need to detect when a revision is being rolled back / undone, and then apply a tag to the revision that it is rolling back. This involves defining a tag and implementing a hook which can apply that tag in certain conditions.
I think a lot of the logic for this can based on the discussion in {T152434}. I want to implement this task as well, as a lot of the logic is overlapping, it's just the question of how we integrate these two functionalities together. I would propose this method to just check whether the revision has the reverted tag, as that would be present anyway. A useful addition may be a maintenance script for reprocessing all edits in the DB and applying the reverted tag retroactively.
I have worked a lot with MW (see section //Past Experience//), so I think a more ambitious approach to this project would suit me :)
====Possible Mentor(s)
@kostajh and @Catrope
I have not contacted them yet. I initially planned to do a completely different project and I focused on that. Unfortunately I didn't find anyone willing to mentor that (see T247406).
===Deliverables and timeline
| **Period** | **Task** |
| May 4 to May 31 | **Community bonding period** – refining the proposal and timeline, initial research. First draft on the definition of a //reverted// edit. |
| June 1 to June 7 | Finalizing the definition of a //reverted// edit (a small and quick RfC with the community maybe?), see T152434 for a discussion on this. Deeper research into technical options, choosing implementation details. |
| June 8 to June 21 | Adding the EditResult class, refactoring code in the PageUpdater (T152434). |
| June 22 to June 28 | Updating hooks to use the new class. |
| June 29 to July 3 | **Phase 1 evaluation** |
| July 4 to July 12 | Implementing SHA1-based revert detection. |
| July 13 to July 19 | Adding the new edit tag. |
| July 20 to July 26 | Saving additional info about the revert in the edit tag. |
| July 27 to July 31 | **Phase 2 evaluation** |
| August 1 to August 15 | (optional, but I'd love to have something like this as a system admin) Writing a maintenance script for filling out the reverted tag retroactively for old edits. Probably of little use to Wikimedia given Wikipedia's huge DB size, but could be useful for third-party wikis. |
| August 16 to August 23 | Final corrections, maybe submitting a few patches to extensions and other modules. |
| August 29 to August 31| **Submitting the final work** |
Creating the code for determining which edits are being reverted. Hooking into edit code so the tag is automatically inserted. First draft of automated testing. |
===Participation
To schedule tasks, report progress and do most other dev things I will use Phabricator. The code will of course be in Wikimedia's Gerrit. As for communication I prefer IRC and email, but I can use any other means of communication, such as Zulip.
===About Me
I study at the Warsaw University of Technology. I have a BSc in Computer Science and I am currently pursuing a MSc in Data Science (a CS equivalent). I think I stumbled upon the GSoC program accidentally while browsing mediawiki.org. During the summer I will not have any other significant commitments, I may be unavailable for a few days here and there, but I will definitely deliver everything on time :)
I'm interested in the idea of free culture and software, I currently lead a project dedicated to free humor (more in the next section). I think free culture and open-source software are vital for humanity and that is partially why I participate in MediaWiki-related projects.
=== Past Experience
I've been for over a year a system admin of a medium-sized wiki – Nonsensopedia, which is //kind of// like Uncyclopedia in Polish, but completely different in some regards, most notably it puts a much larger focus on proper licensing and making sure everything there really is **free** and funny. It also has much stricter standards regarding hate speech and controversial stuff.
I am also a sysop of this wiki, so I am very familiar with Special:RecentChanges interface and other MediaWiki moderation tools.
By being a sysadmin I gathered a lot of experience with installing and maintaining MediaWiki. Over the last year I also wrote a few MW extensions for Nonsensopedia that could be useful for other wikis as well, you can find them listed on [[https://www.mediawiki.org/wiki/User:Ostrzyciel|my user page]]. All MW-related code I wrote is on [[https://gitlab.com/nonsensopedia|our GitLab]] group, including some forks of extensions and other tools.
Two of the extensions I wrote use OOUI for their interface:
- [[https://www.mediawiki.org/wiki/Extension:RatePage|RatePage]] uses it for its administration panel (all in PHP, similar to AbuseFilter's UI).
- [[https://www.mediawiki.org/wiki/Extension:Svetovid|Svetovid]] uses OOUI for a complex and dynamic interface that enables semi-automatic link creation (JS and PHP).
I also wrote some patches for MW and other extensions. This includes T246127, T231481, T240893, T205219, d7ff338a4cb3, T228584, T228579 and T248826. There are also a few patches in different states that weren't merged (yet).
I also attended the Wikimedia Hackathon in 2019, which really got me interested in MW development. I met a lot of interesting people there that helped me do a lot of this stuff, thank you! During that hackathon I worked with Isarra on [[https://www.mediawiki.org/wiki/Extension:THICC|THICC]], an extension that was supposed to utilize Multi-Content Revisions heavily. We never finished it, but I had to get an understanding of MCR in the process :)
As for other programming experience I wrote things in all kinds of languages (C, C++, C#, PHP, JS, Lua, Python, R, Matlab, Forth, 6502 assembly, yeah, I'll stop), but of course I am not proficient in all of them :) I did a lot of university and hobby projects and I also wrote a few commercial applications (databases, production management, webdev, office automation). No programming can of worms scares me :)