Page MenuHomePhabricator

Implement standardized WikiProject Features
Open, HighPublic

Description

How it works now

Currently, you specify sections in the {{Load WikiProject Modules}} template like this:

module1=Discussions
module2=Tasks
module3=Alerts
module4=Maps

On the WikiProject page, the Lua module generates sections based on a name Foo and tries to transclude the subpage /Foo. (Except: if the string is Related WikiProjects it tries to instead load Wikipedia:Related WikiProjects/PAGENAME. This is hardcoded in the Lua module.) If the subpage exists, great. If it does not exist, there is a button prompting the user to create the subpage. See screenshot below:

Screen Shot 2016-05-27 at 12.18.08 PM.png (103×503 px, 21 KB)

MediaWiki has built-in parameters for creating pages based on duplicating existing pages. This is achieved by adding URL parameters to the link the user clicks on to create the new page. Standardized modules are templates that exist at the page Template:WPX module/NAME.

If the name of the section is Discussions, and the user clicks on the Create Module button, the Lua module checks to see if Template:WPX module/Discussions exists. If it exists, it is preloaded in the edit window for Wikipedia:WikiProject Foo/Discussions. Otherwise, nothing is preloaded.

The user makes adjustments as necessary and then saves. Instructions are shown for the user if available. (MediaWiki calls this an editintro.) To use the Discussions example again, the editintro would be located at Template:WPX editintro/Discussions. Instructions could be as simple as "just hit save;" they could also include instructions in how to configure a bot to run through on the WikiProject.

Of course, much of this is theoretical, since this was not built beyond the generic functionality.

How it would work in CollaborationKit

In the edit window for the WikiProject, after the intro, announcements, etc., there would be a dropdown box for specifying a Feature. (I am proposing renaming "WikiProject modules" to "WikiProject Features" to avoid confusion with Lua modules. Note the capital F that indicates this is a specific term.) A Feature could be a blank page or it could be a prefabricated one selected from a dropdown menu. The user can also specify a title, with a default title filled in if a standard Feature is selected.

Standard Features are defined in a JSON blob, possibly in the MediaWiki namespace. I want to encourage people to develop standardized WikiProject Features. This blob would be a list of objects, containing:

  • the name of the Feature
  • a description
  • icon representing the Feature
  • either a page containing the content that would be preloaded on the WikiProject subpage, or the wikitext markup itself (haven't made up my mind). Preloaded text would be used for things like list descriptions or bot configuration templates.
  • the content model, if not wikitext

When a feature is selected from a WikiProject dropdown menu for the first time, the subpage would be created based on the preload content. It would be nice if the page could also appear on some kind of automatically generated list as an instantiation of that Feature. Categories will probably be used for this purpose.

Event Timeline

Harej raised the priority of this task from to High.
Harej updated the task description. (Show Details)
Harej added a project: WikiProject-X.
Harej added subscribers: Harej, Isarra.

Waiting on technical spec for T123028 in case it imposes particular requirements on this.

Temporarily assigning to myself so I can write down the specification of how this will actually work; then I will hand off to @Isarra for further design/implementation consideration

Harej renamed this task from Implement standardized WikiProject modules to Implement standardized WikiProject Features.May 27 2016, 1:11 PM
Harej updated the task description. (Show Details)
Harej removed Harej as the assignee of this task.May 28 2016, 9:09 AM
Harej added a subscriber: Bawolff.

Having now updated the description, I will un-assign myself.

Note: We also need worflow for custom List and wikitext features

Members and Announcements will be built into the extension.

Everything else will be defined on-wiki. When this is deployed I as administrator can set up the configuration file on-wiki for different reports bot features. This is not built in because the current bot scripts are very enwiki-specific and we couldn't, for instance, deploy to Portuguese Wikipedia tomorrow.

List of standard Features would be defined in a JSON blob in the MediaWiki namespace. The prefilled text is defined in the blob for security reasons. In principle non-admin bot operators could have their bots deployed as standard features, but they should ask an admin to add it as a standard feature for them because editing this page means editing the interface.

Rules for standard Features will probably emerge organically as the community decides what is/isn't appropriate to include.

For the first release, the only WikiProject Features that will be available out of the box are generic wikitext and generic list. This is because the initial test will be with a specific group of WikiProjects, with less emphasis (for now) on self setup. However this is a very high priority for after the first release.