Page MenuHomePhabricator

Convert GrowthExperiments-* project to subprojects of GrowthExperiments
Closed, ResolvedPublic

Description

All tasks tagged as growthexperiments-* are also related to GrowthExperiments by definition, they're subfeatures defined in the GrowthExperiments repository.

@Catrope suggested setting the projects as subprojects of GrowthExperiments.

  1. GrowthExperiments-ImpactModule
  2. GrowthExperiments-HelpModule
  3. GrowthExperiments-HomepageDiscovery
  4. GrowthExperiments-ImpactModule
  5. GrowthExperiments-Mentorship
  6. GrowthExperiments-Help panel
  7. GrowthExperiments-Homepage
  8. GrowthExperiments-NewcomerTasks
  9. GrowthExperiments-StartModule

Tagging as Diffusion-Repository-Administrators, since they have the power to edit H26 and other global herald rules, and Project-Admins, to judge if we want to sub-project them.

CCing @JTannerWMF, since she created the projects IIRC.

Event Timeline

For starters I'd correct the naming of some of the projects above. It looks like there's no standard hyphenation See 2 and 9 for example.

Moving projects into subprojects is something that @mmodell can do using a CLI script. I suggest we carefuly discuss whether that is the approach the growth-team wishes given that you can't add multiple subprojects, nor you can subscribe to a subproject, etc.

As for editting global herald rules, yeah, we can do that. I'd fix the naming issues first though.

Removing Diffusion-Repository-Administrators as this is unrelated to maintaining repos.

Adding Phabricator as this requires CLI access for converting from parent- to sub-projects. (If that is the proposal? It's unclear to me.) See https://www.mediawiki.org/wiki/Phabricator/Project_management#Parent_Projects,_Subprojects_and_Milestones for the consequences of this proposal.

Or is this about creating a Herald rule and not convert to sub-projects?

Which problem is this task supposed to solve exactly?

I think subprojects is the best way to go here. @JTannerWMF agreed to do this.

I created the above tags that should be subprojects of GrowthExperiments instead of stand alone projects. I will add this to my to do list to rectify, thank you for raising this.

Alright, my understanding is that we go for subprojects. Correct me if I misunderstood. :)

One warning: Soon-to-be-parent project #GrowthExperiments has two members but Projects that are parents of subprojects cannot specify members. Instead, the members of all its subprojects are treated as being is members.

Then, if I get it right, I could:

If that's all fine with you, then please feel free to assign this task to me.

Mentioned in SAL (#wikimedia-releng) [2019-08-28T00:07:02Z] <James_F> Zuul: Migrate MobileFrontend to extension-javascript-documentation T230831

@JTannerWMF Are you okay with @Aklapper's explanation above? He can convert those tags to subprojects if you're okay with it. Thanks.

Removing Diffusion-Repository-Administrators as this is unrelated to maintaining repos.

Unrelated to maintaining repos, but repo admins have ability to edit (global) herald rules. It's a nonsense, probably, but it works like that. Hence, it's related to repo admins in some sense. Given I don't see a project related to (only) rules (similar to how #triager works), I tagged repository admins, since this (originally) was about herald rule, before the idea of subprojects arised.

Reminds me of https://m.mediawiki.org/wiki/Topic:V5s5yunijc16wt94 I created some time ago to notify about exactly this issue. Maybe worth a task on its own? :)

Which problem is this task supposed to solve exactly?

It's supposed to make Growth-Team (and GrowthExperiments, it the solution wouldn't be subprojects) be added when "subprojects" are. This is an issue because it doesn't make any sense to work like that when I add GrowthExperiments, but not when I add a subproject, but not GrowthExperiments. Precisely, it kinda saves some time to add just the subproject, and not the rest of the tags, so I do that usually, but sometimes notice Herald didn't work because I didn't add the "whitelisted" tag.

Honestly I don't care if the solution would be to make them subprojects for real or just the herald rule being edited. I kinda feel those are two issues, because to solve my issue, herald rule edit is a good short term solution, while we can discuss if we want it to be subprojects for weeks, months or even years, without me noticing it when working with Phab :).

Because of what I mentioned above, I believe both herald rules, and project management are relevant (unless this is split into two issues, see above), while Phabricator is relevant only once this becomes "implement an agreed solution". Since you're the bugmaster, not re-adding the tag, but leaving for you to rethink.

Alright, my understanding is that we go for subprojects. Correct me if I misunderstood. :)

One warning: Soon-to-be-parent project #GrowthExperiments has two members but Projects that are parents of subprojects cannot specify members. Instead, the members of all its subprojects are treated as being is members.

Then, if I get it right, I could:

If that's all fine with you, then please feel free to assign this task to me.

Hey Andre,

this sounds great can you kindly proceed with this when you have the opportunity?

I can also help with the server side of this but Andre asked to assign to him so I'm doing so now.

[...] It's a nonsense [...]

I presume Diffusion-Repository-Administrators where granted the ability with views to migrating code review from Gerrit to Phabricator, hence the ability to create global herald rules to trigger audits, reviews, etc., was required. Diffusion repositories, while discouraged, are still avalaible for creation so keeping this functionality for us, which by the way was never misused by us, is interesting.

@mmodell: Following the list in T230831#5433325, I succeeded in silently removing GrowthExperiments from 97 tasks, but next step breaks. Any thoughts?
(Also note that https://phabricator.wikimedia.org/tag/growthexperiments/ is a 404, see T224662#5356515.)

aklapper@phab1003:~$ sudo /srv/phab/phabricator/bin/move_project --subproject --child "GrowthExperiments-Help_panel" --parent "GrowthExperiments" --keep-members child
[2019-09-11 12:51:05] EXCEPTION: (AphrontParameterQueryException) Expected a numeric scalar or null for %Ld conversion. Query: project.id IN (%Ld) at [<phutil>/src/xsprintf/qsprintf.php:470]
arcanist(), ava(), phabricator(), phutil(), security(), sprint(), translations(), wmf-ext-misc()
  #0 qsprintf_check_scalar_type(string, string, string) called at [<phutil>/src/xsprintf/qsprintf.php:389]
  #1 qsprintf_check_type(array, string, string) called at [<phutil>/src/xsprintf/qsprintf.php:155]
  #2 xsprintf_query(array, string, integer, array, integer) called at [<phutil>/src/xsprintf/xsprintf.php:70]
  #3 xsprintf(string, array, array) called at [<phutil>/src/xsprintf/PhutilQueryString.php:31]
  #4 PhutilQueryString::__construct(AphrontMySQLiDatabaseConnection, array) called at [<phutil>/src/xsprintf/qsprintf.php:78]
  #5 qsprintf(AphrontMySQLiDatabaseConnection, string, array) called at [<phabricator>/src/applications/project/query/PhabricatorProjectQuery.php:492]
  #6 PhabricatorProjectQuery::buildWhereClauseParts(AphrontMySQLiDatabaseConnection) called at [<phabricator>/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php:479]
  #7 PhabricatorCursorPagedPolicyAwareQuery::buildWhereClause(AphrontMySQLiDatabaseConnection) called at [<phabricator>/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php:309]
  #8 PhabricatorCursorPagedPolicyAwareQuery::buildStandardPageQuery(AphrontMySQLiDatabaseConnection, string) called at [<phabricator>/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php:283]
  #9 PhabricatorCursorPagedPolicyAwareQuery::loadStandardPageRowsWithConnection(AphrontMySQLiDatabaseConnection, string) called at [<phabricator>/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php:276]
  #10 PhabricatorCursorPagedPolicyAwareQuery::loadStandardPageRows(PhabricatorProject) called at [<phabricator>/src/infrastructure/query/policy/PhabricatorCursorPagedPolicyAwareQuery.php:268]
  #11 PhabricatorCursorPagedPolicyAwareQuery::loadStandardPage(PhabricatorProject) called at [<phabricator>/src/applications/project/query/PhabricatorProjectQuery.php:250]
  #12 PhabricatorProjectQuery::loadPage() called at [<phabricator>/src/infrastructure/query/policy/PhabricatorPolicyAwareQuery.php:248]
  #13 PhabricatorPolicyAwareQuery::execute() called at [<phabricator>/src/infrastructure/query/policy/PhabricatorPolicyAwareQuery.php:180]
  #14 PhabricatorPolicyAwareQuery::executeOne() called at [<phabricator>/scripts/move_beneath.php:226]
  #15 load_project(string) called at [<phabricator>/scripts/move_beneath.php:104]

@Aklapper: I got it to work by using the numeric project id numbers:

sudo /srv/phab/phabricator/bin/move_project --subproject --child 3985 --parent 3716 --keep-members child

And I fixed the GrowthExperiments hashtag by adding the hashtag explicitly on the project edit page.

@Aklapper: I didn't continue any further because I don't know precisely how far along you were in the process. Should I move the remaining projects or do you want to try it?

Note: you can get the numeric id by going to a project and picking the number from the url, e.g. https://phabricator.wikimedia.org/project/manage/3716/

Aklapper renamed this task from Add GrowthExperiments to tasks tagged as GrowthExperiments-* to Convert GrowthExperiments-* project to subprojects of GrowthExperiments.Sep 12 2019, 3:27 PM
Aklapper added a subscriber: kostajh.

Thanks everyone! I converted the rest of the projects, so we should be done here.

One warning: Soon-to-be-parent project #GrowthExperiments has one member but Projects that are parents of subprojects cannot specify members. Instead, the members of all its subprojects are treated as being is members.

For the records, that's @kostajh as can be seen in https://phabricator.wikimedia.org/project/members/3985/. @kostajh may want to check again of which projects to be a member (or not). :)