The Latest from SitePen Labs

By on May 13, 2008 12:01 am

We’re pleased to announce the two latest projects from SitePen Labs: Paver and Persevere!


Paver exists because of SitePen’s Kevin Dangoor, and his work on the SitePen Support web application. We found that the build tools that exist with Python just aren’t all that easy to use.

Paver is a Python-based build/distribution/deployment scripting tool along the lines of Make or Rake. What makes Paver unique is its integration with commonly used Python libraries. Common tasks that were easy before remain easy. More importantly, dealing with your applications specific needs and requirements is now much easier.

As is the case with most of the things we work on, Paver made our lives easier, and we thought it might be beneficial for you. Currently an alpha release, Paver is available under the BSD license.


Persevere on the other hand is a more deliberate approach to rethink how web servers work, and development is lead by SitePen’s Kris Zyp:

The Persevere project is an open source set of tools for persistence and distributed computing using intuitive standards-based JSON interfaces of HTTP REST, JSON-RPC, JSONPath, and HTTP Channels. The core of the Persevere project is the Persevere Server. The Persevere server includes a Persevere JavaScript client, but the standards-based interface is intended to be used with any framework or client.

The Persevere Server is an object storage engine and application server (running on Java/Rhino) that provides persistent data storage of dynamic JSON data in an interactive server side JavaScript environment. It is currently in beta, and boasts a very solid feature set that should interest JavaScript, Dojo and Ajax developers:

  • Create, read, update, and delete access to persistent data through a standard JSON HTTP/REST web interface
  • Dynamic object persistence – expando objects, arrays, and JavaScript functions can be stored, for extensive JavaScript persistence support
  • Remote execution of JavaScript methods on the server through JSON-RPC for a consistent client/server language platform
  • Flexible and fast indexed query capability through JSONPath
  • Comet-based data monitoring capabilities through HTTP Channels with Bayeux transport plugin/negotiation support
  • Data-centric capability-based object level security with user management, Persevere is designed to be accessed securely through Ajax with public-facing sites
  • Comprehensive referencing capabilities using JSON referencing, including circular, multiple, lazy, non-lazy, cross-data source, and cross-site referencing for a wide variety of object structures
  • Data integrity and validation through JSON Schema
  • Class-based data hierarchy – typed objects can have methods, inheritance, class-based querying
  • Pluggable data source architectures – SQL tables, XML files, remote web services can be used as data stores
  • Service discovery through Service Mapping Description

Comet daily has more information about the recent addition of Comet support to Persevere. Also be sure to check out the Persevere live grid demo.

Persevere Data Grid Demo

Persevere is dual-licensed under the BSD and AFL. Visit the SitePen Labs for more information or to download Paver and Persevere.


  • Redaer Suomynona

    Is this in any way related to this Persevere: ?

  • @Redaer, that link refers to the Persevere client side JavaScript library. However, the Persevere server is the core, and is the primary focus of the Persevere project now (and this post). Dojo will be providing a more advanced RESTful client architecture that I would recommend using on the client side.

  • I’m curious how the REST interface for Persevere compares to the new RESTful routes conventions used by Ruby on Rails.

    I’d be pretty cool if there were a standard sort of REST interface that could be depended on for at least basic CRUD operations :)

  • @Charlie: I believe RoR’s ActiveResource is very similar, from what I understand, and I am hoping to add Dojo support for those conventions soon. The REST interface is standardized to a large degree in the HTTP spec. There are areas of interpretation when creating URL conventions and applying it to JSON, but it gives a pretty good roadmap, and I think RoR follows it closely as well. I have built a Dojo Data store for connecting to REST stores which is used in this demo, and it works with very little modification with CouchDB, Amazon S3, and I am hoping to get it going with RoR’s ActiveResource as well.

  • Hi Kris! This is so cool! :) I’ve been starting several projects using SSJS (Jaxer, et.c.) but everything falls apart sooner or later. Bringing the Apache Sling-like REST storage DB into the fold gives a x1000 power easily.

    I’ve managed to create a widget out of the dynamic grid example. Actually, I think the Grid should work like that out of the box, to make it easier for newbies to Dojo (auto-generate column names and types based upon model peeking). Drop me a line if you’d like to see it.