Page MenuHomePhabricator

Pywikibot support for Thanks
Closed, ResolvedPublic

Description

Thanks extension allows positive feedback on revisions by logged in users, including comments on StructuredDiscussions boards.
Pywikibot does not support this feature yet.
Pywikibot-Flow does exist, though. Details of implementing support for StructuredDiscussions can be found in T67119.


Support needs to be added for the features which follow. More can be added later on.

1. Adding thanks to normal revisions.
  • Under the History tab of every page, there is a list of revisions of the page containing details of the timestamp the edit was made and the user who made the edits. Next to each revision (if the revision is not by the current logged in user), there is a thank link. Clicking on this link will send an notification to the corresponding user using the Echo extension, unless the user has opted out of receiving thanks notifications. Pywikibot must add support for adding thanks to normal revisions.
2. Adding thanks to comments on StructuredDiscussions boards.
  • Flow extension provides a discussion and collaboration system for talk pages. If Flow is installed (along with its dependencies), the thank link for the corresponding user is available under comments on the Flow boards, clicking which will have the same effect of sending the user Echo Notifications.
3. Getting lists of thanks
  • Each time a user is thanked, a record of the action is added as a log entry at Special:Log/thanks. Furthermore, classes like Revision contain the metadata details of a revision. Pywikibot must implement support for getting lists of thanks, including access to all related metadata as objects, using such existing classes.
4. Adding a thanks_enabled User property
  • Users can disable thanks notifications if they want to. In this case, when the thanks link against their revision is clicked, a "thanked'' message appears instead of the link, but no notification is sent ( T57401 deals with privacy of thanks preferences.) A thanks_enabled property needs to be added for the same to the User class.
5. Creating a table for thanked statistics.
  • This link has tables showing top thankers for two wikis with number of thanks. Pywikibot must add a bot which can create similar tables (both for thankers and the thanked?) showing statistics for top x (where x can be taken as a parameter) users with corresponding number of thanks, for any wiki and for any month (also other time intervals like a week or a year?). Accounts/Users must have the option of opting out of this feature, as is the case with Faebot/thanks.

Other possible features/additions can be inspired from the tasks listed below:


Mentors: @jayvdb, @Legoktm
Microtasks: T129051 T129193 T111735

Related Objects

StatusSubtypeAssignedTask
Resolvedjayvdb
Declineddarthbhyrava
Resolvedjayvdb
Declineddarthbhyrava
Resolvedhappy5214
Resolvedhappy5214
Resolveddarthbhyrava
Resolvedjayvdb
Resolvedjayvdb
Resolvedjayvdb
Resolvedjayvdb
Resolveddarthbhyrava
Resolveddarthbhyrava
Resolvedjayvdb
Resolvedjayvdb
Duplicatejayvdb
Resolvedjayvdb
Resolvedjayvdb
Resolvedhappy5214
Resolvedhappy5214
Resolvedhappy5214
Resolvedhappy5214

Event Timeline

@Legoktm would you be able to co-mentor this project for this round of GSoC?
And if not this, then T85656?

I'd be willing to mentor this, but I'm not sure it's large enough for a full GSoC project?

I'd be willing to mentor this, but I'm not sure it's large enough for a full GSoC project?

Thanks for mentoring, @Legoktm!

I'm not sure if it's large enough, since I have no experience with Thanks yet, unfortunately.
The other option for T89067 is AbuseFilter.
As trainee maintainer for this extension ( and maintainer for Thanks :D ) , do you think implementing Pywikibot support for AbuseFilter would be a relativelylarger project for GSoC?

@jayvdb is already willing to mentor AbuseFilter's corresponding project T85656. Could you please see if you could mentor that, too, in case this project isn't large enough?

I'd be willing to mentor this, but I'm not sure it's large enough for a full GSoC project?

I've expanded the project description to include more activities so that it should be large enough to be a full GSoC project.
I've also included a Thanks JavaScript microtask, so that if there is time remaining the GSoC intern can work on fixing JavaScript bugs in the MediaWiki extension. (we had a similar situation in the Pywikibot-Flow GSoC where there was a short window where Pywikibot coding wasnt possible due to pending code reviews and design discussions, so the GSoC intern worked on missing features in the Flow extension.)

@jayvdb thanks a lot for expanding the project details. :D

I would like to take this project up for this round of GSoC, and will get started on the microtasks straight away.

I've edited the task description with each of the required deliverables elaborated in a little more detail. I've also added some more features/additions whose support could possibly be included in the project scope. Some of these features aren't yet implemented, so maybe the GSoC candidate could do both - implement the feature AND its pywikibot support?

@jayvdb @Legoktm - please correct me if I am wrong?

Hello. I would like to work on this project for GSoC. I have done projects in PHP, Python and JavaScript.

Just to comfirm, the applicant has to implement Thanks extension for WikiMedia, right? WIth logging, stats and other features?

Hello. I would like to work on this project for GSoC. I have done projects in PHP, Python and JavaScript.

To be considered for GSoC 2016, you need to complete some microtasks, and submit your application before 25 March 2016. As you have not started any microtasks yet, you have an awful lot of work to do in the next five days.
https://www.mediawiki.org/wiki/Google_Summer_of_Code_2016#Timeline
https://www.mediawiki.org/wiki/Outreach_programs/Life_of_a_successful_project

Also worth noting that @darthbhyrava intends to apply for this project. It is certainly acceptable for two applications for the same project, in which case we will select the best candidate for the project. Each applicant needs to create a "proposal subtask" of this "project task", as described at https://www.mediawiki.org/wiki/Outreach_programs/Life_of_a_successful_project#Submitting_your_proposal

Just to comfirm, the applicant has to implement Thanks extension for WikiMedia, right? WIth logging, stats and other features?

No. The Thanks extension already exists. This project is to allow Pywikibot to access Thanks functionality. Please read this tasks description very carefully.

Can you add a per-user opt-out for #5, as a requirement?

Although "A thanked B" is public data (which is now clear in the UI), there was some controversy about publishing it in aggregate. Fæ helpfully added an opt-out, as noted at https://meta.wikimedia.org/wiki/User:Faebot/thanks .

In T129049#2192164, @Mattflaschen wrote:

Can you add a per-user opt-out for #5, as a requirement?

Although "A thanked B" is public data (which is now clear in the UI), there was some controversy about publishing it in aggregate. Fæ helpfully added an opt-out, as noted at https://meta.wikimedia.org/wiki/User:Faebot/thanks .

Added to the description. :)

@Legoktm @jayvdb what is the status of this task? would you be interested in mentoring this project for GSOC 2017 or Outreachy Round 14?

It's a shame this project wasn't completed last year. I found out over the winter break that I was privately advised to apply for this project in 2016, but obviously that was too late for last year's GSoC. If there's interest in mentoring this for this year's GSoC, I would be willing to apply. I completed the Pywikibot-Flow project back in 2015, so I already have familiarity with Pywikibot and @jayvdb (one of my mentors that year), and I also know @Legoktm from IRC communications related to on-wiki work.

@happy5214 , I've removed myself from other mentoring projects, but I am interesting in doing this one if you want to apply. Grab me on gitter to chat?

@jayvdb I'm wondering if you would be comfortable mentoring this project by yourself, or you would need another mentor? In the former case, is it okay if I feature this task for the upcoming round of GSOC 2017/Outreachy Round 14?

Hi @srishakatux , I guess that depending on the applicant. @happy5214 is interested, has a good background knowledge for this project, and we've got a good working relationship already, so it would be easy to sole-mentor the project with him. But a different applicant might bring new challenges which would mean a second mentor would be good to have.

I will write out an application for this project and post it later this week or this weekend.

jayvdb claimed this task.