Phabricator project: #Flow


Jump to: navigation, search
MediaWiki extensions manual
Crystal Clear action run.png

Release status: beta

2013-08-21 Flow prototype.png
Implementation Notify
Description Provides a new discussion and collaboration system for talk pages
Author(s) Brandon Harris, Erik Bernhardson, Matthias Mullie, Andrew Garrett, Benny Situ, Shahyar Ghobadpour, Matthew Flaschen
Latest version 1.0
MediaWiki 1.24+ (Flow master is only supported with core's master; otherwise, use Flow REL_1_24 with core REL_1_24 or matching WMF release branches).
PHP 5.3.6+
Database changes Yes
License GPL
Example Talk:Flow
Added rights

flow-hide, flow-edit-post, flow-create-board, flow-suppress, flow-delete, flow-lock

Hooks used


Translate the Flow extension if it is available at

Check usage and version matrix; code metrics


Open tasks · Report a bug

The Flow extension provides a new discussion and collaboration system for talk pages

See Flow for an overview of what this extension is planned to address over time and try it out.

Installing[edit | edit source]

Caution! Caution: This is in Beta and still under active development. You may want to drop into #wikimedia-collaborationconnect to discuss before installing.

The easiest way to install Flow is to use the MediaWiki-Vagrant appliance and enable its flow role.

To install the extension manually:

  • Download and place the file(s) in a directory called Flow in your extensions/ folder.
  • Add the following code at the bottom of your LocalSettings.php:
require_once "$IP/extensions/Flow/Flow.php";
  • Run the update script which will automatically create the necessary database tables that this extension needs.
  • YesYDone - Navigate to Special:Version on your wiki to verify that the extension is successfully installed.

Note Note: Running "update.php" can leave temporary /tmp/mw-UIDGeneratorUUID-UID-xx files that MediaWiki may be unable to open (phab:T55791). If you get a "Permission denied" error upon first visiting a Flow board you have to delete these files.

Dependencies[edit | edit source]

  • required: Extension:Echo for notifications (e.g. replies to your post)
  • required: It is recommended to use memcached as your cache. You may encounter problems with Redis currently.
  • required/optional: Parsoid for the option to store posts as HTML ($wgFlowContentFormat = 'html';) which improves performance. This is how WMF wikis are configured, and hence is the most tested configuration. As of September 2014 it is required, there are bugs with format 'wikitext', e.g. task T72148. If you use MediaWiki-Vagrant, enabling Flow enables Parsoid and sets the format to 'html'.
  • optional: Extension:CLDR for human-friendly timestamps such as "3 days ago"
  • optional: Extension:VisualEditor for experimental VisualEditor support ($wgFlowEditorList = array( 'visualeditor', 'none' );)
    bug? if you have the VisualEditor present (e.g. perhaps to provide OOjs UI),then Flow will attempt to contact Parsoid even if VE is not enabled
  • optional: Flow can integrate with Extension:AbuseFilter, Extension:SpamBlacklist, and Extension:ConfirmEdit, see /Spam
  • optional: Extension:Thanks to "Thank" users for their posts (requires Echo)
  • optional: Extension:EventLogging for analytics

Only for REL_1_24[edit | edit source]

Verifying installation[edit | edit source]

Visit one of the pages you enabled for Flow (see #Configuration) and try adding a topic and editing its header.

Configuration[edit | edit source]

Here are some settings you need to make in LocalSettings.php.

Enabling Flow[edit | edit source]

Subject to change, see phab:T72073

You configure a wiki page to show its Flow board in place of regular page content. $wgFlowOccupyPages specifies Flow-enabled pages (use spaces, not underscores, in page titles). $wgFlowOccupyNamespaces specifies Flow-enabled namespaces (by number). For example:

 $wgFlowOccupyPages = array ( 'Talk:Main Page', 'Mywiki talk:WikiProject Flow', 'Talk:Flow QA' );
 $wgFlowOccupyNamespaces = array( NS_USER_TALK );

This is not intended to be a permanent solution, it is targeted to the needs of the initial limited rollout.

Parsoid configuration[edit | edit source]

If your wiki loads the VisualEditor extension, then the values you specify for Flow's Parsoid configuration variables $wgFlowParsoidPrefix/Timeout/URL should probably match VisualEditor's equivalent variables ($wgVisualEditorParsoidPrefix/Timeout/URL).

"maximum function nesting level of '100' reached, aborting"[edit | edit source]

If you get this error, you need to set xdebug.max_nesting_level = 200, probably in /etc/php5/apache2/php.ini .[1]

"Exception Caught: CAS is not implemented in Xyz"[edit | edit source]

Flow invokes $cache->cas() and some cache implementations including CACHE_ACCEL (APCBagOStuff) don't implement CAS. You probably need to use a different cache, for example install memcached and set $wgMainCacheType = CACHE_MEMCACHED;.

Permissions[edit | edit source]

Users must have the core edit permission to perform any write action in Flow. Many wikis only grant this permission to the 'user' (logged-in) or 'autoconfirmed' group.

Flow defines many actions such as edit-post and delete-topic (see the list in FlowActions.php). The permissions vary depending on whether the post is your own and whether it has been moderated. For example, by default users can edit their own posts, but only users in the 'sysop' group have the flow-edit-post permission to edit anyone's post. You can override which groups have which permissions and what permissions are required for each Flow action; see Manual:User rights for an overview of permissions.

Migrating existing pages[edit | edit source]

$wgFlowOccupyNamespaces does not affect subpages. So before or after setting this, you can use Special:MovePage to move the existing content of a talk page to an /Archive subpage without leaving a redirect, and in the header section of its Flow board, add a link to it, e.g.

Previous discussion is at [[SomeNamespace talk:Some Page/Archive]]

The script maintenance/convertNamespaceFromWikitext.php automates this namespace conversion and archiving, see Flow/Converting talk pages. It is somewhat WMF-specific, so evaluate its operation and backup your database before running it. Another script maintenance/convertLqt.php converts LiquidThreads pages and their threads to Flow boards and topics, see Flow/Converting LiquidThreads. Similar caveats apply.

Flow adds a Topic: namespace, see Extension default namespaces#Flow. You can visit Special:PrefixIndex/Topic: to see if there are existing pages that conflict with this; if so run the maintenance script maintenance/namespaceDupes.php.

Architecture[edit | edit source]

See Flow/Architecture.

Spam[edit | edit source]

See Extension:Flow/Spam for more information on how to fight spam in Flow.

Moderation[edit | edit source]

See Extension:Flow/Moderation for more information on moderation in Flow.