tl;dr: Plugman and CLI now uses Q.js[1] Promises internally instead of callbacks. This has significantly clarified and shortened the code. The public API (plugman.fetch, cordova.platform, etc.) HAVE NOT changed!
If you use CLI on the command line, nothing has changed. If you downstream CLI and/or Plugman, but use cordova.foo and plugman.foo, nothing has changed (except possibly that a few calls are a bit more async than before, so code that cheats and pretends they're sync might fail now). If you downstream either one, but require internal modules like fetch.js or platform.js directly, you should stop doing that and use plugman.fetch etc. instead. If you want to continue calling them directly, you'll need to port to use promises. If you've been working on Plugman or CLI and I just broke everything, feel free to yell at me on IRC (#cordova, shepheb) or Gtalk (braden at google dot com) or email. It's not hard to port things to handle promises (see below), and their basic use is not hard to understand (see the tutorial[1]). If you really do need to port something, and you used to do a function call like this: whateverFunc(args..., function(err){ if (err) { foo } else { bar } }); the correct call is now: whateverFunc(args...).done(function() { bar }, function(err) { foo }); [1] Q.js tutorial at https://github.com/kriskowal/q