Flow/Architecture/URLs
- See Help:Flow/Glossary for an explanation and diagram of boards and topics and posts.
Flow URL summary
editA Flow board is a wiki page, but it is not a static piece of wikitext. It is a window onto the topics that users started on it. Flow boards are usually in one of the "talk" namespaces. For example http://www.mediawiki.org/wiki/Talk:Beta_Features/Hovercards. In a wiki link use the end of this, [[Talk:Beta_Features/Hovercards]]
Starting with 1.24wmf14, you can link to a particular topic using its URL in the Topic: namespace. From a topic's action menu choose Permalink and copy the Link location, e.g. http://www.mediawiki.org/wiki/Topic:Rxp4iwrpby2ohtjb. In a wiki link, use [[Topic:Rxp4iwrpby2ohtjb|Something friendlier]]
You can link to a post within a topic. From a post's action menu choose Permalink to copy the link location, e.g. http://www.mediawiki.org/wiki/Topic:Rxp4iwrpby2ohtjb#flow-post-rynqja9dnthggjf5 . (You can see that this loads a topic with a fragment identifier appended to scroll to a particular topic.) In a wiki link, use [[Topic:Rxp4iwrpby2ohtjb#flow-post-rynqja9dnthggjf5]]
Some actions work with a Flow board or Flow topic:
action=view
(the default)action=history
action=purge
- ...
But many actions don't work with a Flow board or Flow topic:
action=raw
(bug 63713)action=edit
- etc.
You can preload a Flow topic title by adding ?topiclist_preloadtitle=Any+title+text+here
to the URL. You can preload the Flow post area with the contents of some page with topiclist_preload=PageTitle
, for example this preloads with "Test preloaded title" and post body from User:SPage_(WMF)/Flow_post_stub.
Flow boards are pages
editA Flow board is a special kind of wiki page (internally it has a special "content model"). It is a window into an unlimited set of topics that were created on that board. Users see the most recent or recently active topics on the board and as they scroll down, more topics load. So linking to a Flow board such as Talk:Flow does not guarantee that a particular topic will be visible
Coming: Some day you will probably be able to supply query string parameters to a URL to tell a Flow board to display topics starting at a particular topic.
A Flow board does not contain the text of all the topics and their posts on it. Instead they are stored in a cross-wiki database, see Flow/Architecture. If you use the MediaWiki API or Special:Export to ask for a Flow board's content, it will only contain the UUID of an item in this database, for example
{"flow-workflow":"rl7gw1a4ah0curug"}
Flow topics have pages in the Topic namespace
editStarting with 1.24wmf14, each Flow topic has a page in the Flow Topic:
namespace so that you can follow particular conversations of interest by watching that page. For example, Topic:Ry6o4jowf78f34gp
This page title is the UUID of the topic, it is obviously not the topic's title.
Like Flow boards, this wiki page does not contain the wikitext of the posts on the topic, that is stored in the external cross-wiki Flow database.
When you view a single topic it displays a link back to the Flow board on which it was started. (This link should paginate that topic into view (bug 58251))
Sample Flow URLs
edit- This should be a test script that verifies that URLs work, not a static wiki table
Type | Format | Sample wikilink/URL | Notes |
---|---|---|---|
board | a standard page | Talk:Sandbox | |
topic | Topic:<topicUUID> | Topic:Ry6o4jowf78f34gp | WMF wikis capitalize the first letter of page names but the actual uuid is lowercase alphadecimal |
A post to a topic | Topic:<topicUUID>#flow-post-<postUUID> | Topic:Ry6o4jowf78f34gp#flow-post-ry6ojm7fcoywi0ct | JavaScript detects the post in the fragment, highlights it in green, and scrolls to it |
show board starting at topic | (Not implemented yet.) | ||
pagination | Board name? topiclist_offset-id=<topicUUID> (optional &topiclist_offset-dir=fwd &topiclist_limit=10
|
https://www.mediawiki.org/wiki/Talk:Sandbox?topiclist_offset-id=ry6o4jowf78f34gpd | Shows topics *earlier* (or *later*) than the given topic UUID.
Ordinarily only no-JS users or those who click [Load More] before more topics load see this. |
Before Topic: namespace
edittopic | workflow=<topicUUID> parameter to board
|
Talk:Sandbox?workflow=Ry6o4jowf78f34gp | before June 2014. Now redirects |
A post to a topic | workflow parameter to board + #flow-post-<postUUID> fragment | Talk:Sandbox?workflow=Ry6o4jowf78f34gp#flow-post-ry6ojm7fcoywi0ct | before June 2014. |
An action on a topic | workflow=<topicUUID>&action=xxx parameters to board
|
Talk:Sandbox?workflow=Ry6o4jowf78f34gp&action=edit-topic-summary | before June 2014. Now redirects (but loses action, bug 68339). |
Special:Flow topic link | Special:Flow/workflow/<topicUUID> | Special:Flow/workflow/ry6o4jowf78f34gp#flow-post-ry6ojm7fcoywi0ct | A hack to make a wiki link to a topic before they were in a separate namespace. |
Special:Flow post link | Special:Flow/post/<postUUID> | Special:Flow/post/ry6ojm7fcoywi0ct or Special:Flow/workflow/ry6o4jowf78f34gp#flow-post-ry6ojm7fcoywi0ct |
A hack to make a wiki link to a post. |
In 2013
edit- ?? there was a query string parameter identifying a post
- UUIDs used to be even longer (128-bit then changed to 88-bit, and using hexadecimal)
- e.g. this old-format UUID works as a topic: Topic:050e2fb772abdae40bd7842b2b77d26b Done
- using old-style
workflow
query string http://www.mediawiki.org/wiki/Talk:Sandbox?workflow=050e2fb772abdae40bd7842b2b77d26b]] Done
- using old-style
- but on on ee-flow this old-format UUID doesn't work: http://ee-flow.wmflabs.org/wiki/Topic:050a09d20c6b34dffb6efa163e68c4a Not done
- or in old-style
workflow
query string ??: http://ee-flow.wmflabs.org/wiki/User_talk:Klipe?workflow=050a09d20c6b34dffb6efa163e68c4a Not done
- or in old-style
- e.g. this old-format UUID works as a topic: Topic:050e2fb772abdae40bd7842b2b77d26b Done
- Really old long topic UUID and workflow UUID on mw.org: Talk:Flow?topic=050fe9b335d31e9b25a890b11c27a364&workflow=050fe9b335d31e9b25a890b11c27a364
- Some query string parameters used square brackets around array parameters, such as
&topic_list[offset-id]=050adf7af4bff00fc8b1fa163e68c4ac&topic_list[offset-dir]=fwd&topic_list[limit]=10
. We converted these to use an underscore, thus&topic_list_offset-id=050adf7af4bff00fc8b1fa163e68c4ac&topic_list_offset-dir=fwd&topic_list_limit=10
- Initially (September 2013), all Flow pages were parameters to Special:Flow?
Notes
edit- Flow boards and topics accept some action parameters.
- Note that
?action=edit
does not make sense for a Flow board or topic – you need to specify a particular item such as a post, topic title, or board header to edit. - A topic is not (currently) paginated, so viewing a topic loads all of its posts.
Earlier discussion
editUsers are telling us "I want friendlier URLs". What does this mean, what can we do?
User wants
edit- Users want to share URLs to topics and posts
- Users want to wiki link to topics and posts, but query string parameters force them to insert http:// links.
- Ideally something in the URL or the text of a permalink page would be copy-pasteable into
[[ ]]
the same way the h1 heading of this page works as a wiki link.
- Ideally something in the URL or the text of a permalink page would be copy-pasteable into
- More sophisticated users want to be able to work with UUIDs but there's no easy syntax to do so.
- If Flow is disabled for a page, the topics and posts for it remain in the system but there's no way to view them.
- Users sometimes want to link to a particular version of a topic or post.
User concerns with URLs
editUsers say they want friendlier URLs to topics and posts.
There are several things people mean by this
- UUIDs are meaningless - "Other discussion systems have URLs like /topic/x/I-brought-some-kitties , do that!"
- "Why isn't the topic heading a working wiki link?"
- For example, StackOverflow has links https://stackoverflow.com/questions/18480923/is-there-a-command-to-undo-git-flow-init/18730641#18730641 where the text ("is-there-a-command-to-undo-git-flow-init") makes the link more readable, but has no actual effect (you are redirected to the current canonical one). Reddit and Trello behave similarly, except Reddit does not redirect. This is discussed at https://trello.com/c/7d2CciSA/446-add-extra-human-readable-text-to-topic-page-urls .
- "The link should include the board" / "I don't care about the board"
- Current URLs include: Namespace/Page-name/Section-name. E.g. Talk:Main_page#Example - this provides deep-context for links in email/IRC/etc.
- Current URLs can be cut&pasted as wikilinks, just by selecting everything after ".../wiki". (This now works, but didn't with the old "?workflow=..." URLs)
Postulates
edit- In the database, a topic is associated with the page on which it was first created.
- Topics can appear on more than one board (e.g. Feeds), but we haven't exercised this.
- Topics need to be associated with a board, so that things like
{{FULLPAGENAME}}
and[[/Subpage_name]]
- Topics don't have a natural order within a page; because they can (some day) appear on multiple pages, because of infinite scroll, because of (some day) options to re-sort and filter board appearance.
Show board starting at a topic
editWhen you view a topic, it has a link back to its Flow board, This topic was started on Sandbox. That link should try to load the topic in context (bug 58251).
Maybe showing a Flow board starting at a topic could be another parameter to Special:Flow, e.g. Special:Flow/topic-in-board/<topic-uuid> would do the right thing, or redirect a pagination URL above.
Possible additions
edit- investigate writing the scroll position/pagination/magic into the URL hash as you interact with a Flow board, the way Gmail and other Web 2.0 apps do.
- So if you follow a link to a different URL (such as a permalink), then use the back button, you would be returned to more or less the state you were in.
- - this would only works if JavaScript is enabled.
- Implement Special:Flow/<Any UUID here> that will load any UUID and show it appropriately, even if its page is no longer Flow-enabled.
- Would this work but redirect you to the longer URL?
Issues
edit- Currently loading a topic loads all its posts. We may need eventually to incrementally load posts, so we have the same problem of ensuring a particular post is visible.
- If we only indicate the post in the fragment hash, then it won't work in browsers with JavaScript disabled.
- This suggests we should implement Special:Flow/post/<post UUID>
- Once we have more than one form of a link to a post, how should we present them?
- LiquidThreads has More v > Link to which pops up a dialog with
https://www.mediawiki.org/wiki/Thread:Extension:LiquidThreads/FAQ/Requirement_of_moderator.
Wikitext link:
[[Thread:Extension:LiquidThreads/FAQ/Requirement of moderator.]]
- Flow Portal/Functional Specifications/Boards and Topics#Permalink specifies something more elaborate than the current permalink:
- a modal dialog that will display several options for the user wherein they may obtain a permanent link to the Topic.
- A full URL to the single Topic (good forever)
- A full URL to the single Topic as it exists at that point in time
- A local (wikitext) link to the single Topic (good forever)
- A local (wikitext) link to the single Topic as it exists at that point in time
- Flow Portal/Functional Specifications/Boards and Topics#Permalink specifies something more elaborate than the current permalink:
- Since UUIDs are unique, Flow could support a "smart" Special:Flow/uuid/<any UUID> that shows any item in the appropriate context.
- what happens when we have other kinds of workflows? Will we have other aliases for the Topic: namespace?