The fine folks at airbnb recently opensourced an amazing software product called caravel. It is a web-based data visualisation and dashboarding application. It looks amazing and I hope to share some of my experiences getting it up and working.

https://github.com/airbnb/caravel

Things I love about this tool:

  1. It's 100% open source - no "paid" or "locked" features - what you see is what you get.
  2. It's a big, beautiful python application, I think it is amazing to see a product of such scale that uses libraries that I use on a day to day basis - I'm looking forward to reading the source code of this app!
  3. Although the documentation is light on (presently), it does work as described - it's not just a marketing gimmick - and they have a very cool looking road map for future improvements (including python 3 support!).
  4. It fills a niche that other open source reporting tools (such as Jasper and Pentaho) don't do well - time-based tactical views on data.
  5. The sqlalchemy support means that most databases are supported out of the box.
  6. The druid integration provides future expansion for large/aggregated datasets (you can see why airbnb would be interested in this).

Things that could be improved:

  1. It does not support table joins out of the box - which means that I'm going to have to set up some views in my database to produce meaningful reports.
  2. All of the graphs seem to require time based data - not everything i want to report on has a temporal element.
  3. The spatial support is pretty rudimentary, it's really based on ISO country code - I would imagine that it is beyond the scope of the project to hook in to postgis and supply an openlayers widget (but what a possibility!).

What an amazing open source tool - bravo to the developers and to airbnb for releasing this for us to use and expand!

Installing caravel on Mac OSX 10.11.4 El Capitan

Below are my OSX installation notes (hopefully some folks out there may find them useful).

Firstly it is currently python 2.7 only which means you have to re-learn how to use virtualenv. On Linux this is pretty straight forward, on OSX it required a bit of mucking around.

Step 1 - Install xcode (via app store)

then run xcode-select --install

Step 2 - install home-brew

Old versions can be problematic (so you can uninstall and reinstall if necessary)

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)"

ruby-e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Step 3 - install python 2.7 (caravel does not support python 3 … yet)

I then had to fix the python path (as it kept pointing to /usr/bin)

brew link —overwrite python

Step 4 - install virtualenv

pip install virtualenv

Step 5 - create virtualenv

(note: this is the old python 2.7 way of doing things, python 3 introduced pyvenv)

virtualenv venv_caravel

Step 6 - activate virtualenv

../venv_caravel/bin/activate

Step 7 - follow the caravel installation instructions


I had to run the following to successfully install the cryptography library:

env LDFLAGS="-L$(brew --prefix openssl)/lib" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography

Install caravel

pip install caravel

Create an admin user

fabmanager create-admin --app caravel

Initialize the database

caravel db upgrade

Create default roles and permissions

caravel init

Load some data to play with

caravel load_examples

Start the development web server

caravel runserver -d