Page MenuHomePhabricator

Have a special page for mentors to sign up
Open, Needs TriagePublic


At the moment, the page that lists mentors is not really easy to create and maintain. We've been able to have this page made of wikitext, with some advice at the top, only because the page was manually created under supervision. And sometimes, some elements were missing: advice at the top, mentors' descriptions badly formatted, etc.

Scaling to more wikis en masse will make impossible to monitor that page creation. We need a special page integrated to the Growth experience to replace it.

This special page would display the list of all mentors.

Comments about requirements listed on description
  • Limit access. If a user hasn't reached a given threshold, they can't add their name to this page. (By default: 500 edits + 30 days of experience)

⚠ Such a change would be fairly trivial to introduce by using user rights, generally speaking. However, the specified defaults would make this a bit harder. 500/30 is enwiki's extended confirmed user group, adopted by few other wikis as well. However, it is not MediaWiki default. If we really want to use 500/30 rather than MediaWiki's native autoconfirmed group, we would have to introduce such a group globally. Technically speaking, that would not be a problem, but this could be a concern from the community perspective. @Trizek-WMF or @MMiller_WMF have probably some opinions about this.

✅ This should be easy. We can use MediaWiki's native user rights system, and assign this permission to some (default) group. I personally propose administrators, since bureaucrats are traditionally responsible for user rights management.

✅ That is trivial to do, and standard for special pages. We can even link to for docs, as we do with Special:ClaimMentee already.

  • Provide a field for mentors to add their description, matching the 240 characters limits we've set. This would also prevent any kind of wikitext formatting being added.

✅ No issues with this one.

  • Have a way to distinguish two roles: Teacher and Mentor (see T245639#6509843)

✅ Should be ok.

Implementation notes

It should be possible to store the information to user properties table (used for user preferences). However, I believe that it would be better to create a new database table for mentors, That would allow us to scale mentorship feature easily, add more information for each mentor, etc. easily, without having to re-think the whole model. Second reason is that storing it into the user_properties table would require us to search by up_value, which isn't something the table is built for.

Creating a new database table is something that's currently being tried by our team for add a link recommendations. The DBA team would be certainly happy to help, if needed.

How hard will this be?

Building the interface for the sign up form is easy. However, figuring out where to store the information about the list of mentors is tricky. We can try to edit the backend wiki page via the sign up form, which is hopeless, because wikitext is not structured. We can store it as an user property; that would mean we would have no ability to enforce who can be a mentor (ie. no permission checks), since anyone can edit their own user properties via the API. Third option would be creating a database table for mentors, which would fix all the issues with other methods, but it is not a trivial amount of work, and would probably require more than a week of work.

Event Timeline

Per project description

This project tracks issues relating to the SpecialPage system in MediaWiki, and a handful of individual special pages that bundle with MediaWiki core.
All other special pages are not tracked here, they are instead tracked as part of the feature they belong to. For example, the extension that ships it, or the feature it is related to.

Oh, got it! Sorry about that!!

Trizek-WMF renamed this task from Have a special page for mentors to Have a special page for mentors to sign up.Jan 12 2021, 6:06 PM

And what if, through a special page, we simply create a MediaWiki:Example.json file that each community can parse through scribunto? Then the communities themselves will be able to design it as they want.

Another thought: if such a page is created, then most likely a similar one will be created for the workshops hosts. This page should have different levels of access for sign up, as it will be really easy to chase newcomers through it. But it may be badly needed for universities or compulsory mediation schemes. Perhaps it is worth hanging on it a restriction in rights to administrators, or other flags.

Some thoughts of the day:

Now that we have the Mentor dashboard being built, we can imagine to have this dashboard as the sign-up page.

Possible path:

  1. a user wants to become a mentor
  2. they visit special:MentorDashboard
    1. this page can display some explainations about what it means to be a mentor, and what is expected.
      1. if they pass the threshold defined by the community (at the moment, the level of protection of the sign-up page), they have access to a button for the next step.
      2. If they don't, they get a message about the conditions
  3. the user is invited to define their personal message, and their mentor status (global or workshop). They are warned that, as soon as they click on "next" they will potentially get some questions soon!
  4. the dashboard is enabled, mentor is active.

The current sign-up page would not be necessary anymore, or should be transformed to become the "official" list of mentors (possibly with their activity, to spot inactive mentors).

Mentors can quit and reassign their mentees anytime, using the appropriate dashboard module.