The Signpost

WikiProject report

Project banner meta-templates

Almost everyone who has participated in a WikiProject is familiar with project banners—the ubiquitous templates that appear on article talk pages to indicate that an article is associated with a particular WikiProject. WikiProject banners have evolved from simply being a way to mark a project's scope and recruit new editors to a sophisticated system for tracking metadata about articles, such as assessment grades, review statistics, and areas needing further work.

What many don't know is that almost all project banners are actually implemented through a single meta-template—the aptly named {{WPBannerMeta}}. First created in February 2008, the meta-banner allows WikiProjects to easily construct very sophisticated banner templates without the need to reinvent—or even fully understand—the complex logic involved in implementing many of their more popular features.

Today, we've asked Happy-melon, MSGJ, and Road Wizard, three editors involved in maintaining the meta-banner, to answer a few questions about their work:

1. What is the history behind {{WPBannerMeta}}? How did the idea of a meta-template for WikiProject banners come about?

Road Wizard: I wasn't involved with WikiProject banners at the time, but looking back through the archives it appears that the idea came from Happy-melon. I think the second comment by Happy-melon in the conversation at Wikipedia talk:WikiProject Council/Archive 7#WikiProject banners answers this question quite well.
Happy-melon: I wrote the original design for a meta-template for WikiProject banners, always with the expectation that it would grow and develop significantly as it became more widely utilised. The original reasons for wanting such an abstraction haven't changed: to allow WikiProjects to quickly and easily develop a project banner that's useful to them, taking advantage of all the latest 'technology' and features that are always being developed, and conversely centralising the development and deployment of that functionality to allow important changes to be made with the minimum of effort. Features like the C-Class rollout, the tmbox CSS classes, the magic banner shell nesting, and countless other improvements to the way WikiProject banners are implemented, would have been infinitely easier to implement if we had already had the meta-template structure in place; as it was, we had to individually edit thousands of separate banners. As we approach the completion of the WPBM deployment (the conversion of {{WPBiography}} and {{WPIndia}} last week brings the total to 1,330, covering 99% of all banner templates, and 99.9% of talk page instances) such actions will become much easier in the future.

2. How does the meta-template work? What functions does it support?

MSGJ: Over time, the meta-template has developed so that it supports pretty much all functionality that WikiProjects could desire, from the simplest banners which are basically just message boxes, up to the most complicated which support features such as:
  • Sub-projects or taskforces,
  • B-class checklists,
  • Portal links and icons,
  • Alerts for when an article is lacking an image, infobox, taxobox or otherwise needs attention, and
  • Any choice of quality assessment scale.
Recent developments include:
  • The automatic detection of substituted banners (which fill the page with template code and thereafter don't benefit from updates) so that they may be fixed,
  • An improved system for collapsing notes when there are more than a specified number of them, and
  • Better support for priority scales (which are used by a significant minority of WikiProjects instead of an importance scale).
The most complicated banner template is probably {{WPBiography}}, which is also the most used with ¾ million transclusions. This was converted to use the meta-template in early October 2009.
We are constantly trying to find a balance between supporting as many functions as possible which projects will find useful, while not over-complicating the template which would make it harder for the majority of projects to use. For example, there are a few projects which like to include a to-do list for tasks on articles within their scope. As this is a relatively uncommon request, it is not worth supporting it in the main template; instead the extra code is "hooked" on, in the appropriate place and everyone is happy.

3. How smooth has the deployment process been? Have projects readily adopted the new model? Have there been any particularly notable successes or failures?

Happy-melon: What the deployment of WPBM has really highlighted for me is just how undersupported many of our WikiProjects are. In literally hundreds of cases, we found projects that were either totally inactive, or had no one maintaining their project banner. Most project banners were copied from existing projects, which is to be expected, but it was amazing to see just how many banners still contained references to their ancestors in links and category code. The deployment itself was very fluid, as we were also constantly adapting and improving WPBM itself as we encountered new banner features 'in the wild' that weren't currently supported.
Converting {{WikiProject Australia}} was a big milestone for me. It was the first time we had dealt with such a large and active project, and such a complicated banner. The hooks infrastructure in WPBM (where we provide places where a banner can be arbitrarily extended with custom features) was really driven by that conversion, to handle the large number of taskforces. With that conversion complete, it made banners like {{AfricaProject}} very easy to convert.
As we expanded the deployment, we did encounter some issues with WPBM itself; some fundamental decisions that had been made very early on turned out to be mistakes. In particular, our choice of character for the 'default' parameter turned out to be a huge problem. The mechanics of what we do with this feature are quite complicated, but essentially we add an obscure character (we originally chose µ) to many of the parameters as defaults, and then by voodoo magic we can tell the difference between when a banner uses a parameter like |importance= but an individual talk page just hasn't set it, and when the banner as a whole doesn't use that parameter at all. So on pages like this, we can correctly identify all three cases without the WikiProject having to use any complicated parametes in their templates. However, it all hinges on being able to check for the presence of this µ character. What we didn't realise was that there are actually two Unicode characters that look almost identical: the "lowercase letter mu" µ and the "micro prefix" µ; people were getting the two muddled up and causing things to stop working on banners. Over New Year 2008–9 we converted everything over to use ¬, which is a virtually-unused character on the top-left of most keyboards, but it involved updating hundreds of banners, and was a hassle we could definitely have done without.

4. What remains to be done with the meta-template in the future? What new features are you planning to add?

MSGJ: The template is approaching a finished product, but undoubtedly will continue to evolve as WikiProjects grow and editing practices change, and the programmers think of more ideas! There are likely to be further improvements in the efficiency of the code and new features that become possible with future developments to the MediaWiki software.



















Wikipedia:Wikipedia Signpost/2009-11-02/WikiProject_report