Skip to content

Channels #40

Open
Open
@aaronpk

Description

@aaronpk

Channels

This is a proposal to introduce a new organizational concept to Micropub for creating and editing posts: Channels.

  • A post can be created within one or more "channels"
  • The server can define its own list of channels, and can decide whether the user is allowed to create new ones or not
  • The server is assumed to have a default channel, where posts created that don't specify a channel are created in the default channel
  • Clients must not assume the names, IDs, presence or absence of any channels at the micropub endpoint
  • A website may not support channels at all, in which case none of this matters to the micropub endpoint and it can ignore channels in requests completely.

Why not "categories"? "Tags" and "categories" have existed in practice for many years, but lately have converged to mean essentially the same thing, as will be made apparent below. Repurposing the term "category" for this would add confusion with existing systems.

Micropub Requests

  • This would add a new property to the Micropub request when creating or editing a post: channel. Absence of this property would create the post in the "default" channel, whatever that means to the server.
  • The query for post list (Query for Post List #4) would include a new property, channel, to choose which post list to return. Absence of this property would return the "default" list of posts, whatever that means to the server.

If a server does not support this organizational pattern, no change is needed, since it would ignore this property in queries or requests.

This would resolve the discussion on Pages, since CMSs can define a special channel to collect these pages under.

Mapping to existing CMSs

WordPress

WordPress has three primary organizational structures: Pages, Categories and Tags.

  • Pages - Pages in wordpress are a top-level type. They do not display a published date, pages can be created within a hierarchy of other pages, and pages cannot be added to categories or tags. Pages do not contain date components in their URL.
  • Posts - Posts are a top-level type. Posts are always dated, and often include date components in their URL. Posts can be organized by categories and/or tags, and both categories and tags have their own permalinks which list out all posts within them.
    • Categories - The user can define a list of categories in their website. Categories are hierarchical and can exist within other categories. Posts can be added to one or more categories. In the post creation UI, the complete list of categories is shown to the user to select one or more.
    • Tags - Posts can be added to one or more tags. In the post creation UI, the tags are autocompleted when typing but the full list is not shown.

WordPress can expose these organizations by using a combination of Micropub channels and categories. ("category" in Micropub is from the Microformats vocabulary, and is what most people would think of as "tags" on a post.)

  • Micropub "category" maps to WordPress "tags"
  • Micropub "channels" would be the combination of the user's WordPress "categories" plus the addition of the specially-named "Pages" channel which WordPress would treat separately

(The current version of the Micropub plugin combines categories and tags into a single list. If a category in a micropub request matches an existing wordpress category or tag then it's used, but if it doesn't exist, a tag is created.)

Micro.blog

Micro.blog has two primary organizational structures: Pages and Categories.

  • Pages - Like WordPress, Pages in Micro.blog exist outside of the flow of other posts. Their URLs typically don't have date components. Some pages are treated specially, such as the "Photos" page where Micro.blog will collect the user's photo posts and show them in a grid.
  • Categories - The user can define a list of categories in their website. Posts can be added to one or more categories.

Adopting Micropub "channel":

  • Micropub "category" maps to Micro.blog categories
  • Micro.blog would have only two defined Micropub "channels": Pages and Posts. New posts would be created in the "Posts" channel by default, unless the "Pages" channel is specified in the request.

Kirby

TODO

Ghost

TODO

Usage in Custom CMSs

aaronparecki.com

My posts exist in three main organizational concepts: channels, tags, and pages.

  • Tags - any post can have one or more tags. The posts will appear on that tag's page. When creating a post, hashtags used in the post will be added as post tags.
  • Channels - any post can exist in one or more channels. Channels get top-level URLs such as /articles, /likes, /travel. Note that even though the names of some of these might suggest certain post types, there is no requirement that only posts of a certain type are added to a particular channel.
  • Pages - there is nothing special within a post that designates it as a page, the thing that makes something a page is that it does not exist in any categories, and has a URL with no date component.

Adopting Micropub "category":

  • Micropub "category" maps to tags
  • Micropub "channel" maps to channels, and I would create a new channel "Pages" and add my current pages to that channel. This channel would be treated specially and would not be given its own top-level URL to display the list of pages in that channel, unlike other channels.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions