Meet Tarbell

Introducing a very simple content management system from the Tribapps team

Newsrooms need sturdy, affordable tools to give stories special treatment on a day-to-day basis. If maintenance requirements are compounded every time an app is released, new apps will tend to be big affairs, created by elite developers. But if you can create apps that are simple and built on static HTML, CSS, and JavaScript, you can afford to fire-and-forget and potentially get a few more folks in the newsroom creating online presentations and telling stories on the web.

A couple of years ago, I would have told you the best option was either a powerful but opinionated (and appropriately boring) CMS like Drupal or a “bespoke” (ahem) app with a database and server infrastructure to run it. That was before I started working at the Chicago Tribune, where Brian Boyer opened my eyes to a different ethos.

Kill the server, Brian preached. Bake your apps to Amazon S3. Save money, stop worrying about arcane Linux incantations to keep the database server afloat. As someone who’s spent seven years helping folks pry apart computers to better understand them through my nonprofit FreeGeek Chicago, this scrappy mantra appeals to me.

One of my first projects for the apps team was Playing with Fire, an award-winning investigation into the role of tobacco and chemical companies in shaping policy mandating ineffective and potentially toxic flame retardants in furniture and clothing. Joe Germuska, Brian and I built a simple rig based on Flask that reads a Google spreadsheet and provides worksheet values to templates as key -> value pairs.

Google spreadsheets for content management? Ohh-kay Brian, says the person who spent the last four years in the Drupal salt mines where Real Websites are backed by a database, web server, and content management system. I was skeptical.

My skepticism, perhaps a bit of techno-elitism, should have been erased when I had talked with some friends in professional management roles (a lawyer, a product executive for a food company, a call center manager) a few years ago about essential skills for their workers. They all said Excel.

I finally understand why spreadsheets are so important. Spreadsheets are a miracle of computing. They’re the Swiss army knife of data management, a programming language for the rest of us. Collaboratively edited spreadsheets are a miracle of the Internet. Managing content with Google spreadsheets lowers the barrier to entry for participation by using familiar, flexible tools. Nothing we could build would provide a better user experience or more seamlessly integrate editors and content creators.

In the end, my fears were unfounded: Using spreadsheets worked! Editors liked the process, and the project came out fabulously.

During the following months we forked the original Flames code to produce Pension Games and An Empty Desk Epidemic.  At that point I was getting tired of maintaining forks of the same codebase. Especially because we felt we could start producing these editorial projects on shorter and shorter timelines and get more folks in the newsroom in the mix. So my apps team colleagues and I began work on Tarbell, software meant to distill the lessons of those editorial projects into a single platform.


Tarbell is named in homage to the journalist Ida Tarbell, whose History of the Standard Oil Company is one of the great works of investigative journalism.

Our requirements for Tarbell:

  • Manage dozens of micro-sites with similar branding, analytics, SEO and social media plumbing.
  • Relatively easy to install on OS X and Linux.
  • Develop using simple, modern HTML, CSS, and JavaScript. We believe we can teach our colleagues in the newsroom these skills.
  • Manage content and data with Google spreadsheets: Provide key -> value pairs and arbitrary data to templates (<p>{{ title }}</p>).
  • Easy publish to Amazon S3. Build a common-case publishing workflow that’s easy for end-users to customize to their own needs, like using SFTP instead.

Using Tarbell

You may be asking yourself, “How do I use it?” Here’s a quick overview. For detailed information, see the Tarbell documentation.

First, install Tarbell (you’ll find virtualenv and the virtualenvwrapper helpful as well):

git clone https://github.com/newsapps/tarbell
cd tarbell
mkvirtualenv tarbell
pip install -r requirements.txt

At this point, you’ll need to follow the instructions for creating a client_secrets.json file to allow Tarbell to use your Google account to access Google Drive. If you run into trouble or don’t want Google Drive access, you can configure template variables.

fab newproject

Did the new project process go okay? Now for the fun part!

The fun part

  1. First, fire up a server: python runserver.py.
  2. Visit http://localhost:5000/projectname in your browser to see the new project. You should see a page that looks like the project example page.
  3. Open up your Google doc and add a new key -> value pair in the values worksheet: the key should be “credit” and the value should be “By the News Apps Team”.
  4. Open up myproject/templates/index.html and add the credit line: <p class="credit">{{ credit }}</p>.
  5. Open up myproject/static/css/style.css: .credit { font-size: 20px; font-weight: bold; }.
  6. View it in your browser: http://localhost:5000/myproject/index.html or just http://localhost:5000/myproject/.
  7. To deploy, add your S3 credentials to s3config.py. Now you can deploy it: fab deploy. This command will deploy all your Tarbell projects to the production S3 bucket specified in s3config.py.

Tarbell in the World

Tarbell has been used for 18 projects and counting at the Chicago Tribune and is already being used by Southern California Public Radio. Here are some examples of Tarbell projects:

  • Projects pages: Southern California Public Radio is using Tarbell to generate their apps page and have helped Tarbell improve rapidly since our first open source announcement.
  • Election widgets and results: During the last Illinois elections we used Tarbell to manage data and presentation. A small team of reporters entered election result data into the Google spreadsheet. We set up a cron job to republish the Tarbell site every two minutes. Because Tarbell also publishes a JSON representation of the Google spreadsheet, we were able to create a widget that simply polled for new data every couple of minutes. The results page and widget were viewed by more people than voted in the election itself.
  • Long form storytelling: Tarbell is a great platform for rich, long-form publishing. Hadiya’s Friends and His Saving Grace use custom processors to pull data from the Chicago Tribune CMS and significantly upgrade the online presentation using carefully crafted CSS and Javascript.
  • Graphics: The Tribune graphics department has used Tarbell (with minimal intervention from the apps team) to develop infographics about the conversion of Chicago’s United Center from ice rink to basketball court, and a deep dive into problems with Boeing’s Dreamliner airplane. These are “just” mobile-friendly translations of print graphics. They are also amongst our most successful and popular projects.
  • Data apps: The apps team is using Tarbell to track school closings and school utilization in Chicago Public Schools using Google Fusion Tables and Google Maps. The school utilization site demonstrates the ease with which other libraries and HTML templates (in this case, Derek Eder’s searchable map template) can be integrated into Tarbell projects.
  • Timelines and galleries: Chicago Gunrunning uses Tarbell to create a series of slides, dramatizing a real case in which guns were moved from a gun show in Indianapolis to Chicago. That project came about after I was approached by a reporter and asked her to put her data into a Google spreadsheet just so I could see. I quickly realized once I saw the data that we could set up a Tarbell project and create a slideshow out of the data. This project became the basis of a new tool to routinely generate these map + text slideshows. We named it TACO after folks in the newsroom kept asking about the “taco tool” used create Kevin Pang’s Fox Valley Taco Tour.

What’s Next?

We had our first official release the other day, version 1.0 beta-1.

During the next two weeks, the Tribune apps team will be deploying the new open source template to people on the graphics desk. We’re planning on a second beta release in mid-June with expanded documentation and a smoother authentication workflow. We hope to have a release candidate or final release by mid-July with more flexible deployment options and better code testing.

We’re happy to hear your thoughts about using and improving Tarbell, so drop us a line at newsapps@tribune.com.




  • David Eads

    David Eads is a news applications developer at ProPublica Illinois, where he combines journalism with software development. Ever since he built the website for his high school newspaper in 1996, Eads knew he wanted to work at the intersection of media and technology. He moved to Chicago for college in 1999, studying physics at North Park University. During school he helped found the Invisible Institute, where he also maintained a blog about Chicago public housing called The View From The Ground. He later helped create FreeGeek Chicago, a community-based computer recycling organization and the Supreme Chi-Town Coding Crew, a weekly workshop to teach data journalism. He’s also worked on visual journalism teams at the Chicago Tribune and, most recently, at NPR Visuals.


Current page