Building Blocks

by pieterh on 24 Sep 2009 16:20

As a site builder you have snippets, themes, packages, and pre-built applications. A lot of choice, perhaps too much. Are you confused? Then allow me to explain a vision for making this simpler and more consistent.

Take a look at the new Wikidot Calendar application, built by a bunch of Wikidot black belt users with way too much imagination. As James Kanjo reports: "We've made some AMAZING progress with the calendar, again!".

The Calendar app is amazing and suggests that Wikidot needs something like an AppStore (more on that another time). It also proves that advanced Wikidot users are working really hard to make applications for other less experienced users.

But it raises two clear and severe problems. One, how do people install such an app, and two: how do they get updates? Currently, installing this app requires manual copying of pages and site reconfiguration. I've tried that, and it is enough of a barrier to put me off. Kenneth Tsang wrote a neat package installer that automates this for the packages wiki but it is still complex to use.

So the scenario is this1:

  • We have an application that consists of one or more pages written by some expert. Let's simplify and say that we have either a single page, or a single category and everything it contains.
  • We want to be able to install that app into a site with one click. That includes copying pages and configuring permissions, auto-numbering, and so on.
  • We want to automatically get updates to the app when the expert releases a new version.

Sounds perfect, right? But how can we do this?

OK, so part of my job is to answer difficult questions like this. My approach is to cheat and ask you (the user) to help. If you followed the work we did on ListPages, you will have seen that we designed this mostly in 'user space', i.e. in the design section of this blog (with 159 comments). Last week I presented that new ListPages design to our dev team, and we literally sat down and coded most of it in an evening.2

So I've written a design proposal for an expanded Clone module that does the "install" part, and a system of cross-site includes that does the "automatic update" part.

How would this work for the Calendar app? The simplest way is to use the new Clone module to re-copy the calendar: category into a site, overwriting any existing pages in that category. A better structured Calendar app would instead use cross-site includes for all content, leaving only a framework of 'include' statements to be cloned into the target site. These would never change (hopefully!) but if any of the included pages change, all sites that include them get updated automatically by Wikidot.

We've started a site for cross-site includes and the first app on that site is the scrollbar.

So over time we'll need just two mechanisms for reusing building blocks: cloning, and CSIs.

What do you think of this vision? Are we missing something?

Comments: 7

Add a New Comment