From: %YOU%
To: dev@couchdb.apache.org
Subject: [NOTICE] CouchDB %RELEASE_TYPE% release this month
================================================================================

Dear community,

This is advance notice that we plan to do a %RELEASE_TYPE% release this month.

The following release lines are targeted:

 * %RELEASE_LINES%

We intend to start the voting in three weeks from today. Please use this time to review any outstanding changes to be made, merging them in as necessary, and taking particular care to update NEWS and CHANGES.

For more information, see:

    http://wiki.apache.org/couchdb/Release_Procedure#Timetable

For the release calendar, see:

    http://wiki.apache.org/couchdb/Release_Calendar

Per the release procedure, I will send out a follow-up merge request in one week.

Thanks,
