My favorites | Sign in
Project Home Wiki Issues Source
Project Information
Members
Links

Jiffy Overview

Jiffy is an end-to-end real-world web page instrumentation and measurement suite. The first beta was released on 6/23/2008, as announced at O'Reilly Velocity 2008. Here's a a copy of the slides and here's the video.

Jiffy was built and is maintained by the WhitePages.com team.

Jiffy allows developers to

  • measure individual pieces of page rendering (script load, AJAX execution, page load, etc.) on every client
  • report those measurements and other metadata to a web server
  • aggregate web server logs into a database
  • generate reports

Additionally, using the Jiffy extension for Firebug built by Bill Scott from Netflix, developers can see and test Jiffy-based measurements.

Jiffy Components

The system consists of the following components:

  • Jiffy.js, the Javascript library used for generating measurements; it's tested across IE6 & 7, FF2 & 3, and Safari 3. Documentation here.
  • Apache proxy (httpd.conf) configuration for logging Jiffy posts
  • An ingestor (written in Perl) which runs on the Apache server and posts logs to a database through DBI. Documentation here, plus a SampleJiffyLog.
  • Working DDLs for Oracle XE and higher. Documentation here. We haven't (yet) provided DDL's for other databases, but the database model described in the documentation has been tested in a MySQL installation.
  • Reporting rollup code for Oracle (MySQL to come)
  • A reporting UI using the Yahoo! User Interface library

Using Jiffy

You can use Jiffy end-to-end by

  • including Jiffy.js in your pages and instrumenting them with the appropriate mark and measure calls
  • Making the configuration changes needed to your proxy
  • Adding the ingestor as a cron job on your web servers, with appropriate connection strings
  • Setting up the data model
  • Editing the reporting configuration and deploying the reporting tools

More simply, you can combine Jiffy and the Firebug add-in to view Mark & Measure results for a single developer client.

Note that there are a fair number of dependencies across the system, assuming that you can set up a fairly heterogeneous environment. Obviously much of the code and config is easily ported to single systems, and we may later combine parts.

  • Apache 2.X for the proxy config (untested in previous versions, but it will probably work)
  • Perl 5.8 or later for the ingestor
  • Oracle XE and higher
  • PHP >5.2.0 or PECL json: >= 1.2.0 for the reporting tools, plus online access to the Yahoo! User Interface Library (which you could copy and serve in-house)

To use Jiffy, checkout the source from the Source tab above. You'll need an svn client.

Contacting Us

We're currently supporting the project through the jiffy-web Google Group: please send questions, problems, etc. there.

Join the Project!

There's still plenty of work to do to improve Jiffy, including

  • More database options (we really need a MySQL port)
  • Improvements to reporting tools
  • A means to glue jiffy.js to your automated test suite
  • Documentation and use-case improvement
  • Aggregated log parsing (rather than per-web-server log parsing) as an option

We're still figuring out the plan for accepting patches - for now we're going to use the Google Group for everything.

Powered by Google Project Hosting