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:
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.