TameJs is an extension to JavaScript created by the OK Cupid team. Its purpose is to make event programming “easier to write, read, and edit.” It can be used with Node.js or other V8 projects. According to the site: “Tame is not an attempt to dumb down async programming. It’s just a cleaner way to write it.”

You can find it in GitHub, licensed under the MIT license.

TameJs is actually based on a similar technology created by OK Cupid but designed for C++:

OkCupid serves externally over 100 million dynamic HTTP requests every day (over 1,000/second on average), each of which fires off calls to all kinds of other services, literally billions of async calls daily. Everything is Tamed, and we’ll never look back.

We’ve been watching the Node community for a while now, and here are our favorite sites/projects: HowToNode, debuggable, and Nodejitsu, and also the framework & middleware Express and Connect. The programmers at those sites have gotten us to turn our interest to Node. But async programming can fail in language scalability, if not performance scalability. JavaScript is missing native support for this kind of control-flow. (It’s worth noting C# just added an await primitive! They’re onto us.) We have the experience to see what it does to large-scale projects.

The C++ version is also available, however “it requires committing to certain other libraries you might not want (sfslite, libasync).”

klint finley