- Write notes on paper.
- Write notes in a private note file. (I use whitelisting instead of blacklisting for files in the repository, so I do not need to add it to a ignore list.)
- Write notes in a public note file. (Others may also read this if needed.) (For example, the TODO file in Free Hero Mesh.)
- Write notes in comments in the code, especially if they are closely related to that part of the code or if it seems that someone who reads it might find it helpful.
- Write notes in the public bug tracker.
- Write notes on IRC and/or NNTP. (Notes on the IRC may get lost; although they are logged, they may be hard to find again, so important notes will usually be copied into a note file too.)
And a good way to write those is to have a `## Unreleased` entry on top of `CHANGELOG.md` - the idea is to add tasks as they are being completed.
Then when a version is published/tagged/milestone, replace the "Unreleased" with "v1.2.3".