Extension:MassMessage/Page input list improvements
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
- 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
- Mockup screenshot for list creation UI
- Rough interactive prototype of how the frontend UI might work
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
- Gerrit change 120334: Add ability to deliver to all pages in a category (microtask)