This page is a follow-on to PITS:00028, requesting blog support in PmWiki. Many people have expressed that they prefer PmWiki to stay "lean" and not become overloaded with blogging support; this page leaves that question for PITS:00028 and the mailing lists. Instead, assuming that we're to support blogs in some form, what features do we need to have (and how important is each)? Let's start with just a bullet list of possible features (and priority voting for each), with discussion about individual feature items lower on the page. !!Vote for Features [[#votes]] || width=100% cellspacing=0 bordercolor=blue border=1 || || [++Descriptions++] || [++Votes++] || || ||%bgcolor=#fffccc% ''' Posting ''' |||| || [[#draft| Details]] ||Entries can be saved as drafts, and later moved to Published status. ||455 || || [[#editform| Details]] ||Ability to set (:title:) and categories in separate boxes on the edit form. ||443 || || [[#pings| Details]] ||Ping weblog services when posts are published or updated. ||334 || || [[#xmlrpc| Details]] ||XML-RPC support for standard APIs. (Started [[Cookbook/XMLRPC |in the cookbook]].) ||332 || || ||%bgcolor=#fffccc% ''' Presentation and organization''' |||| || [[#metadata| Details]] ||Collect and display appropriate metadata ||5 || || [[#front| Details]] ||Automated front page showing the most recent articles. (See [[#front| Details]].) ||555 || || [[#archives| Details]] ||Archive pages find and sort blog posts according to publication date or category. ||5 || || [[#calendar| Details]] ||A calendar in SideBar with days with articles indicated (--[[~Kab]]) ||5 || || [[#categories| Details]] ||Article categories independent of presentation. Invisible category links, basically ||444 || || [[#permalinks| Details]] ||Each post gets a permanent page of its own. ||5 || || ||%bgcolor=#fffccc% ''' Blogosphere ''' |||| || [[#comments| Details]] ||Commenting system which doesn't require the user to be familiar with Wiki editing or to be authorized to edit the full page ||554 || || [[#trackback| Details]] ||Trackback support (send trackbacks to posts you link to and display trackbacks you receive) ||444 || || [[#postfeeds| Details]] ||RSS for the whole blog, AND for individual categories ||455 || || [[#otherfeeds| Details]] ||RSS for cool-link-lists, comments pages ||454 || || [[#| Details]] ||''(next)'' ||- || ---- !!Feature Details !!!Posting !!!!Drafts [[#draft]] Writers often want to privately save drafts of future posts so that they can revise them later, or publish them on a schedule. When you publish a post, it goes into the archives and gets added to RSS feeds, so you don't want to do this before you're ready. A published post might get updated or corrected later, but only if it needs it or the author so chooses. !!!!Edit form [[#editform]] The edit form should have fields for entry title, categories, and author, that are separate from the box for the body text. !!!!Pings [[#pings]] When you publish or update a post, good blog software automatically sends a small "we've updated" message to one or more blog-tracking services. They get the latest data, you save web-crawler bandwidth, and get more traffic. Since a ping sent to [[Ping-o-matic -> http://www.pingomatic.com]] gets sent to a bunch more blog-trackers, it's an ideal one to support out of the box. !!!!XML-RPC [[#xmlrpc]] Supporting the XML-RPC API means that you could use a nifty graphical client like [[Ecto -> http://ecto.kung-foo.tv/]] to post to your PmBliki. There are probably other things that you could do with this support if you know how to program. !!!Presentation and Organization !!!!Metadata [[#metadata]] The blogosphere expects posts to have certain metadata, which is requested on the edit form, or gathered when you login: * Entry title. This should have a separate field on the edit form. * Entry author. When displayed on posts, it'd be great for the author name to link to Profiles.Author. Even cooler would be a method to find all the posts that the author had contributed! * Publication date and time. Posts always display when they were published. Not everyone chooses to show the time, but it's saved for post sorting purposes. * Categories. Listed categories will link to the appropriate archive pages. Said metadata is then displayed on the post in accordance with where the template says to put it and how to mark it up. We site admins want the metadata to have style hooks built in, so that we can make it look pretty or hide bits as we prefer. Being able to specify different formats (similar to Recent Changes) would be great. I suggest putting multiple classes on the metadata HTML, like "metadata", "label", "item" and the name of the metadata type, like "posttitle". --[[~Bronwyn]] !!!!Front page [[#front]] The front page of any blog is really just a specialized archive page. It should automatically display the last X posts in reverse chronological order (newest on top), with X being a number chosen by the admin. There should be a link to the list of monthly archives at the bottom of the page. There should be several choices for how to display the items on the front page: * full post * headline-and-teaser * headline only It should be possible to treat the most recent post differently, so that (for example) it can be shown as a full post, but the others as teasers. Important conventions: * For headline and headline-and-teaser display, the headline is a link to the post’s very own page. Full posts don't have to link their titles. * When displaying posts in the headline-and-teaser style, add a Read More... link at the end of the teaser. * There's extra metadata items shown when posts are on the front page. By convention you'll find these at the bottom of the post: ** Comments (number of comments here) ** Trackbacks (number of trackbacks here) ** Permalink !!!!Archives [[#archives]] New entries should automatically be added to the appropriate month and all appropriate category archives. Archives can display in either chronological or reverse chronological order, but the admin should be able to choose which one. Publication date is the date used to sort articles, not last-modified. Putting linklists into the sidebar for your monthly archives and category archives is the accepted best practice. Calendars are great too, but linklists are more common. There are three common methods for displaying and navigating archive listings: !!!!!Calendar [[#calendar]] '''Example:''' [[http://mpt.phrasewise.com/]] Calendars are popular because everyone understands them. The problem is that they don't scale. It's one thing to find the post from last Tuesday, but what if you want to find a post from two years ago? Then a calendar becomes [[mystery meat navigation -> http://www.webpagesthatsuck.com/mysterymeatnavigation.html]]. You can test this yourself at [[http://mpt.phrasewise.com/]]. Using only the navigation calendar, find the article from 2003 about math teachers in New Zealand. !!!!!Headline '''Example:''' [[http://daringfireball.net/archives/]] Headline-based archives are much easier to use. The newest items are at the top, and each item gives its title and a datestamp. You shouldn’t have too much trouble finding the one about command and control keys, for example, if you’ve learned about your browser’s find-in-page command. !!!!!Headline-and-teaser '''Example:''' [[http://www.mikeindustries.com/blog/archive/2004/08/]] Headline-and-teaser archives are the most usable type for serious browsing. It’s really easy to tell if a post is the one you're looking for, or would be interesting to you. The archives are broken up into month-sized chunks, with links to the previous and next months. !!!!Categories [[#categories]] Blog posts are typically tagged with categories, to help readers find other posts on their topic of interest. PmWiki already has a category system, so all we have to do is make it a little easier to use and a little more bloggish. Not a big deal. Having RSS feeds for each category is very desirable, and only requires a wikitrail page for the category's recent changes. It would be nifty for the categories to be automatically added to the page’s (:keywords:). !!!!Permalinks [[#permalinks]] Every post lives on its own page -- its ''permanent link'' -- so that people can easily link to particular posts. After all, the content on the front page rotates, so you can't bookmark a post by bookmarking the front page. Therefore posts have little "Permalink" links in their metadata blocks so that it's easy to find a given post's homepage. !!!!Implementation discussion The more I think about it, the more it seems to me that the best way to manage the blog (and perhaps the comments) is to use a WikiTrail. --> %Pm% Yes, I've been planning that the comments feature would need to be able to support comments as a WikiTrail, or an easy way to index the comments. --[[~Pm]] Posting an article would update an index trail, which would look like something like this: [@ * 9/2/2005 ** 10:45 AM *** [[Articles.SoTodayWasAReallyWeirdDay]] ** 12:01 AM *** [[Articles.NewsFromTheJobHunt]] * 8/29/2005 ** 4:34 PM *** [[Articles.ServerUpgradeResults]] @] The front page of the blog, then, would use a directive something like this: [@(:includetrail pages=$1:)@] Pages would be the maximum number of pages from the trail to embed in the front page. --[[~Russell]] If one's going to use a trail, why not simply use the RecentChanges page? I mean, just like the cateories thing, it is very possible to make this without any modification whatsoever to the wiki... [[~MarcioRPS]] -> Actually, now that I think about it some more, it makes more sense as some kind of extension to [[PageList]]. Like [@(:pagelist trail=Blog.Index order=trailsAsDateTime maxresults=10:)@]. --[[~Russell]] Yes, I see extending the PageList directive as a much more easy and elegant. I've played with inserting the pages inside the pagelist, altough it is a bit tricky it works (need to insert formating as wiki markup instead of html). "Pages" is just the same thing as "count", why have another name? [[~MarcioRPS]] !!!Blogosphere Comments, blogrolls (a linklist of other blogs you read often), and trackbacks form the social web that (1) holds the blogosphere together and (2) generates unrivalled amounts of Googlejuice. It's the authentic conversation that make blogs what they are. So Pm, give comments, blogrolls, and trackbacks your love. !!!!Comments [[#comments]] A blog is a soapbox. That’s why the wiki way of inviting people to edit the page probably won’t work for getting people’s thoughts about your blog posts. It would be like inviting an adult guest to draw with crayons on your living room wall. Even if you say it’s okay, your guest will still feel that they're being rude. But comments let your visitors respond to you without disturbing your original post. Some blog software puts comments on a separate page, but it's more common to have them underneath the post, like [[this -> http://www.erisfree.com/updates/74/holiday-cards]]. Just like posts, comments are laid out according to a template, need plenty of style hooks and formatting options as discussed [[#metadata | earlier]], and have standard metadata of their own: * contributor (linked to URL, or perhaps to email if we can protect it against spam harvesting) * time/datestamp * comment number (as in 10 for the tenth comment). Features we need in the comments system: * Ability to turn comments on or off much like passwords — per page, per group, or globally. * Visitors must be able to post comments even when a page has an edit password * Allow markup for bold, italics, quotes, and links * Preview function. Live previews are even better. * Jump links that take the visitor to the top of the comments and to the box where they can add a new comment, because the pile of comments can get very tall. !!!!Trackbacks [[#trackback]] %Pm% Can someone give me a clear explanation of trackbacks? I've read numerous online articles about them but I've never understood exactly what they are or how they're supposed to work. --[[~Pm]] Trackbacks are the way for one blog post to say to another, "Hi there! I'm linked to you! Here's who wrote me, where to find me, when I was published, and some teaser content." For more information, consult (in order of complexity): * http://en.wikipedia.org/wiki/Trackback * http://www.movabletype.org/trackback/beginners/ * http://www.sixapart.com/pronet/docs/trackback_spec !!!!Anti-Spam measures Spammers are cluing into how much spamming blogs with comments and trackbacks can help them. At minimum, the site maintainer must be able to remove spammy or malicious comments and trackbacks. Closing comments after a configurable number of days is also quite common. The url approval script and blacklist recipes should help too. !!!!Post feeds [[#postfeeds]] There must be RSS feeds for the blog as a whole, and for each category. Happily, PmWiki can already do this with little to no change. We just need: * Documentation with clear instructions on how to set it up for Site/AllRecentChanges and more specialized feeds, and links to some introductory information about feeds. * More links to feeds, both in the page headers and the template, so that users and feed reader software will know they’re there! !!!!Other feeds [[#otherfeeds]] Blogs often feature auto-updating linklists and/or feeds for: * the most recent comments * links the blog's author thought were cool, but didn't write an entire post about !!!Integration [[#bliki]] Don't just make PmWiki+Blog, make PmBliki for us. Date and category archives provide a tremendous amount of automatic organization, but we can do even better. Page naming and linking can be even more flexible and intuitive than that. Pagenames should find the obvious pages, and there should be multiple paths when that is natural. So when we go to 2004-09.HomePage we should see the September 2004 archive page...and we should also see it when we go to Archives.September2004. The category archive for cooking will be found at Cooking.HomePage, Cooking.Cooking, and Category.Cooking. Category.HomePage, Category.Category, and Archives.ByCategory will bring up the list of category archives. If I make a post called “Foo Goes Bungee Jumping”, on Thursday, 16 September 2004, in the categories Sports and Stupidity, then I should be able to reach it using any and all of these pagenames: * a datestamp pagename, like Blog.2004-09-16-A * 2004-09.FooGoesBungeeJumping * Sports.FooGoesBungeeJumping * Stupidity.FooGoesBungeeJumping * and possibly some others too. Lastly, a bliki isn’t just a blog. It should be possible to insert stable chunks of content into the front page and archive pages, and arrange them as the author pleases. PITS works this way — it’s wikitext with directives that insert the generated content. Why shouldn’t the archive listings for the blog work the same way? We won’t have to fill in extra stuff if we don’t want to, but if we do, we can! -------- Actually, I don't think the main blog-tool is really listed there! A simple way to set and read the date of a page. This way a blog would be just a matter of tweaking the New Page Form recipe to allow correct date setting and cretating some new FPL functions for the blog (a custom simple list for the sidebar, one that includes the actual pages, one that lists pages grouped by month, etc...). -- [[~MarcioRPS]] September 22, 2005, at 04:28 PM ---- Category: [[!Blog]]