Standardized WikiProject modules. You say "I want a Discussions module", and {{Load WikiProject Modules}} knows exactly what you're talking about and gives you instructions and a pre-load thing.**How it works now**
Examples of standard modules:Currently, you specify sections in the `{{Load WikiProject Modules}}` template like this:
```
* Tasks (with submodules for assessment, SuggestBot, Wikidata-generated worklists)1=Discussions
* New discussionsmodule2=Tasks
* Requestsmodule3=Alerts
* Announcementsmodule4=Maps
* Things powered by other bots like HotArticleBot,```
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:
{F4061472}
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. JL BotCategories will probably be used for this purpose.