Its not a full switch to emonk, just a refactor to allow supporting emonk as well as some other bits to make the various server process handling less funky.
The other major thing I did was to split couch_query_servers into two sets of modules. couch_view_server for map/reduce views, and couch_app_server for everything else. Each set of modules has an API module and a set of implementation modules. For instance:
All calls from external code go to couch_view_server that returns an opaque term that ends up calling out to the actual implementation module.
The main things missing from my code are finishing the implementations for the non-emonk app servers and some refactoring in a few places so that things like couch_view_server_os.erl and couch_app_server_os.erl share the same code for managing OS level processes. The couch_proc_manager.erl in Adam's patch looks like exactly what I need for this so that'll help.