There are a lot of great tools out there for blogging, wikis, and forums. Some of them even look nice and are (somewhat) friendly to use. I like wordpress, I like blogger, I like phpBB (except for the appearance), punBB, and others forum tools. I like wikis quite a lot. I’ve tried a lot of them recently.
But they’re all standalone. I got a googlewhack when I typed in “embeddable wiki” (not really, but practically the same.) It was a forum where someone was asking if there was an embeddable wiki. My definitive answer is “I guess not.”
That’s shocking. Does anyone not see the value in being able to create areas of content that are easily editable but are not the whole application?
Similarly, blogs and forums have this same problem. The prevailing philosophy tends to be to make your blog, wiki, or forum your whole site (you can usually make a theme for it) or build your site using an overarching product.
I was actually shocked that CMS apps don’t seem to have the idea of wiki, blog, forum, (and article) at the core.
The one exception is TikiWiki, which is quite cool, except for the code, presentation, and admin interface. It seems to have the right idea of what users want, but I couldn’t get past their admin interface, and didn’t really want to learn yet another templating and component mechanism (which by the way, seems to be done through their admin interface.) And it stores everything in the database! The clincher was that it’s hard to do pretty URLs (their rewrite setup is better than nothing, but not actually pretty) and the wiki editor isn’t actually that nice.
I may still end up using it for One Shore, but I really want the best wiki available, because I spend a lot of time in it.
Pivot seems interesting, in that it has a framework for file based blogging. That’s wordpress’s weakness. I want versioned files, not DB BLOBs.
Pluggable authentication is sometimes doable, but it’s always on some forum where a guy cut and pasted some code to get wiki X to use the same password database as blog Y or forum Z.
Like I said, the good ones are themeable (to a degree) and they have some of their own components, but what about my MVC or CMS components. Or how do I reference a blog post in a CMS?
Theming a blog is usually nicer than theming a CMS, but that might be because it does less. Theming forums is usually pretty limited. And theming a wiki is often a hack.
Most blogs (and some wikis) have comments, but not as fancy as forums. Thats okay, I think comments should be fairly simple.
Blogs, wikis, and forums all have in common that they’re web-editable blocks of text (preferably with limited markup). That means they’re files in my book. That also means that they should be components.
I want to include this valuable content on my site (not as my site). Something as simple as:
blogcomponent.display_post(blog_id, post_id, display_comments=no);
or
blogcomponent.standard_blog_layout(blog_id) or blogcomponent.rss_layout(current_month);
And files that can cross reference each other like this blog post:
[@title = You should see my wiki]
[@date = 20080303 094700 EST]
[@revision = 1.0]
Today I added a bunch of details about [this great tool | wiki:SuperFramework] in the wiki.
[Comments | forum:myblog:200803003-1_comments]
[@display_comments=no]
Of course, display comments should be in a configuration somewhere, and the comments link should probably be auto-generated.
And this should appear inside my site, without having to theme my blog (other than basic layout) or having to specify which menus or other components are displayed. The request would be something like:
http://my-site/blog/you-should-see-my-wiki
To edit or create a blog entry:
http://my-site/blog/new-post
http://my-site/blog/edit?post=20080303-1
The code for the blog page should be something like:
response.layout = site.content_layout #this includes all the menus, components, etc. in a normal content page
if ( request.inActions (“display_blog_post”) )
response.layout.add_component(components.content_component = blog.display_post(id, etc))
Of course this is bad pseudocode and the request processing should be done outside.
Optionally, if permissions allow it, I should be able to go directly to the file, and something like a raw content viewer would do:
fw.getComponentFile(blog_post_id)
and
components = fw.searchComponents(categories={‘blog’, ‘wiki’, ‘forum’}, regex=’/superframework/i’)
Anyway, the point is that I want components to work via code, not an admin interface. I want all my content to be file based and versioned, and I want components to access my content, and I want to do it via a MVC framework. I want (pluggable/interchangable) hooks for things like authentication and persistence and helpers for things like session handling and database connections. I want themes and layouts to be separate, and again code (file) based, though there’s nothing wrong with having an admin interface for selecting themes and layouts and components, and managing users, and publishing articles and other such workflow, though it’d be nice to have a nice UI for that admin interface.
Like this:
Like Loading...