Updated 2015-10-22 07:19:18 by SC
What giggle
Where http://www.ics.mq.edu.au/~cassidy/giggle/
Author Steve Cassidy
Description Giggle is a weblog application (a static site generator) which allows you to maintain a web based diary/news site. Stories are stored in simple text files and transformed into web pages via a series of templates.
License BSD (according to DESCRIPTION.txt)
Updated 2003-05-01 (version 0.2)

Giggle [1] is a weblog application written in Tcl written by Steve Cassidy. Giggle is a clone of Blosxom [2] or at least started out that way. Messages are text files stored on disk; the first line is the title; the rest is the message.

SEH 20060919 -- The author seems to have switched to WordPress, giggle code is no longer available on his site as far as I can find.

SC Quite right, I found I had no time to add the features I wanted to giggle so bit the bullet and moved to someone elses code. The giggle code is still accessible on CANTCL at [3] at least for now.

See [4] for an example blog. -- escargo 20 Nov 2010 - except this is now a Wordpress blog

Any thought of Giggle having some sort of way for the author to contribute to the blog dynamically from the net? From an internet cafe, one may or may not have ssh access to one's server.

Of course, I suppose for a distributed mechanism, one could just use an authenticated wiki-type setup.

SC yes, this is on the list. The idea would be to allow a POST to the Giggle URI create a new weblog entry. This could also allow comments to be posted on blog entries, just POST to the URI corresponding to the message you're commenting on. This would need to include some kind of authentication, maybe a password along with the POSTed story would be enough.

Are there plans to continue work on Giggle, for example cloning the Blosxom version 2 plugin architecture?

SC I'm not really setting out to clone Blosxom but I do want to add some features for my own use at least. I've thought about plugins and it would be relatively easy to have a similar mechanism to Bloxsom's but I'm not racing to do it yet since I can just hack the code at the moment :-)

Possible features:

  • Content formatter -- it would be nice to write entries in something like wiki markup
  • Image files -- drop an image into the directory and have it appear as a blog entry complete with metadata from exif
  • Static site generatiton/page caching for high trafic sites.
  • Store pages in an MK database (with Wiki markup -- wait a minute, how different is this from a wiki? Non-editable pages, pages threaded by discussion topic, different presentation, but otherwise perhaps the same infrastructure).

WJR Hi, I'm having a problem with Giggle. I've set it up OK, and it runs as a CGI script on TclHttpd 3.5.1 up until the point I try to create a post. When I create a simple post txt file like this:
 title
 content

I get the following error:
 Malformed line (1) in: 'content'
     while executing
 "error "Malformed line ($lineno) in: '$line'""
     (procedure "rfc822::parse_header" line 25)
     invoked from within
 "rfc822::parse_header $in"
     (procedure "readmsg" line 41)
     invoked from within
 "readmsg $bloginfo(basedir) $s"
     (procedure "giggle::generate_page" line 26)
     invoked from within

Any ideas? Let me know if you need additional information.

SC The format of messages is:
 Title (which is just the first line of text in the file)
 Header: value
 Foo: another value

 The text of the message, note the blank line after
 the header.

The header lines, which are optional, are in rfc822 format, like email headers. The only one that's used just now is Date: which can be used to override the file modified date.

Nice to hear there's another user, please place a link here to any blog using this software.

RLH 2006-09-19: Where is the code?

dbohdan 2014-07-21: I couldn't find a license file in the distribution. I put "BSD" in the "license" field in the table because that is what it says in DESCRIPTION.txt.

SC 2015-10-22: I can't believe anyone really wants this after so long but just in case here's the source: [5]