You can re-arrange this page, add and subtract titles, and do whatever you need for it to make sense for this project.

Jekyll

Project Details (title, language, url, purpose)
Jekyll is a static site generator written in ruby. 
github: http://github.com/mojombo/jekyll
http://jekyllrb.com/

Summary: what was read/what it does
Jekyll generates static html pages out of markup files (textile, markdown, html), using layouts (html).
Jekyll is used by GitHub Pages.- http://pages.github.com/ 

Description: more detailed over view

Pseudo code: what does this do, in pseudo code

Architecture: Data models, Class hierarchy. Is the architecture clean, intuitive, easy to understand? If not, how would you change it?

Gems used
Jekyll uses Liquid for the templating, maruku for markdown support, RedCloth for Textile, yaml for YAML, and some others.

Classes and Modules
the core of a Jekyll site is the Site object, which has Posts, Pages, Layouts and StaticFiles (these are pretty self-explanatory, I guess). you find these classes in lib/jekyll/ .
Post, Page and Layout use the module Convertible, which contains methods to convert the markup to content, using Converters

What you need to make it work
    (e.g. '2010-09-23-my-first-post.textile')
    --- 
    layout: post
    title: my first post
    ---


Jekyll - A Short Guided Tour through the Source :)

start with 
bin/jekyll
this is the file that is run when you type 'jekyll'  in your command line.
it parses your command line options, creates the Site object (line 124) and call site.process (line 139).
if you used 'jekyll --server' it also runs WEBrick, a ruby webserver.

now let's go and have a look at
lib/jekyll/site.rb
especially at the process() method.

process() calls read() 
which reads the layouts (which means reading every file in _layouts/ , creating a Layout object for each), 
and calls read_directories() which finally calls read_posts(), which creates a Post object for every file in the _posts directory with a valid name. 
next, process() calls generate, render and finally write (which, not surprisingly, writes the static files).


Comments: Interesting techniques, tricks. Coding style, Things that could have been done better, balance between efficiency and clarity, quality of code-re-use. 

Scrolling through the source, I noticed that Page and Post, for example, have some identical and some similar methods, but abstracting these would probably complicate things.

How hackable is this code (well documented, easy to find your way around, could create a patch/add a feature without too much pain): Score 1-5
Thanks to its small "scale", Jekyll is quite comprehensible and noob-compatible :).

just for a little practice, I started writing a "FileNameParser" thingie that allows you to define a custom pattern for your file names. 


Possible bugs identified, if any
none, but the scripts to import posts from Wordpress or Textpattern could need some improvement.