1. Released version 0.15.0

    The current master branch has been extensively tested and could be a 1.0 candidate except for the changes in zafu (we want new users to get used to rubyless, not the old hacks).

    In order to ease the path to 1.0 and to make sure all the changes we made lately behave smoothly in production, we decided to release a 0.15 stable version and continue the hardcore work on rubyless on a separate branch.

    install

    Two lines to have a running website with zena.

    # sudo gem install zena
    # zena myapp

    If you have installed rmagick, you get all the image processing goodies in zena (editor, automatic size adjustments, etc). If you don’t you’ll get images resized by your browser (distorted).

    main changes

    A quick list of the most important changes since the last stable release (0.12) apart from the huge work done on the code to make it easier to maintain, read and test:

    rails 2.3.4

    We were runnging 1.2.3. This means we are now running on the latest stable version of rails.

    better access rights & versioning

    We went through a rewrite of unknown link because access was too complicated. Basically, we made redactions visible to all writers and removed private nodes. We also brought back diff view and version preview.

    browser-side caching

    We looked at how zena behaves with YSlow and realized that all assets were queried (at least for an etag). We removed the need for a these queries by timestamping assets and setting a far future date for content expiration in apache settings in /etc/apache2/conf.d/zena.

    ExpiresDefault "access plus 1 year"

    You should rerun apache2_setup for this to be changed on your server:
    cap apache2_setup

    performance boost

    Our work on access simplification enabled us to cache version_id into the node (vhash attribute) for fast and easy loading of versions (keeping vhash up-to-date was not exactly easy).

    We could also remove the need for 1+n database calls when listing nodes (one call for the list and n calls for each versions). We benchmarked this:

    Load a list of 1466 nodes with titles:
    0.12-stable:           13064 ms
    vhash without preload:  2055 ms
    vhash with preload:      580 ms

    That’s a 22x performance increase.

    misc

    You’ll see a lot of little enhancements when using zena:

    • automatic redirects after node destruction
    • better upload progression
    • better error messages and warnings
    • support for sqlite3
    • zena as gem
    • embeddable zena into an existing app

    Gaspard Bucher

    comments

    1. leave a comment