Serious thoughts on the future of <a href="http://www.scotlandsoftware.com/blog/index.php/dev/thistle">Thistle</a>.
To begin, a few facts about Thistle:
- Thistle is very much in active development, after a recent 2-month (or so) hiatus.
- Thistle currently has a very (very!) small userbase. I have no firm data on this, and I see new
experimental Thistle blogs cropping up each week in my referrers, but I’d estimate that the number
of people using Thistle seriously for their primary blog is around 10.
- I’m not in contact with many of those few, either. There is an occasional post on the
forums, and emails from time to time,
but generally speaking I’m working more or less in the dark, proceeding with my own vision for what
Thistle should be.
- Thistle is still at a very early stage.
Given all these things, and indeed the likelihood that relatively few of the people concerned will read this,
I've made a few decisions about future development:
- Thistle is moving to “slashed” URLs,
in the Blosxom style. The old parameterised URLs from PHPosxom
will be phased-out quickly, will no longer be supported by the out-of-the-box types and modules, and
before long will be incompatible with Thistle.
- The authors system may be dropped completely. I would feel bad about losing such potentially useful
functionality, but I’ve yet to find a Thistle blog which uses it, I’ve never used it myself, and it
requires effort to remain compatibility with author-filters as we add new features and functionality.
If you use the authors system, I need to hear about it soon.
- The PHPosxom-style type files (or flavour files, as they used to be) need to undergo a format change.
The current system of having separate header, story and footer sections is ugly, and is difficult to understand
for those who don’t have much PHP experience.
- Posts and the categories hierarchy need to go into a separate directory within the main Thistle directory,
as Alex Nicksay pointed out.
- We need to get rid of the built-in fallback type (which you’d only ever see if you hadn’t specified a valid
default type), and the built-in RSS 0.91 type. All types should be external to Thistle itself; both those
types can readily be reimplemented as type files.
- Something needs to be done about modules. Currently, there are several modules which are far too tightly coupled
with Thistle itself. There must be sufficient abstraction, without sacrificing flexibility. Thistle
needs to rely less on modules “globalling” variables, and instead needs to provide more useful functions for the
modules to make use of.
- Generally, Thistle has evolved thus far by hacking PHPosxom’s core to make new features possible, and patching-up
any problems which have arisen on a case-by-case basis. That kind of approach is unsustainable, and is difficult to
follow in the first place. Thistle must abandon any aspects of its legacy implementation which are inconvenient for
its evolution.
Accordingly, I intend to hold back on a new release for a little while, until I've made the bulk of the
core engine changes to facilitate all of the above. The idea is to have one "break everything" release, then move
forward from there with a stable and well-defined architecture. No doubt your custom types will need to be
recreated, and any custom modules may well require some tweaking too - but the changes will give us a solid base
from which to move forward.
Thistle has a lot of potential. Even as it is today, it allows significant flexibility in the creation of a part-static,
part-dynamic website. It's much more than a blogging tool, but it already measures up well against the other blogging tools
out there, including some of those which require database backends and/or Perl. And there's much more to come.
So, Thistle will change. I make no apology for this, because the reason I
<a href="http://www.scotlandsoftware.com/blog/index.php/dev/thistle/introducing_thistle.html">first got into this</a> was
to create something more than a blogging system; something that had leanings towards both Content Management and other
types of database-driven site - only without the database, and with far more everyday requirements. I have a vision of
how Thistle can become that "thing", and I plan to continue to follow it.