Imagine that I'm developer of some view server. I'd like to create view server which covers most of CouchDB releases. Each new CouchDB release brings new features, improvements and API changes, some times backward-incompatible (as for 0.9->0.10->0.11->0.11.1) . However, I couldn't solve this task due to there is not way to know about CouchDB version and API that I have to implement. So there are three ways that I have:
1. develop only "bleeding edge" view server that support only latest version
2. make separate branch per version
3. keep "all in one" and pass version as command line argument.
First one makes to forgot about old releases, second is supporting hell. Last one is more effective, but requires to keep in mind changing argument on server update.
This issue could be an improvement of COUCHDB-904 by using next scenario:
CouchDB pass "version" command to view server with additional value of CouchDB version and excepts that view server return his version back. That would be something like "version exchange".