Page MenuHomePhabricator

GSoC proposal to implement Flow support in Pywikibot
Closed, DuplicatePublic

Description

My name is Alexander Jones, and I want to implement Flow support in Pywikibot.

Personal info and past contributions

I am currently a sophomore at Northwest Vista College, a community college in San Antonio, Texas. My major is computer science, and I currently have a perfect 4.0 GPA. I know several different programming languages, including Java, PHP, Python, Perl, and Lua. Examples of my programming work can be found at my Github page (https://github.com/happy5214); especially notable are my currently in-progress FILG (Python) and RPPDb (PHP) projects. https://gitorious.org/manitae/manitae also has my discontinued, incomplete Manitae game project (until May). I can be found on IRC as happy5214, and I usually idle in at least #wikipedia-en-roads.

I have previously contributed to Mediawiki, submitting small patches to the Scribunto (T49601) and WikiEditor (T39485) extensions. But my biggest contributions to Wikimedia projects have been my edits to the English Wikipedia and Wikidata, which each number over 8,000. Part of my work on both has been creating Lua modules, particularly for road-related topics. I single-handedly devised the framework now used by several road templates, using a database of format strings and specially arranged tables to represent shield, link, abbreviation, and name formats for highway types around the world.

Why I want to work on this

Some of my work has brought me to Pywikibot. I currently operate HappyBot on enwikipedia using two Pywikibot scripts, which I have posted to subpages of https://en.wikipedia.org/wiki/User:HappyBot. Each script updates a series of tables in my userspace using data collected from the catscan2 tool. The scripts run daily and have proven to be reliable, with the exceptions of catscan2 outages.

I love what Flow is trying to do. As a nut for structure, I love the organized nature of discussions that is a goal for Flow. I hope to help promote Flow and contribute workflow descriptions later on. For me, having a coded and formal framework for community processes would be perfect for my view of order.

Issues

Flow is not currently supported in Pywikibot. Flow boards have a different content model than ordinary pages, meaning standard Page objects cannot properly represent Flow-based content. Pywikibot is a popular bot framework for wikis running MediaWiki, including Wikimedia Foundation wikis. Bots are crucial to the proper functioning of most wikis, making important but repetitive edits efficiently. Once Flow is deployed to Wikimedia wikis, it will be imperative for bots to have proper support of the Flow API.

Goals

Obviously, I want to have working code in Pywikibot that can interface with Flow objects through the MediaWiki API by the end of the coding period. But doing that would have to involve learning the codebases of both Pywikibot and Flow, learning and using the testing system, and figuring out the API.

During this project, I hope to:

  1. Establish working relationships with the Pywikibot and Flow teams.
  2. Learn prerequisites, including the MW API, Travis-CI and the testing framework, and the respective codebases and conventions of Pywikibot and Flow.
  3. Create an initial implementation of Flow support in Pywikibot.
  4. Test frequently, including in live testing environments and using Flow-specific and generic constructs where appropriate.
  5. Finish a stable implementation of Flow support in Pywikibot.
  6. If time allows, add a version-tracking construct to enable/disable specific Flow features as appropriate.

Time

I start my summer around May 18, so I can certainly start work by then. I will start my prerequisite research and community outreach sooner than that, having it completed by the start of the coding period. I will have an initial implementation completed by the midterm evaluations, with intensive testing and bug squashing planned for the second half. I plan on documenting the code throughout the process, with the ideal goal of writing and commenting code simultaneously and writing any necessary formal documentation at major stopping points. The end of my summer vacation should be the last week-or-so of August. I will fill in any other needed details later.

Detailed timeline

Before May 25Communication with Flow and Pywikibot teams; research into architectures; learning any requisite technologies; finalizing plan
May 25 - June 7Creating new classes for Flow objects and achieving a partial implementation
June 8 - June 21Completing initial implementation of Flow mappings
June 22 - June 28Documenting new code
June 26 - July 3Midterms
July 4 - July 15Writing new unit tests
July 16 - July 26Fixing bugs found with unit tests; finalizing mapping code
July 27 - August 2Adding version capability
August 3 - August 9Additional thorough testing and documentation writing
August 10 - August 17Buffer for any possible overruns
August 18 - August 23Final evaluations
August 24Start of semester

Other

  • I am only eligible for GSoC.
  • I do not have any other fixed commitments for this summer.

Microtasks

My patch for T69000 has already been merged, and I intend to complete at least one Pywikibot microtask within the next week.

I hope you will accept my (almost late) proposal. Thank you.

Event Timeline

Restricted Application added a subscriber: Aklapper. · View Herald TranscriptMar 26 2015, 1:28 AM

@happy5214 , I believe you also need to register your project in http://www.google-melange.com/

happy5214 updated the task description. (Show Details)Mar 27 2015, 7:37 AM
happy5214 updated the task description. (Show Details)Mar 27 2015, 7:40 AM
happy5214 updated the task description. (Show Details)Mar 27 2015, 9:00 AM
happy5214 updated the task description. (Show Details)Mar 27 2015, 9:09 PM

@happy5214, could you elaborate your proposal on the "Implementation Details"? We'd like to see what your plan of action is. It's good to be as detailed as possible and write down monthly/bimonthly/weekly goals for the course of the project.

happy5214 updated the task description. (Show Details)Apr 19 2015, 7:48 AM