Page MenuHomePhabricator

Community bonding evaluation report for "Implement Flow support in Pywikibot"
Closed, ResolvedPublic

Description

Work done (environment setup, links to patches merged etc.)

I have set up a Vagrant instance on my laptop, and I have set up a code development environment on my desktop with up-to-date copies of the Pywikibot and Flow repos.

I completed T69000 before being accepted to GSoC, and I have plans to finish a new patch for T57113 soon. I'm also indirectly responsible for https://gerrit.wikimedia.org/r/#/c/212244/, which fixed the Flow undo API, through my observation that said API wasn't exposed. Most of my work so far has involved creating a design for the Pywikibot mappings of the Flow objects (T98819). Issues with communication have prevented this task from being completed on schedule, and my fourth design revision hasn't been commented on yet. I was told by my mentor that we don't need a fixed plan by today, but it would have been nice.

Lessons learnt

  • I am a student and I have no real design experience. Designing the mappings was harder than I imagined due to my lack of work designing software.
  • There is a reason why there's a foundation and a whole team of developers working on this software. The architectures of both Flow and Pywikibot are beyond what I could create myself.
  • Poor communication kills and independence is necessary. Even with two mentors, I must come up with my own ideas and inject my style in creating this code. Still, I must be able to seek help where necessary.

Problems faced and solutions found

While I haven't written any code directly related to this project, I have gone through several iterations of my design for the Pywikibot mappings of the Flow API, and I'm not done yet. I did face a dilemma with how to reconcile the API design with how I thought the "proper" OO design should be. I had to make a few compromises to mold the class design to the existing API hooks, like having a method on Topic to edit the topic title instead of simply editing the topic's root post like any other post.

Any changes to the original plan

None as of yet, but I'm pretty sure some will be made with respect to the ordering of first half.

Minimum Viable Product for the project decided

The MVP for this project consists of:

  • A set of classes and API calls in Pywikibot to allow bots to retrieve existing and create new Flow content, such as boards, topics, and posts, supporting at least wikitext as a content format.
  • Tests to ensure proper functionality.
  • The ability to add additional Flow features when needed.

Communication plan with mentor decided

Timing is a huge issue. Right now, I'm debating whether to work during the day or the night. John has bounced around the globe recently, and Matt is currently in Lyon. The vague plan right now is for me to chat weekly with each mentor, likely one-on-one, and as necessary on IRC.

Event Timeline

With regards to MVP, "view, edit" is a bit odd for a library. 'retrieve' is a more appropriate word than 'view'. And from a MVP perspective, I would use 'create' instead of 'edit'. bots primarily need to create new Flow objects, and will only rarely need to edit existing Flow objects or do other actions like delete, undo, lock, etc.

@happy5214 see my comments, can we copy edit this a bit, especially the loosely agreed upon MVP, so this can be accepted and task closed.

happy5214 set Security to None.
happy5214 claimed this task.