Project SmallBlog - the Squeak Weblog Server
Last updated at 1:41 am UTC on 17 January 2006
Note: Avi Bryant has been working on an Updated SmallBlog.
Motivation: After installing and playing around with web log servers like MovableType, I've become interested in the concept of 'Personal Publishing'. Web logs are also referred to as blogs. At the same time, I've also become interested in a couple of other ideas which I'll describe.
The Challenge Begun: Oct 11, 2003
Challenge Complete, Team Succeeds! Oct 25, 2003
Description of a weblog server: Conceptually a weblog server is a 'trivial' application from a computer science perspective. A weblog is a collection of posts which may thought of as simple stories. Physically, these posts consist of a record with a few fields such as the title of the post, and the body of the story coded as HTML. The posts are usually stored in some type of data store; depending on the implementation this may be a flat file, or a relational database, etc.
The posts have a couple of other attributes attached to them, such as who posted them, the date and time posted, an optional category classification, and few other fancy gadgets.
The server provides a few functions. First, it provides an interface to add, edit and delete posts. The server also provides some type of access control by defining users and defining who can post into the databases. Also, the server provides a couple of different 'views' of the post and weblogs (in HTML and RSS), accessible thru a web server.
The first view is the 'Front Page'. Depending on the implementation, posts are aggregated onto a Front Page which usually formats the full text of several of the most recent posts in columnar output. In addition, another column displays some type of HTML widget, such as a calendar, to navigate the post 'space'. For example, a user may see all of the postings made by a particular user on a particular day by clicking on a day on the calendar.
Typically, the front page has some sort of 'template' to format the display using CSS which stands for Cascading Style Sheets.
The second view is an HTML representation of a particular post. The post is typically rendered as a static page, called an Archive Page. This is called a 'permanent' link; since the front page is dynamic, the permanent link provides a link directly to a story which may be considered the story's permanent web address.
The third view is called a syndication view. The syndication view provides a list in XML format of the most recently added or changed posts. Each list entry contains a subset of the entire post, with things such as the title of the post, and the body or excerpt of the post.
Most blogs also have the capability of providing two interaction mechanisms with the story, comments and trackbacks. Comments are simple. At the bottom of each story is a link to 'add a comment'. Following the link presents a dialog which allows the reader to add a comment (another block of HTML) as a tag to the story. Typically the comments are not rendered on the page; but rather are presented in another window when requested.
Trackbacks are a little trickier to understand. Conceptually a trackback is an 'pointer' to a post from another persons weblog which provides a mechanism for other people to point to interesting stories from their weblog.
The last little bit is that there usually exists some machinery to 'talk to the posts', like create a new post, edit a post, delete a post, etc. Each product does this a little bit differently, but there are a couple of fairly well defined, yet simple, mechanisms defined to talk to a generic weblog server. In addition, there is a mechanism called RSS which stands for Really Simple Syndication. This facility provides a standard notification mechanism for when posts are added to the blog, or the contents of the posts changed. Currently, RSS is all the rage and has found it's way into quite a few different applications.
Overall, it's your basic batch processing program. You throw some data in the front end, store it, and then send out some massaged version in a couple of different formats.
Project SmallBlog - the Squeak Weblog Server
Note: Todd Blanchard wrote a simple web logging application using the Squeak Seaside web framework. Examination of implementation metrics versus a standard Java implementation, as well as links to a Squeak image with the implementation are available at: http://lists.squeakfoundation.org/pipermail/seaside/2003-September/002143.html