Page MenuHomePhabricator

An enhanced cross-wiki watchlist as an OAuth tool
Closed, ResolvedPublic

Subscribers
Tokens
"Love" token, awarded by Luke081515."Love" token, awarded by MichaelSchoenitzer."Love" token, awarded by czar."Like" token, awarded by MGChecker."Like" token, awarded by Negative24."Like" token, awarded by Ricordisamoa.
Assigned To
Authored By
Sitic, Mar 17 2015

Description

Synopsis

As mentioned in T5525: Cross-wiki watchlists I want to develop an enhanced cross-wiki watchlist as an OAuth tool which runs on Toolforge. The goal of this project is to build a "better" watchlist, which includes a cross-wiki watchlist, cross-wiki notifications, dynamic filtering of the watchlist (project, namespace, searching etc.) and inline diffs (e.g. per default for all talk pages). Generally I see the opportunity to experiment with the design and functionality of a watchlist and do things differently then in the current MediaWIki watchlist.

Motivation

The watchlist is the central place for most active editors, more tools which help to handle this resource are needed. The (relatively) new OAuth extensions allows to build such tools in a secure way and are accessible to users in just two clicks. I generally would like to improve readability of the watchlist, In my experience the current MW watchlist doesn't allow me to scan quickly over my watchlist. I would envision that the design of the tool would go more in the direction of the mobile watchlist and would incorporate some ideas from mw:Micro Design Improvements/Watchlist UI.

A cross-wiki watchlist has long been wished, see T5525: Cross-wiki watchlists and enwiki:Global, cross-wiki, integrated watchlists. A cross-wiki watchlist and cross-wiki notifications would help editors to stay aware of smaller projects which they may don't consider their home-project. The former tool Luxo's gWatch provided such a cross-wiki watchlist.

Why not as an MW extension?

I don't see T5525: Cross-wiki watchlists as MW extension fit for an GSoC project, as it involves modifying database structures and the complex watchlist code. The GSoC project from 2012 on watchlist groups is still waiting for a rebase & code review, I fear that a GSoC project for a MW cross-wiki watchlist implementation could easily end up with the same fate as it is so complex. A external OAuth tool doens't have these problems, it doesn't need a code review to be deployed or changes to any existing code. It would mainly use the watchlist API and some queries to the replication databases on tools. From a design standpoint, it has the freedom to do things differently and get immediate user feedback on these.

Deliverables

The primary deliverable for this project

  • Minimum viable product
    • Tool running on Tool Labs ✓
    • Authentication via OAuth ✓
    • collective watchlist for all SUL-connected Wikimedia projects ✓
      • edits ✓
      • logevents ✓
    • filter watchlist by project, namespace, bot edits, minor edits, IP/user ✓
    • user can set the timeperiod for which the watchlist is shown ✓
    • user can select if only show latest changes per page is shown ✓
    • improved design which is more similar to the mobile watchlist. ✓
  • Major features to implement when mvp is reached
    • i18n support ✓
      • basic i18n support ✓
      • integrate with Translatewiki ✓
    • cross-wiki echo notifications ✓
    • an redefined design with more options (e.g. rollback) ✓
    • support for unified and per project subdivided watchlists (similar to the former Luxo's gWatch tool) ✓
    • support for inline diffs ✓
  • additional features (should be included, but more likely to be optional if a problem arises)
    • allow users to rollback edits if the diff is shown (kind of, adds link to revert an edit ✓)
    • Add support for flagedrevs (unreviewed edits) ✓
    • ORES support ✓
    • highlight watchlist entries for pages which the user has recently edited
    • auto-show diffs for "important" pages, e.g. pages which the user has recently edited, where the user has been mentioned or in general for talk pages.

Timeline

PeriodTask
April 27th to May 25thCommunity bonding period. Figure out how the design should look like, fix bugs and workarounds in the current prototype. Discuss the implementation plan with mentors. Set up a separate tool on Tools for the development. Implement support for all SUL-connected Wikimedia projects, find on which projects the user is active and retrieve the watchlist for these wikis.
Week 1 (May 25th - May 31st)Work on design, add functionality which MW watchlists already offer to users similar to the design idea proposed at mw:Micro Design Improvements/Watchlist UI.
Week 2 (June 1st - June 7th)Add support for log events, let users set the timeperiod for which the watchlist is shown, work on design.
Week 3 (June 8th - June 14th)Add support to filter watchlist by project, namespace, bot edits, minor edits, IP/user.
Week 4 (June 15th - June 21st)Finish minimum viable product, ping possible users and ask them for feedback on the current state of the project.
Week 5 (June 22nd - June 28th)mid-term evaluation, react to feedback from users, fix bugs, add minor features, refine design.
Week 6 (June 29th - July 5th)Implement cross-wiki notifications.
Week 7 (June 6th - July 12th)Add support for inline diffs.
Week 8 (July 13th - July 19th)Add support for both unified and per project subdivided watchlists.
Week 9 (July 20th - July 26th)Refine design, fix bugs etc.
Week 10-12 (July 27th - August 16th)Get more user feedback, refine current functionality. Implement the additional features.
17. AugustSuggested pencils down date
18. August - 28. AugustCleanup code, write documentation, etc.
28. AugustFinal evaluation deadline

Participation

Developing the project as on OAuth tool that lives on Toolforge allows immediate deployment of changes and engagement with users. I will reach out to users through some popular project pages when the minimum viable product is ready to get feedback from users and to find out more on how users really want the watchlist to be.

I will keep a weekly log on the phabricator (T100166) for the progress reports and keep the documentation/feedback page on meta:crosswatch up to date.

When the this project is "stable" I would announce it via Tech News.

Prototype

I've made a prototype which shows that the general setup is already working: tools.wmflabs.org/crosswatch.The source code of the prototype is available on Git.

It's currently very limited, as it only queries a list of hand-picked projects and doesn't offer any options. While it currently looks similar to the well-known mediawiki watchlist I don't think it will when it's "released".

  • Implementation

    The implementation is chosen in a way that it can life well on Toolforge and also be responsive if a larger number of users access it as the same time.

    • angularjs for the frontend/client-side rendering
    • angular-translate for i18n support (should integrate well with Translatewiki)
    • diff-match-patch for human-readable diffs
    • python's Tornado web server with sockjs support, flask-mwoauth for Oauth negotiation
    • python's celery as task manager with dedicated worker processes. The webserver itself is very thin and mainly starts new tasks and pushes results back to the client with redis pubsub and websockets.

    About me

    I'm a physics student at the University of Göttingen and mostly active in the german wikipedia since 2010. I run a pywikibot based bot there named AsuraBot.

    • Name: Jan Lebert
    • Email: jan.lebert (at) gmail.com
    • IRC nick: sitic
    • Location: Germany (UTC+02:00)
    • Typical working hours: between 10 AM and 1 AM.
    • I have only applied for this proposal on GSoC, I'm not eligible for FOSS Outreach Program for Women.
    • I have some other time commitments during the GSoC, I will be able to devote the majority of my time for the project and also work on weekends on it.
    • As microtasks I've created the prototype and also created a minor pull request for the python mwoauth library

    Possible Mentors

    @yuvipanda and @Legoktm.

    Event Timeline

    There are a very large number of changes, so older changes are hidden. Show Older Changes
    Sitic raised the priority of this task from to Needs Triage.Mar 17 2015, 12:59 PM
    Sitic updated the task description. (Show Details)
    Sitic added a subscriber: Sitic.
    Restricted Application added a subscriber: Aklapper. · View Herald TranscriptMar 17 2015, 12:59 PM
    Sitic renamed this task from A enhanced cross-wiki watchlist as an OAuth tool to An enhanced cross-wiki watchlist as an OAuth tool.Mar 17 2015, 1:12 PM
    Qgil added subscribers: Mvolz, Qgil.

    Interesting! This idea has some similarities with T91655: Editor-focused dashboard and I wonder whether you, @Mvolz or both would like to approach positions to work together as candidate / mentor.

    Sitic updated the task description. (Show Details)Mar 17 2015, 2:11 PM
    He7d3r added a subscriber: He7d3r.Mar 17 2015, 5:04 PM
    Sitic added a comment.Mar 17 2015, 8:37 PM

    Interesting! This idea has some similarities with T91655: Editor-focused dashboard and I wonder whether you, @Mvolz or both would like to approach positions to work together as candidate / mentor.

    I have only very little experience with PHP so I shy a bit away from writing a MW extension. I'm not sure what could be incorporated in this proposal, to pick one point:

    In T91655, @Mvolz wrote:
    • Articles you've recently edited (for picking back up where you might have left off)

    I was thinking about highlighting watchlist entries for pages which I have recently edited. The idea is that those edits might be triggered by my edits and I probably want to see them.

    (Additionally a filter based on the pages which I've edited more then x times would be very nice. Those articles are likely the most important to me. I'm not sure how to do that performantly, the tool supercount which determines the 10 Most Edited Pages takes a very long time to load for users which are very active.)

    Qgil added a comment.Mar 19 2015, 10:08 AM

    @Sitic, I recommend you to send an email to wikitech-l announcing your proposal and asking for mentors. With so little time to maneuver before the deadline, any push will help.

    Se4598 added a subscriber: Se4598.Mar 19 2015, 4:35 PM
    Ricordisamoa added a subscriber: Ricordisamoa.
    Niharika assigned this task to Sitic.Mar 22 2015, 3:40 AM
    Niharika triaged this task as Normal priority.

    Been looking at this, and this actually seems like something I'll be interested in mentoring. @Legoktm suggested @Bawolff to co-mentor.

    Sorry, but i dont want to be a mentor this year.

    Sorry, but i dont want to be a mentor this year.

    :(

    Since superm401 is going to mentor one of the projects I was previously planning to, I can be a co-mentor for this project now.

    jayvdb added a subscriber: jayvdb.Mar 26 2015, 12:30 AM
    Sitic updated the task description. (Show Details)Mar 26 2015, 2:33 AM
    Sitic removed a subscriber: jayvdb.
    Sitic added a subscriber: jayvdb.
    Elitre added a subscriber: Elitre.Mar 26 2015, 10:19 AM
    Negative24 added a subscriber: Negative24.
    Sitic updated the task description. (Show Details)Mar 27 2015, 5:08 PM
    Mvolz removed a subscriber: Mvolz.May 9 2015, 5:38 PM
    Sitic updated the task description. (Show Details)May 21 2015, 9:54 PM
    Sitic updated the task description. (Show Details)May 23 2015, 2:50 PM
    Sitic updated the task description. (Show Details)May 24 2015, 1:56 PM
    jayvdb removed a subscriber: jayvdb.Jun 19 2015, 3:11 AM
    Restricted Application added a subscriber: Luke081515. · View Herald TranscriptJul 1 2015, 4:56 PM

    @Sitic Will it be possible to remove pages on watchlist with your tool? I think, this would be a really useful feature.

    Sitic added a comment.Jul 2 2015, 1:40 PM

    Yes, or at least technically and from a design perspective this is not a problem.

    I plan to show a diff for an edit when clicking on a watchlist entry together with revert and edit button. Adding an unwatch button should be easy. [Currently it only adds links to page history and user contribs when clicking on a watchlist entry.]

    I'm also hoping that T100508: Watchlist expiry: Watch pages for a specified time frame (2013) gets implemented. For crosswatch a "mute" button to hide a page for a certain period might also be very nice, but this is technically more complex.

    Sitic updated the task description. (Show Details)Jul 2 2015, 1:41 PM
    Stryn added a subscriber: Stryn.Jul 6 2015, 6:43 PM
    Sitic updated the task description. (Show Details)Aug 4 2015, 12:15 AM

    Hello!

    End of GSoC is fast approaching. 17 August is "Suggested pencils down" deadline and 21 August is "Firm pencils down" deadline. It is expected that you don't dive into new features which might take longer than two weeks to complete and instead work on polishing up your project, testing thoroughly and getting your code merged into the main branch. I hope this project is almost complete so you can merge it and make it available to everyone as quickly as possible. :)

    A few questions (for both mentors and student):

    • Are you confident in completing the project on time?
    • By when do you think you can merge the code, if at all?
    • Are there any major blockers or important missing features?

    We are looking for projects which are (nearly) complete to feature on our post on Wikimedia and Google OSPO's blogs (for example: http://google-opensource.blogspot.in/2015/02/google-summer-of-code-wrap-up-processing.html). If you're interested in getting yours up there, hurry up and get this finished!

    The hard deadline on getting code merged is September. T101393: Goal: All completed GSoC and Outreachy projects have code merged and deployed by September for details.

    We'll be asking the students to demo their projects towards the end of the program as well.

    Good luck!

    czar added a subscriber: czar.Aug 8 2015, 3:53 PM
    czar awarded a token.Aug 8 2015, 4:12 PM
    Sitic added a comment.Aug 13 2015, 3:40 PM

    Hey @NiharikaKohli, sorry for the late reply (I've been travelling and only had bad internet the last days). @yuvipanda and I happen to be in the same place for the next days, so that should give us the opportunity to work on crosswatch.

    The project is in good shape and on schedule, the only big feature missing so far are subdivided watchlists, which should be ready soon. Everything is deployed on http://tools.wmflabs.org/crosswatch/, only T108247: Add crosswatch project to translatewiki is waiting for (external) review and merge to enable translations via translatewiki.

    Hi, I have associated two blocked-by tasks with this project.

    For the student:

    1. Please go through the checklist in the end-term evaluation and fill out the fields which require any links. The checkboxes are for the mentor(s) only. Adding information on the past projects page is your task.
    2. Ensure that you have completed all the items listed in the end-term evaluation task. If there's a strong reason about why a particular item was not completed, please comment on the task and we shall look into it.
    3. Wrap-up report is mandatory and so is a demo-able link to the project (either in production or in a demo server).
    4. If you want your project to be featured in the blogpost on the Google OSPO blog, kindly comment back with a short, catchy description of the project along with a screenshot.
    Sitic updated the task description. (Show Details)Aug 19 2015, 7:24 PM
    Legoktm closed this task as Resolved.Aug 23 2015, 5:42 AM

    Congrats on passing GSoC! :)