Grants:Project/Daimona Eaytoy/AbuseFilter overhaul/Midpoint

From Meta, a Wikimedia project coordination wiki


Report accepted
This midpoint report for a Project Grant approved in FY 2019-20 has been reviewed and accepted by the Wikimedia Foundation.
  • To read the approved grant submission describing the plan for this project, please visit Grants:Project/Daimona Eaytoy/AbuseFilter overhaul.
  • You may still review or add to the discussion about this report on its talk page.
  • You are welcome to email projectgrants(_AT_)wikimedia.org at any time if you have questions or concerns about this report.



Welcome to this project's midpoint report! This report shares progress and learning from the grantee's first 3 months.

Summary[edit]

In a few short sentences or bullet points, give the main highlights of what happened with your project so far.

  • A lot of code was cleaned up, made easier to read and to test
  • Several bugs were fixed, although the "hard" bug-fixing part is scheduled for later

Methods and activities[edit]

How have you setup your project, and what work has been completed so far?

Describe how you've setup your experiment or pilot, sharing your key focuses so far and including links to any background research or past learning that has guided your decisions. List and describe the activities you've undertaken as part of your project to this point.

  • We didn't have much to setup, except for establishing a couple of baseline metrics: coverage and coupling;
  • A lot of code was moved around, decoupled, modernized, and covered by unit tests;

Midpoint outcomes[edit]

What are the results of your project or any experiments you’ve worked on so far?

Please discuss anything you have created or changed (organized, built, grown, etc) as a result of your project to date.

  • As mentioned in monthly reports, the coverage went down a little, because some tests were generating coverage for code that they weren't really testing. This caused a reduction of 9% line coverage. As of November 25, overall line coverage is 38.58% as can be seen here. Since the reduction was not accounted for, reaching 50% as per original project goals is somewhat difficult. OTOH, we have also added Selenium tests, that are not counted in the metrics above.
  • Likewise, coupling had also increased a bit, because moving code around requires leaving backwards-compatibility layers in place, and these have the inevitable effect of dragging in more dependencies. This is expected to eventually fix itself, as we migrate more and more code. Here is a picture with the current dependency graph:
    The dependency graph has changed quite a lot!
    .
  • Decoupling will take us some more time, after which we'll begin fixing some bugs and implementing new features.
  • We began fixing some bugs, see the workboard for an overview of some bugs that were fixed.

Finances[edit]

Please take some time to update the table in your project finances page. Check that you’ve listed all approved and actual expenditures as instructed. If there are differences between the planned and actual use of funds, please use the column provided there to explain them.

Then, answer the following question here: Have you spent your funds according to plan so far? Please briefly describe any major changes to budget or expenditures that you anticipate for the second half of your project.

  • As of November 25 the total amount of work is aligned with the excess estimate, perhaps a bit above of that;
  • There's a possibility that we might need to request a budget change (and time extension), depending on how the situation evolves in December.

Learning[edit]

The best thing about trying something new is that you learn from it. We want to follow in your footsteps and learn along with you, and we want to know that you are taking enough risks to learn something really interesting! Please use the below sections to describe what is working and what you plan to change for the second half of your project.

What are the challenges[edit]

What challenges or obstacles have you encountered? What will you do differently going forward? Please list these as short bullet points.

  • A big ostacle, as already mentioned, is that some code coverage was "fake", which caused a big drop in the amount of covered lines. The problem should be resolved now, as we're not aware of any other code that is marked as covered but it actually isn't;
  • Another big ostacle is that a lot of work is blocked on T246539. This prevents us from touching several classes that would really need to be refactored. These classes are also the main cause of tangled dependency graphs. That task should hopefully be resolved soon, after which we'll finish refactoring the code.

What is working well[edit]

What have you found works best so far? To help spread successful strategies so that they can be of use to others in the movement, rather than writing lots of text here, we'd like you to share your finding in the form of a link to a learning pattern.

Next steps and opportunities[edit]

What are the next steps and opportunities you’ll be focusing on for the second half of your project? Please list these as short bullet points. We're going to follow our timeline, although the times in the Timeline tab are not very up-to-date:

  • Finish refactoring the code
  • Finish adding tests
  • Add some namespaces, ensure existing ones make sense
  • Fix some more bugs
  • Implement shared variables

Grantee reflection[edit]

We’d love to hear any thoughts you have on how the experience of being an grantee has been so far. What is one thing that surprised you, or that you particularly enjoyed from the past 3 months?

One good thing is flexibility - each of us can set their own schedule, and with some coordination, the final results are great. Another thing particularly enjoyable is that the more code is cleaned up, the easier it is to implement new features, or refactor other parts of the code -- it's as if things began to settle down, like a transformation from an amorphous block of code into a well-organized graph which is much easier to manage.