Skip to content

Instantly share code, notes, and snippets.

@adamwiggins
Last active November 15, 2023 23:13
Show Gist options
  • Star 5 You must be signed in to star a gist
  • Fork 2 You must be signed in to fork a gist
  • Save adamwiggins/7d0e0805e0e44870f17f to your computer and use it in GitHub Desktop.
Save adamwiggins/7d0e0805e0e44870f17f to your computer and use it in GitHub Desktop.
My slides for Heroku's polyglot product (later named “Cedar”) from May 2010.

What follows is a raw dump of slides (originally in Showoff format) I presented to the Heroku team, then about 15 employees, in May of 2010. At this time we called this our “polyglot product,” but later we would name it Cedar.

The first phase were changes addressing the biggest complaints from customers at the time. The next phase was building out our add-ons system. The final phase was adding support for what we considered some of the most interesting programming languages on the web. The finishing move was support for the world's most popular programming language.

Many of these things changed names before they launched: “add-on kit” became “the add-ons program” and launched five months later; the project we codenamed Bifrost became Heroku Postgres and launched seven months later. Some of the things we experimented with but decided not to do, like HTTP path mounting and TCP routing. Some things might still be coming, like attachable resources, accounts, and different sized dynos. And many we did exactly as shown here, including what I consider to be the climax, the launch of Python support a year and a half after I presented this roadmap.

I thought you might enjoy seeing how the sausage gets made. I have not edited this content at all from its original form other than to remove the Showoff markup (e.g. !SLIDE). Enjoy.

Polyglot Roadmap

Phase 1: User-driven improvements

  • Heterogenous workers (procfile)
  • Good logs
  • Better cron (scheduler process)
  • Half and quarter dynos
  • NoSQL add-ons (mongo, couch)

Phase 2: Polyglot prep

  • Robust queuing solution (beanstalk)
  • Add-on kit public
  • PostgreSQL add-on (bifrost)
  • Redis add-on (redistogo)
  • Attachable resources

Phase 3: Polyglot

  • Polyglot framework (packaging, execution, console...)
  • HTTP path mounting
  • Python, Scala, Erlang, Clojure, Go, JRuby (pick 2)
  • Accounts

Phase 4: HADOUKEN

  • Java
  • TCP routing
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment