Learning patterns/Surfacing activity

Surfacing activity
problemMediaWiki pages are static, but interactive group workspaces work need to be dynamic.
solutionUse bots and template syntax to create dynamic widgets that highlight featured content and recent activity.
status:in progress

What problem does this solve?


Wikis are all about collaboration, but compared to many other content management systems, MediaWiki wikis make it difficult for a group of collaborators to keep track of what's happening across multiple pages. This can make it difficult to use wikis as standalone collaborative workspaces.

Page histories tell you what happened recently on a single page, but what if you want to find out what has been happening across a set of pages?
Watchlists allow an individual user to keep track of recent activity on pages that they have decided to track, but multiple users can't easily share a watchlist.

MediaWiki wikis don't do a very good job of surfacing recent activity. A category page doesn't allow you to sort pages in the category by recent edits, number of contributors, or creation date. Our sites also don't yet support group notifications outside of specific extensions like the New pages feed. Watchlists and individual notifications let you know when certain changes have been made, but what if you want to display a list of notifications that are relevant to a whole group of people?

Groups are more productive when their members are mutually aware of what other members of the group are doing, without having to ask someone or hunt down that information every time they want an update. Many social software tools provide multiple ways for users to be peripherally aware of relevant activity by other users.

Several MediaWiki extensions have been created that provide collaborative watchlists and sorting lists of pages by dates, but these extensions are not available on all Wikimedia wikis, and their functionality is limited. Getting new extensions created and implemented, or updating existing ones, can be long and labor intensive process that requires serious developer mojo and extensive code review.

This pattern describes several ways to surface activity and create group awareness within portals, wikiprojects, noticeboards, and other group workspaces on Wikimedia wikis, without building extensions or hacking the core.

What's the solution?


Fortunately MediaWiki is highly flexible and MediaWiki users are innovative, so a variety of good solutions have been created to tackle this problem. Some of these solutions, like the FIXME and the FIXME, are based on Extensions that are not available on all MediaWiki websites. Others rely primarily on Templates and Parser Functions and bots, which allows non-developers to create dynamic content.

Category list


Profiles and views








Profiles are simple templates that display information in a consistent format. That information can be text pulled from a source page, metadata about that page, or text entered by a person. Any information about a source that can be gathered through the MediaWiki API can be included in a profile, and the profiles can be formatted any way you want. In percolate, each view has its own type of profile.

Percolate works with three types of profile:

  • basic profiles
  • featured content profiles
  • activity feed entries



Views are different methods for displaying profiles. The basic function of Percolate is to create profiles and move profiles based on some set of predefined criteria. Once Percolate has been configured and set up to run (by a bot), it can support as many profiles, galleries, guides and feeds as needed and update them as frequently as desired.

Guide view


The guide view allows for the creation of dynamic lists of profiles from various sources all on the same page. Guides provide an easier and richer browsing experience than categories because they provide relevant information about each source, instead of a bare list of links. Guides allow users to find out basic information about each source page without visiting that page. This is handy for displaying information about all of the pages within a particular category. The order of the profiles within the guide can be updated dynamically as well, so that new or newly-updated content is listed at the top of the guide.

Percolate uses page categories and edit histories to display profiles in the appropriate guide. On the Grants IdeaLab, Percolate creates a basic profile for every page in the category . As new pages are added to that category, each one gets a basic profile. The full list of IdeaLab profiles is available on the all Ideas guide page. Idea pages that have additional categories (such as , which signals that the creator of the idea would like others to help) are listed on the participants wanted guide. Newly created ideas are listed in the new ideas guide.

Percolate can also curate guides of profiles created by people. IdeaLab participants create their own profiles, which are listed in the introductions guide. Percolate sorts these profiles so that the participants who have made the most recent edits to the Grants namespace appear at the top of the guide.

Featured content galleries
The Teahouse landing page displays three galleries with rotating content: Featured hosts, Featured guests, and Recent questions.
The IdeaLab front page displays two galleries: featured participants and featured ideas.

The gallery view is useful for surfacing content that you want to highlight on your project's main page. In a gallery view, profiles are featured in a persistent content window on a target page. Every time the cache of that page is cleared, a new featured profile from the gallery is displayed.

Feed view

Recent activity feeds: The IdeaLab activity feed alerts users to important recent events, such as the creation of a new idea or a burst of activity around an existing one.

The feed view shows recent events on pages within your project's scope. Feed entries are short profiles listed in reverse chronological order, with the most recent entries at the top.

The Grants IdeaLab has a feed on the Ideas page that currently signals four types of events: when a new idea is created, when a new participant joins the IdeaLab, when an idea has been unusually active, and when an idea creator has recently asked for help with their idea.

See also


Elsewhere on Meta