Jump to content

Extension:MassMessage/Page input list improvements

From mediawiki.org
Revision as of 17:55, 27 March 2014 by Wctaiwan (talk | contribs) (Deliverables: actually, separate it a bit (in the extremely unlikely case that I fail to do the JS UI, it's still possible to manage lists with the bulk manipulation UI))

MassMessage page input list improvements

Public URL
https://www.mediawiki.org/wiki/User:Wctaiwan/MassMessage_proposal_for_GSoC
Bugzilla report
bug 61255
Announcement
http://lists.wikimedia.org/pipermail/wikitech-l/2014-March/075274.html

Name and contact information

Name
Wen-Chien Chen
Email
wctaiwan at Google's email service
IRC or IM networks/handle(s)
On freenode as wctaiwan (hostmask wikipedia/wctaiwan), usually in #wikimedia-corefeatures while online
Web Page / Blog / Microblog / Portfolio
http://wctaiwan.com/
Resume (optional)
Available on request
Location
Taipei, Taiwan (Waterloo, Ontario, Canada until the end of April)
Typical working hours
9 AM - 12AM UTC+8

Synopsis


Currently, the MassMessage extension reads the list of pages to which a message should be delivered from a wikitext page containing a list of parser functions in the following format:

{{#target:Project:Noticeboard|en.wikipedia.org}}

This is not user friendly, and also technically undesirable since there is no enforced structure for the pages. This proposal seeks to implement a ContentHandler-based backend to replace the current system, and to create a usable frontend for managing the lists stored using the new backend. The resulting product will make managing lists easier, and separate the implementation details of the extension (currently, the use of parser functions) from its use.

Possible mentors
User:Legoktm, User:Prtksxna

Deliverables

The minimum viable product consists of the following components:

  • A JSON-based ContentHandler backend for storing destination lists
    Probably using the data structure at Extension:MassMessage/Spamlist_revamp
  • An interface (probably a special page) for creating destination lists
    It should support cloning an existing list and constructing a list from a wikitext page using the parser functions.
  • An interface for making bulk modifications to a destination list
    Similar to Special:EditWatchlist/raw: The list should be alphabetized, allow arbitrary additions and deletions and automatically remove duplicates on save.
  • Modifying the current message delivery code to support the new backend

Beyond those, the project also includes implementing the following features:

  • A JavaScript / jQuery-based frontend for manipulating the lists allowing efficient insertion and deletion
  • A non-JavaScript-based fallback for the above

Optional deliverables include:

  • An API for users to add / remove their own talk pages from a destination list
  • Autocomplete when adding pages to a destination list

Mockups

Schedule

Week of Task Notes
(Prior to May 19) Familiarise myself with MassMessage's codebase
May 19 Investigate how to work with ContentHandler
May 26 Write backend and tests for backend functions
June 2
June 9 Work on functions and UI for list creation and bulk manipulation
June 16 Modify MassMessage to work with new backend Patchset
June 23 Write unit tests for nessage delivery using the new backend Patchset
June 30 Work on new JavaScript UI for adding / removing items
July 7 Work on non-JavaScript-based fallback UI Patchset
July 14 Work on allowing users to add / remove their own talk pages from lists Patchset
July 21 Fix bugs and make improvements based on code review (have the code merged and deployed) and update documentation
July 28
August 4 Work on adding autocomplete to the JavaScript UI Patchset
August 11 Wrap up any remaining work

Participation

Progress tracking

I plan to maintain a status report in my userspace, where I will list the parts of the project that have been completed, tasks that are in progress, and things I would work on next. I also plan to keep a log of what I have done (similar to what I have been doing at User:wctaiwan/Progress), in order to make it easier for mentors to track my progress.

Source code

The source code will be maintained in a public repository on GitHub. Parts of the project will be submitted to Gerrit as separate patchsets as I finish them, in order to allow for wider review and feedback as I work on the project.

Communication

I will communicate with my mentors mostly through IRC, and outside of reading documentation and Googling, I will probably ask for help in #mediawiki on IRC as needed. I will respond to feedback on Gerrit, on my talk page and on IRC.

About me

I am a fourth-year computer science student at National Taiwan University, currently on exchange at the University of Waterloo in Canada. I have been active on the English Wikipedia since 2011, and I have recently begun submitting patches for MediaWiki extensions due to my participation in UCOSP / Facebook Open Academy.

I am motivated to work on this project because as a Wikipedian, I know that MassMessage is widely used and performs an essential task, so making it more usable and maintainable will have tangible benefits. I also feel that the project is a good match for my skills.

How did you hear about this program?

I became aware of GSoC through online friends who are volunteer MediaWiki developers.

Will you have any other time commitments, such as school work, another job, planned vacation, etc., during the duration of the program?

If selected, I should be able to devote the majority of my time to the project for the duration of the program.

We advise all candidates eligible to Google Summer of Code and FOSS Outreach Program for Women to apply for both programs. Are you planning to apply to both programs and, if so, with what organization(s)?

I am only applying to GSoC, with this being my sole proposal for now.

Past experience

Please describe your experience with any other FOSS projects as a user and as a contributor

Since February this year, I have been working on extending the Thanks extension to support thanking for comments on Flow discussion boards as part of UCOSP / Facebook Open Academy. I have also submitted two small patches to move WMF's custom licence text out of Flow and into the WikimediaMessages extension, in addition to filing a few bugs on Bugzilla. A list of patches I have worked on is available on Gerrit.

Please describe any relevant projects that you have worked on previously and what knowledge you gained from working on them (include links)

My recent work on MediaWiki extensions described above has been my first significant involvement in a large open source project. The experience has improved my PHP and JavaScript / jQuery skills and given me a better understanding of the internals of MediaWiki. Equally importantly, it has familiarised me with MediaWiki's development process (Bugzilla, Gerrit and the code review process, mediawiki-vagrant, finding documentation, getting help on IRC, etc.), so I should be able to work effectively in executing the proposal outlined on this page.

What project(s) are you interested in (these can be in the same or different organizations)?

At the moment, I am mainly interested in the MassMessage project described here, as I believe it is feasible and that I have the skills needed to complete a useful product.

Additional information

See also