Warden.js is a library that makes event-driven programming clear, declarative and easy.
General idea of Warden.js to make composing, combining and resolving concurrent events simpler. In terms of mathemathics, idea that to change your program's livecircle scheme from the tree of states to the partially ordered set of values in time (or other) priority relation. Values takes from streams which represent values changing over time themself. It means that in Warden.js events are source of data, not an actions which publish gives data to the handlers.
Event-driven applications are hard. Hard to understand, hard to debug, hard to maintain. It's hard to combine values which can change over the time. State is unpredictable.
But EDD is good for scalable asynchronious applications, today event-driven patterns are foundation of browser programming and Node.js both. So we need more declarative way to manage out events.
FRP is good solution. But there are troubles with it sometimes. It's hard to integrate FRP solutions in ready and big project on jQuery. To realize true FRP you need to go realy deep into JavaScript, cause of JS don't functional language. You will need immutable data structures, virtual DOM, value propagation logic etc. The closest to FRP on JavaScript is stack of ClojureScript + Javelin + React. It's really good, but it doesn't cover all neccessaries of developers. Sometimes we need something easy.
Warden.js - is a trade-off between true FRP and traditional EDP. You can choose which way to use. True functional immutable state, or you just need streams for syntax sugar, or something between. It remains ability to create dirty-state components which represents itselfs as a stream so you can easy manage your app's state.