Recent changes to this wiki:

Fix markup
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index 00f969e..4b65733 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -1,7 +1,7 @@
 [[!meta title="distix development as performance art"]]
 
 ** The performance has now ended. The netcat-based broadcasting
-   has terminated, but the files can be downloaded. See below. ***
+   has terminated, but the files can be downloaded. See below. **
 
 Thirty years ago I started to learn programming. To celebrate this,
 I'm doing a bit of programming as a sort of performance art. I will

Update distix performance page
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index 467fa81..00f969e 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -1,7 +1,7 @@
 [[!meta title="distix development as performance art"]]
 
-** The performance has now ended. There will be downloads of the recordings
-later, but now I need a break. --liw **
+** The performance has now ended. The netcat-based broadcasting
+   has terminated, but the files can be downloaded. See below. ***
 
 Thirty years ago I started to learn programming. To celebrate this,
 I'm doing a bit of programming as a sort of performance art. I will
@@ -25,7 +25,7 @@ for you:
 While I write this program, I will broadcast my terminal to the
 Internet for anyone to see. To watch, you will need:
 
-* the [ttyrec] and [netcat] programs installed
+* the [ttyrec] program
 * a terminal emulator that emulates xterm and 
   **is at least 94 columns wide and 44 lines high**
 * compatible terminal emulators exist for Linux and other Unix-like
@@ -45,15 +45,6 @@ IRC, or e-mail, you won't see that, sorry, but I will try to avoid
 them. I'll use the `screen` program to have access to as many shell
 prompts as I need, and I'll run my editor inside screen as well.
 
-To watch in real time, run this, using **bash** (or any other shell
-with support for the syntax):
-
-    ttyplay <(nc pieni.net 3000)
-
-`nc` is netcat, and it connects to my server, `pieni.net`, port 3000,
-and reads everything it gets from there. `ttyplay` is the program that
-replays what I record with `ttyrec` on my own computer.
-
 You can only watch. You cannot control my terminal in any way.
 
 You can start watching at any time, and you'll see things happen at
@@ -61,28 +52,14 @@ the speed they happened for real. See the `ttyplay` manual page for
 how to control the playback speed to catch up faster or to skip boring
 bits where nothing happens.
 
-I expect to spend all day on this. Every hour or so I will start a new
-recording, which will be at subsequent ports:
-
-    ttyplay <(nc pieni.net 3000)
-    ttyplay <(nc pieni.net 3001)
-    ttyplay <(nc pieni.net 3002)
-    ttyplay <(nc pieni.net 3003)
-    ttyplay <(nc pieni.net 3004)
-    ttyplay <(nc pieni.net 3005)
-
-This will allow you to skip earlier parts. I will update the list
-above as things start.
-
 There will be an IRC channel as well: `#distix` on the OFTC network
 (`irc.oftc.net`). Feel free to join there if you want to provide real
 time feedback (the laugh track). I won't engage in much discussion
 during the performance, but I'm happy to glance at the channel from
 time to time.
 
-Some additional files will be at
-<http://files.liw.fi/distix-performance/> and updated automatically
-about once a minute during the performance.
+See <http://files.liw.fi/distix-performance/> for downloading the
+recordings, and for the journal and TODO files, and the IRC channel
+log.
 
 [ttyrec]: http://0xcc.net/ttyrec/index.html.en
-[netcat]: https://en.wikipedia.org/wiki/Netcat

Mark performance as ended
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index 8a1f603..467fa81 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -1,5 +1,8 @@
 [[!meta title="distix development as performance art"]]
 
+** The performance has now ended. There will be downloads of the recordings
+later, but now I need a break. --liw **
+
 Thirty years ago I started to learn programming. To celebrate this,
 I'm doing a bit of programming as a sort of performance art. I will
 write a new program, from scratch, until it is ready for me to start
@@ -67,7 +70,6 @@ recording, which will be at subsequent ports:
     ttyplay <(nc pieni.net 3003)
     ttyplay <(nc pieni.net 3004)
     ttyplay <(nc pieni.net 3005)
-    ttyplay <(nc pieni.net 3006) (not yet open)
 
 This will allow you to skip earlier parts. I will update the list
 above as things start.

Open next ttyrec port for dixtix performance
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index 59b6af3..8a1f603 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -67,7 +67,7 @@ recording, which will be at subsequent ports:
     ttyplay <(nc pieni.net 3003)
     ttyplay <(nc pieni.net 3004)
     ttyplay <(nc pieni.net 3005)
-    ttyplay <(nc pieni.net 3006)
+    ttyplay <(nc pieni.net 3006) (not yet open)
 
 This will allow you to skip earlier parts. I will update the list
 above as things start.

Open next ttyrec port for dixtix performance
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index c5f2847..59b6af3 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -67,6 +67,7 @@ recording, which will be at subsequent ports:
     ttyplay <(nc pieni.net 3003)
     ttyplay <(nc pieni.net 3004)
     ttyplay <(nc pieni.net 3005)
+    ttyplay <(nc pieni.net 3006)
 
 This will allow you to skip earlier parts. I will update the list
 above as things start.

Open next ttyrec port for dixtix performance
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index a3bb2e5..c5f2847 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -65,6 +65,8 @@ recording, which will be at subsequent ports:
     ttyplay <(nc pieni.net 3001)
     ttyplay <(nc pieni.net 3002)
     ttyplay <(nc pieni.net 3003)
+    ttyplay <(nc pieni.net 3004)
+    ttyplay <(nc pieni.net 3005)
 
 This will allow you to skip earlier parts. I will update the list
 above as things start.

Open next ttyrec port for dixtix performance
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index d78a237..a3bb2e5 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -64,6 +64,7 @@ recording, which will be at subsequent ports:
     ttyplay <(nc pieni.net 3000)
     ttyplay <(nc pieni.net 3001)
     ttyplay <(nc pieni.net 3002)
+    ttyplay <(nc pieni.net 3003)
 
 This will allow you to skip earlier parts. I will update the list
 above as things start.

Open next ttyrec port for dixtix performance
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index 0baedbd..d78a237 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -63,8 +63,7 @@ recording, which will be at subsequent ports:
 
     ttyplay <(nc pieni.net 3000)
     ttyplay <(nc pieni.net 3001)
-    ttyplay <(nc pieni.net 3002) (NOT YET READY)
-    ttyplay <(nc pieni.net 3003) (NOT YET READY)
+    ttyplay <(nc pieni.net 3002)
 
 This will allow you to skip earlier parts. I will update the list
 above as things start.

Open second recording
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index 02d9d78..0baedbd 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -62,7 +62,7 @@ I expect to spend all day on this. Every hour or so I will start a new
 recording, which will be at subsequent ports:
 
     ttyplay <(nc pieni.net 3000)
-    ttyplay <(nc pieni.net 3001) (NOT YET READY)
+    ttyplay <(nc pieni.net 3001)
     ttyplay <(nc pieni.net 3002) (NOT YET READY)
     ttyplay <(nc pieni.net 3003) (NOT YET READY)
 

Link to updated files from performance page
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index 86dc5ab..02d9d78 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -75,5 +75,9 @@ time feedback (the laugh track). I won't engage in much discussion
 during the performance, but I'm happy to glance at the channel from
 time to time.
 
+Some additional files will be at
+<http://files.liw.fi/distix-performance/> and updated automatically
+about once a minute during the performance.
+
 [ttyrec]: http://0xcc.net/ttyrec/index.html.en
 [netcat]: https://en.wikipedia.org/wiki/Netcat

Tweak performance-art instructions
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index 8ff4cd6..86dc5ab 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -23,8 +23,10 @@ While I write this program, I will broadcast my terminal to the
 Internet for anyone to see. To watch, you will need:
 
 * the [ttyrec] and [netcat] programs installed
-* an X terminal emulator that emulates xterm and 
+* a terminal emulator that emulates xterm and 
   **is at least 94 columns wide and 44 lines high**
+* compatible terminal emulators exist for Linux and other Unix-like
+  operating systems; I don't know about Windows
 
 I use the GNOME terminal emulator, but anything that is compatible
 with xterm should work. The size is because that's the size that
@@ -40,7 +42,8 @@ IRC, or e-mail, you won't see that, sorry, but I will try to avoid
 them. I'll use the `screen` program to have access to as many shell
 prompts as I need, and I'll run my editor inside screen as well.
 
-To watch in real time, run this:
+To watch in real time, run this, using **bash** (or any other shell
+with support for the syntax):
 
     ttyplay <(nc pieni.net 3000)
 

Mark cmdtest bug as done
diff --git a/cmdtest/bugs/parallel-tests.mdwn b/cmdtest/bugs/parallel-tests.mdwn
index 0aecc6d..0ee56c6 100644
--- a/cmdtest/bugs/parallel-tests.mdwn
+++ b/cmdtest/bugs/parallel-tests.mdwn
@@ -1,2 +1,8 @@
 For better performance, tests should be run in parallel, by default,
 only do one-at-a-time when absolutely necessary.
+
+---
+
+This would require cmdtest and yarn to have a language for specifying what
+things can be run in parallel. Too much complexity, I'm afraid. Multiple
+parallel test suites seems like a better. [[done]] --liw

Mark cmdtest bug as done
diff --git a/cmdtest/bugs/test-multiple-processes-across-many-hosts.mdwn b/cmdtest/bugs/test-multiple-processes-across-many-hosts.mdwn
index 3b34410..a1c6a6b 100644
--- a/cmdtest/bugs/test-multiple-processes-across-many-hosts.mdwn
+++ b/cmdtest/bugs/test-multiple-processes-across-many-hosts.mdwn
@@ -1 +1,5 @@
 how can one test multi-process, daemon, client/server apps? black box test.
+
+---
+
+this is no longer an issue with yarn. [[done]] --liw

copyright-statement-lint fixes
diff --git a/copyright-statement-lint.mdwn b/copyright-statement-lint.mdwn
index d2c6f48..69d8a13 100644
--- a/copyright-statement-lint.mdwn
+++ b/copyright-statement-lint.mdwn
@@ -1,4 +1,4 @@
-[[!meta title="copyright-statement-ling: check copyright statements and dates"]]
+[[!meta title="copyright-statement-lint: check copyright statements and dates"]]
 [[!tag program]]
 
 This is a small utility program that checks a source code tree, in
diff --git a/copyright-statement-lint/NEWS.mdwn b/copyright-statement-lint/NEWS.mdwn
new file mode 100644
index 0000000..b002982
--- /dev/null
+++ b/copyright-statement-lint/NEWS.mdwn
@@ -0,0 +1,15 @@
+copyright-statement-lint NEWS
+============================
+
+This file summarizes changes between releases of
+copyright-statement-lint.
+
+Version 0.1, released UNRELEASED
+--------------------------------
+
+* A manual page has been added.
+
+Version 0.0, released 2014-03-18
+--------------------------------
+
+First release.
diff --git a/copyright-statement-lint/README.mdwn b/copyright-statement-lint/README.mdwn
new file mode 100644
index 0000000..a37bab7
--- /dev/null
+++ b/copyright-statement-lint/README.mdwn
@@ -0,0 +1,25 @@
+copyright-statement-lint
+========================
+
+`copyright-statement-lint` checks that the copyright statements
+in files given to it. It verifies that each file has a copyright
+statement, and that at least one of the statements in the file has
+a year that matches the date of the latest git commit.
+
+Legalese
+========
+
+Copyright 2013  Lars Wirzenius
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.

Remove photographer name by request
diff --git a/index.mdwn b/index.mdwn
index bd621db..a0fc317 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -4,7 +4,6 @@ server="http://openid.kitenet.net:8081/simpleid/"]]
 # Welcome
 
 <img src="http://files.liw.fi/liw-big.jpg"
-     alt="Photo by Soile Mottisenkangas"
      class="floatTR" />
 
 Hello. I am Lars Wirzenius. Welcome to my little corner of cyberspace.

Add OS/X, BSD command for date
Thanks to LarstiQ
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
index a49160d..8ff4cd6 100644
--- a/distix/performance-art.mdwn
+++ b/distix/performance-art.mdwn
@@ -13,9 +13,11 @@ The performance starts Friday, 18 April 2014, at 09:00 UTC. I
 apologise if this is an awkward time for you. No time is good for
 everyone, so I picked a time that is good for me.
 
-Run the following command to see what the local time will be for you.
+Run one of the following commands to see what the local time will be
+for you:
 
-    date --date '2014-04-18 09:00:00 UTC'
+    date --date '2014-04-18 09:00:00 UTC' # GNU
+    date -j -f "%Y-%m-%d %T %Z" "2014-04-18 09:00:00 GMT" # BSD, OS/X
 
 While I write this program, I will broadcast my terminal to the
 Internet for anyone to see. To watch, you will need:

Fix links to Obnam manual
Avoid the symlinks.
diff --git a/obnam.mdwn b/obnam.mdwn
index 23cc443..2a4b28e 100644
--- a/obnam.mdwn
+++ b/obnam.mdwn
@@ -41,8 +41,8 @@ Documentation
 -------------
 
 * The full manual (currently a work in progress): available as
-  [a web page](http://code.liw.fi/obnam/manual/manual.html) and
-  [PDF](http://code.liw.fi/obnam/manual/manual.pdf).
+  [a web page](http://code.liw.fi/obnam/manual/obnam-manual.en.html) and
+  [PDF](http://code.liw.fi/obnam/manual/obnam-manual.en.pdf).
     - The Obnam test suite is also meant to be useful for the more
       technical users of Obnam to read:
       [web page](http://code.liw.fi/obnam/yarns.html),

Add a distix page
diff --git a/distix.mdwn b/distix.mdwn
new file mode 100644
index 0000000..c615322
--- /dev/null
+++ b/distix.mdwn
@@ -0,0 +1,5 @@
+[[!meta title="distix"]]
+[[!tag program]]
+
+This is a placeholder page.
+You want the [[performance-art]] subpage for now.
diff --git a/distix/performance-art.mdwn b/distix/performance-art.mdwn
new file mode 100644
index 0000000..a49160d
--- /dev/null
+++ b/distix/performance-art.mdwn
@@ -0,0 +1,74 @@
+[[!meta title="distix development as performance art"]]
+
+Thirty years ago I started to learn programming. To celebrate this,
+I'm doing a bit of programming as a sort of performance art. I will
+write a new program, from scratch, until it is ready for me to start
+using it for real. The program won't be finished, but it will be ready
+for my own production use. It'll be something I have wanted to have
+for a while, but I'm not saying beforehand what it will be. For me,
+the end result is interesting; for you, the interesting part is
+watching me be stupid and make funny mistakes.
+
+The performance starts Friday, 18 April 2014, at 09:00 UTC. I
+apologise if this is an awkward time for you. No time is good for
+everyone, so I picked a time that is good for me.
+
+Run the following command to see what the local time will be for you.
+
+    date --date '2014-04-18 09:00:00 UTC'
+
+While I write this program, I will broadcast my terminal to the
+Internet for anyone to see. To watch, you will need:
+
+* the [ttyrec] and [netcat] programs installed
+* an X terminal emulator that emulates xterm and 
+  **is at least 94 columns wide and 44 lines high**
+
+I use the GNOME terminal emulator, but anything that is compatible
+with xterm should work. The size is because that's the size that
+comfortably fits on my laptop screen.
+
+Sorry, I don't have a way to make this viewable with just a web
+browser. Afterwards, perhaps I can figure out how to produce a video
+of this. (If you figure out a way to do this by web browser only,
+please give me a link to instructions and I'll add it here.)
+
+I will broadcast only the terminal emulator. If I need a web browser,
+IRC, or e-mail, you won't see that, sorry, but I will try to avoid
+them. I'll use the `screen` program to have access to as many shell
+prompts as I need, and I'll run my editor inside screen as well.
+
+To watch in real time, run this:
+
+    ttyplay <(nc pieni.net 3000)
+
+`nc` is netcat, and it connects to my server, `pieni.net`, port 3000,
+and reads everything it gets from there. `ttyplay` is the program that
+replays what I record with `ttyrec` on my own computer.
+
+You can only watch. You cannot control my terminal in any way.
+
+You can start watching at any time, and you'll see things happen at
+the speed they happened for real. See the `ttyplay` manual page for
+how to control the playback speed to catch up faster or to skip boring
+bits where nothing happens.
+
+I expect to spend all day on this. Every hour or so I will start a new
+recording, which will be at subsequent ports:
+
+    ttyplay <(nc pieni.net 3000)
+    ttyplay <(nc pieni.net 3001) (NOT YET READY)
+    ttyplay <(nc pieni.net 3002) (NOT YET READY)
+    ttyplay <(nc pieni.net 3003) (NOT YET READY)
+
+This will allow you to skip earlier parts. I will update the list
+above as things start.
+
+There will be an IRC channel as well: `#distix` on the OFTC network
+(`irc.oftc.net`). Feel free to join there if you want to provide real
+time feedback (the laugh track). I won't engage in much discussion
+during the performance, but I'm happy to glance at the channel from
+time to time.
+
+[ttyrec]: http://0xcc.net/ttyrec/index.html.en
+[netcat]: https://en.wikipedia.org/wiki/Netcat

Tag bug as wishlist
diff --git a/obnam/bugs/no-chattr-support.mdwn b/obnam/bugs/no-chattr-support.mdwn
index 80524e0..b0381ef 100644
--- a/obnam/bugs/no-chattr-support.mdwn
+++ b/obnam/bugs/no-chattr-support.mdwn
@@ -1,3 +1,5 @@
+[[!tag obnam-wishlist]]
+
 Obnam does not support the ext2/3/4 chattr attributes. It should back them up and
 set them on restore, when possible.
 

Tag bug as wishlist
diff --git a/obnam/bugs/verify-stricter.mdwn b/obnam/bugs/verify-stricter.mdwn
index 3d92820..5d8a0df 100644
--- a/obnam/bugs/verify-stricter.mdwn
+++ b/obnam/bugs/verify-stricter.mdwn
@@ -1,3 +1,5 @@
+[[!tag obnam-wishlist]]
+
 On Tue, Mar 11, 2014 at 04:34:13PM +0100, Thomas Schwinge wrote:
 
 > Alternatively, wouldn't it make sense to change to, or at least have

Tag bug as wishlist
diff --git a/obnam/bugs/block-device-backup.mdwn b/obnam/bugs/block-device-backup.mdwn
index 6dd9a71..d570402 100644
--- a/obnam/bugs/block-device-backup.mdwn
+++ b/obnam/bugs/block-device-backup.mdwn
@@ -1,3 +1,5 @@
+[[!tag obnam-wishlist]]
+
 Obnam could do with a mode in which it backs up the data from a block
 device, instead of the device node. If the block device contains a
 filesystem, it should backup only the parts of the device that are

Tag bug as wishlist
diff --git a/obnam/bugs/commit-progress-reporting.mdwn b/obnam/bugs/commit-progress-reporting.mdwn
index cc45e1d..2123a4c 100644
--- a/obnam/bugs/commit-progress-reporting.mdwn
+++ b/obnam/bugs/commit-progress-reporting.mdwn
@@ -1,3 +1,5 @@
+[[!tag obnam-wishlist]]
+
 Improve Obnam's progress reporting during committing.
 
 - how much work will there be to do the commit?

Mark bug closed
diff --git a/obnam/bugs/pretend-does-not-work-on-empty-repo.mdwn b/obnam/bugs/pretend-does-not-work-on-empty-repo.mdwn
index e7fe2c7..a7f58fa 100644
--- a/obnam/bugs/pretend-does-not-work-on-empty-repo.mdwn
+++ b/obnam/bugs/pretend-does-not-work-on-empty-repo.mdwn
@@ -1,2 +1,5 @@
 `obnam backup --dry-run` doesn't work if there is no generation yet.
 --liw
+
+
+[[done]] --liw

Add note to obnam bug
diff --git a/obnam/bugs/turn_--exclude-caches_into_--exclude-tagfile__61__OBNAM__95__NOBACKUP.mdwn b/obnam/bugs/turn_--exclude-caches_into_--exclude-tagfile__61__OBNAM__95__NOBACKUP.mdwn
index 1a52784..5759dc8 100644
--- a/obnam/bugs/turn_--exclude-caches_into_--exclude-tagfile__61__OBNAM__95__NOBACKUP.mdwn
+++ b/obnam/bugs/turn_--exclude-caches_into_--exclude-tagfile__61__OBNAM__95__NOBACKUP.mdwn
@@ -9,3 +9,8 @@ Changing `--exclude-caches` seems wrong to me: it has a specific purpose (to imp
 Adding a new option to ignore directories that contain a specific file (or directory) would be fine.
 
 --liw
+
+---
+
+bwh points out that the owner of the directory and the tag file should
+be the same.

Mark Obnam bug done
diff --git a/obnam/bugs/symlink-as-backup-root.mdwn b/obnam/bugs/symlink-as-backup-root.mdwn
index 9a2fdf8..d5b4f29 100644
--- a/obnam/bugs/symlink-as-backup-root.mdwn
+++ b/obnam/bugs/symlink-as-backup-root.mdwn
@@ -8,3 +8,17 @@ From liw: This is obviously a bug. Obnam should either give an error
 if the backup root is a symlink, or back it up as a symlink, not
 recurse into the directory and then backup that and only then ruin
 everything by backing up the symlink as a symlink.
+
+---
+
+This should now be fixed to give an error message when you backup.
+I can't currently give access to the hidden files easily, I'm afraid,
+but if you change your backup root to be the directory pointed at by
+the symlink, and run a backup, it should go fairly fast and give you
+access to your files.
+
+Later, I may consider allowing the root to be a symlink to a
+directory, but that'll require bigger changes than this error message,
+I'm afraid. Patches to implement this would be welcome.
+
+[[done]] --liw

Mark Obnam bug closed
diff --git a/obnam/bugs/use-cliapps-plugin-manager.mdwn b/obnam/bugs/use-cliapps-plugin-manager.mdwn
index 26f258a..4da8a86 100644
--- a/obnam/bugs/use-cliapps-plugin-manager.mdwn
+++ b/obnam/bugs/use-cliapps-plugin-manager.mdwn
@@ -1,2 +1,4 @@
 Obnam should be using cliapp's plugin manager, instead of its
 own. --liw
+
+Fixed now. [[done]] --liw

Add slash to openid server URL to fix login
diff --git a/index.mdwn b/index.mdwn
index f14b181..bd621db 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -1,5 +1,5 @@
 [[!meta openid="http://liw.fi/"
-server="http://openid.kitenet.net:8081/simpleid"]]
+server="http://openid.kitenet.net:8081/simpleid/"]]
 
 # Welcome
 

Change openid server
diff --git a/index.mdwn b/index.mdwn
index cfd5bd3..f14b181 100644
--- a/index.mdwn
+++ b/index.mdwn
@@ -1,5 +1,5 @@
 [[!meta openid="http://liw.fi/"
-server="http://kitenet.net/simpleid/"]]
+server="http://openid.kitenet.net:8081/simpleid"]]
 
 # Welcome
 

Mark Obnam bug closed
diff --git a/obnam/bugs/exclude_already_existing_files_in_backup__44___does_not_remove_them.mdwn b/obnam/bugs/exclude_already_existing_files_in_backup__44___does_not_remove_them.mdwn
index 6d7df9f..91a8ab4 100644
--- a/obnam/bugs/exclude_already_existing_files_in_backup__44___does_not_remove_them.mdwn
+++ b/obnam/bugs/exclude_already_existing_files_in_backup__44___does_not_remove_them.mdwn
@@ -101,3 +101,8 @@ OUTPUT:
 
 A workaround can be found in
 <http://listmaster.pepperfish.net/pipermail/obnam-flarn.net/2013-May/001929.html>.
+
+
+---
+
+This is now fixed in git master. [[done]] --liw

Update Obnam NEWS, README for 1.7.4
diff --git a/obnam/NEWS.mdwn b/obnam/NEWS.mdwn
index edbfa0e..1e0fd47 100644
--- a/obnam/NEWS.mdwn
+++ b/obnam/NEWS.mdwn
@@ -3,6 +3,53 @@ Obnam NEWS
 
 This file summarizes changes between releases of Obnam.
 
+Version 1.7.4, released 2014-03-31
+--------------------------------
+
+* The manual is now dual-licensed under GNU GPL v3 or later, and
+  Creative Commons CC-BY-SA 4.0.
+
+* The 1.7.3 release never went out. Let's pretend it wasn't even
+  tagged in git, and everyone will be happy.
+
+Bug fixes:
+
+* Obnam FUSE got another bug fix from Valery Yundin, to fix a bug I
+  introduced in 1.7. Reading big files via `obnam mount` should now
+  work better.
+
+* Fix count of backed up files. It used to always count directories.
+  Reported by Alberto Fuentes as Debian bug
+  [742384](https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=742384).
+
+* `obnam diff latest` would fail due to a programming error. Reported
+  by Junyx.
+
+Version 1.7.2, released 2014-03-22
+--------------------------------
+
+Bug fixes:
+
+* Fix another bug in the FUSE plugin's file reading code, found during
+  the release process of 1.7.2.
+
+Version 1.7.1, released 2014-03-22
+--------------------------------
+
+* The `dump-repo` command now outputs JSON instead of YAML. The
+  dependency on PyYAML is no longer.
+
+Bug fixes:
+
+* Nemo Inis found a bug in the FUSE plugin (`obnam mount`), where
+  Obnam would return the wrong data when the program reading the file
+  didn't read the whole file from the beginning in one read(2) system
+  call.
+
+* The test suite now skips tests that require use of extended
+  attributes in the `user` namespace. This should allow the test suite
+  to be run on more build servers run by various distributions.
+
 Version 1.7, released 2014-03-15
 --------------------------------
 
diff --git a/obnam/README.mdwn b/obnam/README.mdwn
index a271e91..11be4c3 100644
--- a/obnam/README.mdwn
+++ b/obnam/README.mdwn
@@ -133,7 +133,7 @@ Feedback
 
 I welcome bug fixes, enhancements, bug reports, suggestions, requests,
 and other feedback. I prefer e-mail the mailing list:
-see <http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-flarn.net>
+see <http://vlists.pepperfish.net/cgi-bin/mailman/listinfo/obnam-flarn.net>
 for instructions.
 
 It would be helpful if you can run `make clean check` before submitting
@@ -146,19 +146,31 @@ Legal stuff
 Most of the code is written by Lars Wirzenius. (Please provide patches
 so that can change.)
 
-The code is covered by the GNU General Public License, version 3 or later.
-
-Copyright 2010-2013  Lars Wirzenius
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 3 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program.  If not, see <http://www.gnu.org/licenses/>.
+This entire work is covered by the GNU General Public
+License, version 3 or later.
+
+> Copyright 2010-2013  Lars Wirzenius
+> 
+> This program is free software: you can redistribute it and/or modify
+> it under the terms of the GNU General Public License as published by
+> the Free Software Foundation, either version 3 of the License, or
+> (at your option) any later version.
+> 
+> This program is distributed in the hope that it will be useful,
+> but WITHOUT ANY WARRANTY; without even the implied warranty of
+> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+> GNU General Public License for more details.
+> 
+> You should have received a copy of the GNU General Public License
+> along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+A copy of the GPL is included in the file `COPYING` in the source tree.
+
+The manual (all the contents of the `manual` subdirectory) is
+additionally licensed under a Creative Commons Attribution 4.0
+International License. You can choose whether to use the GPL or the CC
+license for the manual.
+
+A copy of the Creative Commons license is included in the file
+`CC-BY-SA-4.0.txt` in the source tree, and can be viewed online
+at <http://creativecommons.org/licenses/by-sa/4.0/legalcode>.

Update NEWS for cmdtest for 0.12 release
diff --git a/cmdtest/NEWS.mdwn b/cmdtest/NEWS.mdwn
index 335c679..9c3eb04 100644
--- a/cmdtest/NEWS.mdwn
+++ b/cmdtest/NEWS.mdwn
@@ -3,6 +3,13 @@ NEWS for cmdtest
 
 This file summarizes changes between releases of cmdtest.
 
+Version 0.12, released 2014-03-28
+---------------------------------
+
+For yarn:
+
+* Do not fail a test suite if snapshotting `DATADIR` fails.
+
 Version 0.11, released 2014-03-15
 ---------------------------------
 

Add page for copyright-statement-lint
diff --git a/copyright-statement-lint.mdwn b/copyright-statement-lint.mdwn
new file mode 100644
index 0000000..d2c6f48
--- /dev/null
+++ b/copyright-statement-lint.mdwn
@@ -0,0 +1,17 @@
+[[!meta title="copyright-statement-ling: check copyright statements and dates"]]
+[[!tag program]]
+
+This is a small utility program that checks a source code tree, in
+git, for copyright statements, and whinges if you don't have a
+statement, or the latest commit year is not included in the years of
+any of the statements you do have.
+
+* [[README]] (updated at release time)
+* [[NEWS]] (updated at release time)
+* [[Using stuff on code.liw.fi|code]]
+* Version control:
+  * <http://git.liw.fi/cgi-bin/cgit/cgit.cgi/copyright-statement-lint/>
+  * `git clone git://git.liw.fi/copyright-statement-lint`
+* Release tarballs and Debian packages:
+  <http://code.liw.fi/debian/pool/main/c/copyright-statement-lint/>
+* Copyright license: GNU GPL3 or later.

Add note about workaround to Obnam bug
diff --git a/obnam/bugs/exclude_already_existing_files_in_backup__44___does_not_remove_them.mdwn b/obnam/bugs/exclude_already_existing_files_in_backup__44___does_not_remove_them.mdwn
index 68b4d78..6d7df9f 100644
--- a/obnam/bugs/exclude_already_existing_files_in_backup__44___does_not_remove_them.mdwn
+++ b/obnam/bugs/exclude_already_existing_files_in_backup__44___does_not_remove_them.mdwn
@@ -95,3 +95,9 @@ OUTPUT:
 	drwxrwx--- 4 jordi jordi 80 jun 20 09:23 ..
 	-rw-rw---- 1 jordi jordi  0 jun 20 09:23 file1
 	-rw-rw---- 1 jordi jordi  4 jun 20 09:23 file2
+
+
+---
+
+A workaround can be found in
+<http://listmaster.pepperfish.net/pipermail/obnam-flarn.net/2013-May/001929.html>.

Add obnam bug
diff --git a/obnam/bugs/pretend-does-not-work-on-empty-repo.mdwn b/obnam/bugs/pretend-does-not-work-on-empty-repo.mdwn
new file mode 100644
index 0000000..e7fe2c7
--- /dev/null
+++ b/obnam/bugs/pretend-does-not-work-on-empty-repo.mdwn
@@ -0,0 +1,2 @@
+`obnam backup --dry-run` doesn't work if there is no generation yet.
+--liw

Add Levenshtein distance to bug names idea
Suggested by Daniel Silverstein.
diff --git a/ideas/bug-names.mdwn b/ideas/bug-names.mdwn
index 234c0d0..7478ea2 100644
--- a/ideas/bug-names.mdwn
+++ b/ideas/bug-names.mdwn
@@ -1,4 +1,4 @@
-(Overall design together with Daniel Silverstone.)
+(Designed together with Daniel Silverstone.)
 
 The problem: Bug reports, tickets, kanban cards, and other such
 entities need a unique identifier. Almost always a simple counter is
@@ -34,6 +34,10 @@ Some notes:
   few of them with memorable names.
 * Since each list of words is distinct, order of words doesn't matter.
 * Words can be translated, without loss of meaning.
+* Words can be chosen to be spelled and pronounced distinctively.
+  Using something like Levenshtein distance could approximate this and
+  would be automatable. When looking up words, this could then be used
+  to find a likely candidate even if there was misspellings.
 
 Very large identifiers, such as for git commits, do not need to be
 encoded fully to benefit from this scheme. Git commits are already

Close non-bug in Obnam
diff --git a/obnam/bugs/keep-hours-buggy.mdwn b/obnam/bugs/keep-hours-buggy.mdwn
index e85dadc..f886c4a 100644
--- a/obnam/bugs/keep-hours-buggy.mdwn
+++ b/obnam/bugs/keep-hours-buggy.mdwn
@@ -5,3 +5,10 @@ From mail:
 > --keep=Nh always do same as --keep=Nd
 
 Seems to be true. Need cmdtest test case for reproduction.
+
+---
+
+Actually, this seems to be mainly a documentation problem. Or an
+indication that the system is too complicated, since so many people
+understand it wrong. But [[done]], though I'll try to improve the
+explanation in the manual. --liw

Update URL to Obnam mailing list page
diff --git a/obnam/README.mdwn b/obnam/README.mdwn
index 45b3404..a271e91 100644
--- a/obnam/README.mdwn
+++ b/obnam/README.mdwn
@@ -133,7 +133,7 @@ Feedback
 
 I welcome bug fixes, enhancements, bug reports, suggestions, requests,
 and other feedback. I prefer e-mail the mailing list:
-see <http://vlists.pepperfish.net/cgi-bin/mailman/listinfo/obnam-flarn.net>
+see <http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-flarn.net>
 for instructions.
 
 It would be helpful if you can run `make clean check` before submitting
diff --git a/obnam/contact.mdwn b/obnam/contact.mdwn
index 51fe9f3..3e48ccf 100644
--- a/obnam/contact.mdwn
+++ b/obnam/contact.mdwn
@@ -1,7 +1,7 @@
 Contact
 -------
 
-* [Mailing list](http://vlists.pepperfish.net/cgi-bin/mailman/listinfo/obnam-flarn.net)
+* [Mailing list](http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-flarn.net)
 * `#obnam` on `irc.oftc.net` for IRC discussions about Obnam
     - the mailing list is strongly preferred for asking help with Obnam
     - Lars rarely has time to discuss anything serious on IRC
diff --git a/obnam/status.mdwn b/obnam/status.mdwn
index a79d91f..89c6981 100644
--- a/obnam/status.mdwn
+++ b/obnam/status.mdwn
@@ -12,7 +12,8 @@ system.
 Using the Obnam web pages for bug reporting is not a good idea,
 since they are not a good way to conduct a discussion.
 
-* E-mail to the [mailing list](http://vlists.pepperfish.net/cgi-bin/mailman/listinfo/obnam-flarn.net).
+* E-mail to the
+  [mailing list](http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-flarn.net).
 
 See [[contact page|contact]] for more instructions on the mailing list.
 

Orphan hithere
diff --git a/hithere.mdwn b/hithere.mdwn
index e338ad1..aabf196 100644
--- a/hithere.mdwn
+++ b/hithere.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="hithere - a greeting application"]]
-[[!tag program]]
+[[!tag orphaned-project]]
 
 **hithere** is a command line utility to greet the user.
 It is similar to the [GNU Hello](http://www.gnu.org/software/hello/)

Close Obnam bug that's been deal with
diff --git a/obnam/bugs/document-how-to-check-encryption-is-being-used.mdwn b/obnam/bugs/document-how-to-check-encryption-is-being-used.mdwn
index 17cca75..1c44e3d 100644
--- a/obnam/bugs/document-how-to-check-encryption-is-being-used.mdwn
+++ b/obnam/bugs/document-how-to-check-encryption-is-being-used.mdwn
@@ -2,3 +2,7 @@
 
 Document how to check that Obnam is actually encrypting anything. --liw
 
+
+This is in the manual now
+(http://code.liw.fi/obnam/manual/manual.html#checking-if-a-repository-uses-encryption).
+[[done]] --liw

Add summian bug
diff --git a/summain/bugs/fed-by-find.mdwn b/summain/bugs/fed-by-find.mdwn
new file mode 100644
index 0000000..537ce34
--- /dev/null
+++ b/summain/bugs/fed-by-find.mdwn
@@ -0,0 +1,4 @@
+Summain should be able to be fed a list of files and directories by
+find(1). This requires the user to be able to tell Summain to not
+recurse into directories.
+--liw

Add link to vmdebootstrap's Debian QA page
diff --git a/vmdebootstrap.mdwn b/vmdebootstrap.mdwn
index 747a1be..7974f17 100644
--- a/vmdebootstrap.mdwn
+++ b/vmdebootstrap.mdwn
@@ -4,11 +4,9 @@
 `chroot`(8). `vmdeboostrap` is a wrapper around it to install Debian into a disk
 image, which can be used with a virtual machine (such as KVM).
 
-At the moment `vmdebootstrap` only works on Debian squeeze, since
-`extlinux` on unstable/testing is broken. It'll get fixed, though.
-
 * <http://git.liw.fi/cgi-bin/cgit/cgit.cgi/vmdebootstrap>
 * `git clone git://git.liw.fi/vmdebootstrap`
+* [Debian](http://packages.qa.debian.org/v/vmdebootstrap.html)
 
 See also:
 

Remove program tag from bgproc
diff --git a/bgproc.mdwn b/bgproc.mdwn
index 067d2ec..6d3ff99 100644
--- a/bgproc.mdwn
+++ b/bgproc.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="bgproc: wrapper around Python multiprocess"]]
-[[!tag program orphaned-project]]
+[[!tag orphaned-project]]
 
 The Python `multiprocessing` library allows some processing to happen in
 the background, using sub-processes. This library adds an abstraction

Update Obnam files for 1.7
diff --git a/obnam.mdwn b/obnam.mdwn
index 52b1913..23cc443 100644
--- a/obnam.mdwn
+++ b/obnam.mdwn
@@ -50,7 +50,6 @@ Documentation
 * [[README]] (updated at release time)
 * [[NEWS]] (updated at release time)
 * [[obnam manual page|obnam.1.txt]]
-* [[obnam-benchmark manual page|obnam-benchmark.1.txt]]
 * [[Roadmap for 1.0|roadmap-for-1.0]] (finished)
 * [[Roadmap post 1.2|roadmap-post-1.2]] (current)
 * [[FAQ]]
diff --git a/obnam/NEWS.mdwn b/obnam/NEWS.mdwn
index 890ddbd..edbfa0e 100644
--- a/obnam/NEWS.mdwn
+++ b/obnam/NEWS.mdwn
@@ -3,6 +3,90 @@ Obnam NEWS
 
 This file summarizes changes between releases of Obnam.
 
+Version 1.7, released 2014-03-15
+--------------------------------
+
+WARNING: This release has had fairly large parts of the internals
+re-written. There shouldn't be any externally visible changes due to
+that, but there is a chance of bugs. Be careful. Make a copy of your
+backup repository before upgrading, if you can.
+
+* The `convert5to6` subcommand has been removed. If you need to
+  convert from a pre-1.0 backup repository, and haven't done so yet,
+  please use Obnam version 1.6.1 or earlier to do so.
+
+* A new `backup-finished` hook is provided by the backup plugin, so
+  that other plugins may do processing at the end of a backup, such as
+  report the successful backup to a monitoring system. Patch by
+  Enrico Tröger.
+
+* The FUSE plugin can now refresh its view, by having the user read
+  the `.pid` file. Patch by Valery Yundin.
+
+* New option `--always-restore-setuid` to always restore setuid/setgid
+  flags in permissions, even if the restore is not being run by `root`
+  or the owner of the files (as recorded in the backup).
+
+* New option `--exclude-from` allows exclusion patterns to be given in
+  a separate file (one per line), instead of in a configuration file
+  or on the command line. Patch by Enrico Tröger.
+
+* A start of a manual for Obnam. This will gain more content with
+  new releases. The current versions is mainly an edited version of
+  Lars's blog posts about backups, plus the Obnam tutorial from the
+  Obnam homepage. See <http://code.liw.fi/obnam/manual/> for
+  rendered versions (PDF, HTML).
+
+* Most of the error messages Obnam produces now have a unique error
+  code: `ERROR: R0B15DX: Cannot find requested generation for client
+  havelock` for example. More error messages will gain error codes in
+  future releases. The error codes are meant to be easy to search for,
+  and will allow error messages to be translated in the future.
+
+* The `obnam-benchmark` program got rewritten so that it'll do
+  something useful, but at the same time, it is no longer useful as a
+  general tool. It is now expected to be run from the Obnam source
+  tree (a cloned git repository), and isn't installed anymore.
+
+* The log file now includes information about the transfer overhead to
+  the repository. Overhead is all the bytes that are not file content
+  data: filenames, permission bits, extended attributes, etc, plus
+  Obnam internal bookkeeping.
+
+* `obnam verify` now shows progress both based on number of files and
+  amount of data.
+
+Bug fixes:
+
+* Obnam now doesn't remove chunks that are shared between clients.
+  Previously, this would sometimes happen, because only the first
+  client would correctly record itself as using a chunk. Now all
+  clients do that.
+
+* Obnam now creates a `trustdb.gpg` in the temporary GNUPGHOME it uses
+  during encryption operations. From version 2.0.22 (or thereabouts),
+  `gpg` insists on having a `trustdb.gpg` in the GNUPGHOME it uses.
+
+* When backing up a large file, and making a checkpoint generation in
+  the middle of it, Obnam would say "continuing backup" after the
+  checkpoint was finished, instead of saying the name of the file.
+  This is now fixed.
+
+Internal changes:
+
+* The `obnamlib.Error` exception class has been replaced by the
+  `obnamlib.ObnamError` class, which derives from the new
+  `obnamlib.StructuredError` class. All new exceptions will need
+  to be derived from `obnamlib.Error` in the future. Also, due to the
+  way `StructuredError` works, it is now necessary to create a new
+  exception class for each kind of error. This gives us unique the
+  error codes mentioned above.
+
+* The old `obnamlib.Repository` class is gone, and replaced with the
+  `obnamlib.RepositoryInterface` class, which gets implemented for
+  each repository format (there is only one, for now, but there will
+  be more).
+
 Version 1.6.1, released 2013-11-30
 ----------------------------------
 
diff --git a/obnam/README.mdwn b/obnam/README.mdwn
index 1c2dfef..45b3404 100644
--- a/obnam/README.mdwn
+++ b/obnam/README.mdwn
@@ -21,8 +21,9 @@ On other systems, using the `setup.py` file should work: run
 "python setup.py --help" for advice. If not, please report a bug.
 (I've only tested `setup.py` enough for to build the Debian package.)
 
-You need to install my Python B-tree library, and some of my other libraries
-and tools, which you can get from:
+You need Python 2.6 or 2.7 (Python 3 is not yet supported). You also
+need to install my Python B-tree library, and some of my other
+libraries and tools, which you can get from:
 
 * <http://liw.fi/larch/>
 * <http://liw.fi/ttystatus/>
diff --git a/obnam/obnam-benchmark.1.txt b/obnam/obnam-benchmark.1.txt
deleted file mode 100644
index d7e5c5d..0000000
--- a/obnam/obnam-benchmark.1.txt
+++ /dev/null
@@ -1,208 +0,0 @@
-OBNAM-BENCHMARK(1)                                          OBNAM-BENCHMARK(1)
-
-
-
-NAME
-       obnam-benchmark - benchmark obnam
-
-SYNOPSIS
-       obnam-benchmark       [--config=FILE]       [--description=DESCRIPTION]
-       [--drop-caches]     [--dump-config]      [--dump-memory-profile=METHOD]
-       [--dump-setting-names] [--file-size=SIZE] [--generate-manpage=TEMPLATE]
-       [--generations=N]  [-h]  [--help]   [--help-all]   [--larch-branch=DIR]
-       [--list-config-files]  [--log=FILE]  [--log-keep=N] [--log-level=LEVEL]
-       [--log-max=SIZE]   [--log-mode=MODE]   [--memory-dump-interval=SECONDS]
-       [--no-default-configs]   [--no-drop-caches]  [--no-use-sftp-repository]
-       [--no-use-sftp-root]        [--no-verify]        [--no-with-encryption]
-       [--obnam-branch=DIR]    [--output=FILE]   [--profile-name=PROFILE-NAME]
-       [--results=DIR]     [--seivot-branch=DIR]     [--seivot-log=SEIVOT-LOG]
-       [--sftp-delay=SFTP-DELAY]     [--size=PAIR]     [--use-sftp-repository]
-       [--use-sftp-root] [--verify] [--version] [--with-encryption] [FILE]...
-
-DESCRIPTION
-       obnam-benchmark benchmarks the obnam(1) backup application, by  measur-
-       ing  how  much  time  it takes to do a backup, restore, etc, in various
-       scenarios.  obnam-benchmark uses the seivot(1) tool for  actually  run-
-       ning  the  benchmarks, but makes some helpful assumptions about things,
-       to make it simpler to run than running seivot directly.
-
-       Benchmarks are run using two different usage profiles:  mailspool  (all
-       files  are  small), and mediaserver (all files are big).  For each pro-
-       file, test data of the desired total size is generated, backed up,  and
-       then  several  incremental  generations are backed up, each adding some
-       more generated test data.  Then other operations are  run  against  the
-       backup  repository:  restoring,  listing  the contents of, and removing
-       each generation.
-
-       The result of the benchmark is a  .seivot  file  per  profile,  plus  a
-       Python  profiler  file  for  each  run  of  obnam.  These are stored in
-       ../benchmarks.  A set of .seivot files can be summarized for comparison
-       with  seivots-summary(1).   The  profiling files can be viewed with the
-       usual Python tools: see the pstats module.
-
-       The benchmarks are run against a version of obnam checked out from ver-
-       sion  control.   It  is  not  (currently) possible to run the benchmark
-       against an installed version of obnam.  Also the larch Python  library,
-       which  obnam  needs, needs to be checked out from version control.  The
-       --obnam-branch and --larch-branch options set the locations, if the de-
-       faults are not correct.
-
-OPTIONS
-       --description=DESCRIPTION
-              describe benchmark
-
-       --drop-caches
-              drop kernel buffer caches
-
-       --file-size=SIZE
-              how big should files be?
-
-       --generate-manpage=TEMPLATE
-              SUPPRESSHELP
-
-       --generations=N
-              benchmark N generations (default: 5)
-
-       -h, --help
-              show this help message and exit
-
-       --larch-branch=DIR
-              use DIR as the larch branch (default: )
-

(Diff truncated)
Update files for summain 0.19
diff --git a/summain/NEWS.mdwn b/summain/NEWS.mdwn
index 6f6ece7..dcf4df7 100644
--- a/summain/NEWS.mdwn
+++ b/summain/NEWS.mdwn
@@ -1,6 +1,12 @@
 NEWS file for summain
 =====================
 
+Version 0.19, released 2014-03-15
+---------------------------------
+
+* FreeBSD portability fixes by Itamar Turner-Trauring of
+  HybridCluster.
+
 Version 0.18, released 2013-03-15
 ---------------------------------
 
diff --git a/summain/summain.1.txt b/summain/summain.1.txt
index 4c7a54b..7ff82e7 100644
--- a/summain/summain.1.txt
+++ b/summain/summain.1.txt
@@ -1,4 +1,4 @@
-SUMMAIN(1)							    SUMMAIN(1)
+SUMMAIN(1)                                                          SUMMAIN(1)
 
 
 
@@ -6,33 +6,33 @@ NAME
        summain - gather file checksums and metadata
 
 SYNOPSIS
-       summain	   [-c=CHECKSUM]     [--checksum=CHECKSUM]     [--config=FILE]
-       [--dump-config]	[--dump-memory-profile=METHOD]	[--dump-setting-names]
+       summain     [-c=CHECKSUM]     [--checksum=CHECKSUM]     [--config=FILE]
+       [--dump-config]  [--dump-memory-profile=METHOD]  [--dump-setting-names]
        [--exclude=FIELD]     [--generate-manpage=TEMPLATE]    [-h]    [--help]
-       [--help-all]    [--list-config-files]	[--log=FILE]	[--log-keep=N]
-       [--log-level=LEVEL]     [--log-max=SIZE]     [--log-mode=MODE]	  [-m]
-       [--mangle-paths] 		      [--memory-dump-interval=SECONDS]
-       [--no-default-configs]	  [--no-mangle-paths]	 [--no-relative-paths]
+       [--help-all]    [--list-config-files]    [--log=FILE]    [--log-keep=N]
+       [--log-level=LEVEL]     [--log-max=SIZE]     [--log-mode=MODE]     [-m]
+       [--mangle-paths]                       [--memory-dump-interval=SECONDS]
+       [--no-default-configs]     [--no-mangle-paths]    [--no-relative-paths]
        [--output=FILE] [-f=OUTPUT-FORMAT] [--output-format=OUTPUT-FORMAT] [-r]
        [--relative-paths] [--secret=SECRET] [--version] [FILE]...
 
 DESCRIPTION
        summain gathers metadata about files, and computes their checksums.  It
-       is intended to create a manifest of the files.	The  manifest  can  be
+       is intended to create a manifest of the files.   The  manifest  can  be
        used to see if something has changed: a new manifest can be created and
        compared with the old one with diff(1).
 
        The manifest looks like this:
 
-	      Name: foo/bar/foobar
-	      SHA1: 1234123413241324
-	      Mtime: 2010-01-01 02:08:00.127651 +0000
-	      Mode: 1755
+              Name: foo/bar/foobar
+              SHA1: 1234123413241324
+              Mtime: 2010-01-01 02:08:00.127651 +0000
+              Mode: 1755
 
-       The filename is URL-encoded to ensure it is purely ASCII.  Mode	is  in
+       The filename is URL-encoded to ensure it is purely ASCII.  Mode  is  in
        octal.
 
-       Only  some  inode  fields are included.	It does not make sense to com-
+       Only  some  inode  fields are included.  It does not make sense to com-
        pare, for example, the access time, so that is not included.
 
        Time stamps are given using microsecond precision, for the  benefit  of
@@ -40,10 +40,10 @@ DESCRIPTION
        nanosecond,  but  Python  return  timestamps  as  floating  point,  and
        nanosecond precision is too much for the floating point type.)
 
-       The  inode  and	device	number fields will not be reported accurately.
+       The  inode  and  device  number fields will not be reported accurately.
        Instead, they are normalized so that manifests  are  useful  after  the
        files have been restored from backups.  Accurate numbers would mean ev-
-       erything seems to have changed.	Normalized means that there will be no
+       erything seems to have changed.  Normalized means that there will be no
        differences.   The  numbers  are  reported  so  that  hard links can be
        checked.
 
@@ -51,20 +51,20 @@ DESCRIPTION
 
 OPTIONS
        -c, --checksum=CHECKSUM
-	      which checksums to compute: MD5, SHA1, SHA224,  SHA256,  SHA384,
-	      SHA512; use once per checksum type (default is SHA1)
+              which checksums to compute: MD5, SHA1, SHA224,  SHA256,  SHA384,
+              SHA512; use once per checksum type (default is SHA1)
 
        --exclude=FIELD
-	      do not output or compute FIELD
+              do not output or compute FIELD
 
        --generate-manpage=TEMPLATE
-	      SUPPRESSHELP
+              SUPPRESSHELP
 
        -h, --help
-	      show this help message and exit
+              show this help message and exit
 
        -m, --mangle-paths
-	      mangle (obfuscate) paths
+              mangle (obfuscate) paths
 
        --no-mangle-paths
 
@@ -73,67 +73,77 @@ OPTIONS
 
 
        --output=FILE
-	      write output to FILE, instead of standard output
+              write output to FILE, instead of standard output
 
        -f, --output-format=OUTPUT-FORMAT
-	      choose output format (rfc822, csv, json)
+              choose output format (rfc822, csv, json)
 
        -r, --relative-paths
-	      print paths relative to arguments
+              print paths relative to arguments
 
        --secret=SECRET
-	      use SECRET to make mangled paths unguessable
+              use SECRET to make mangled paths unguessable
 
        --version
-	      show program's version number and exit
+              show program's version number and exit
 
    Configuration files and settings
        --config=FILE
-	      add FILE to config files
+              add FILE to config files
 
        --dump-config
-	      write out the entire current configuration
+              write out the entire current configuration
 
        --dump-setting-names
-	      SUPPRESSHELP
+              SUPPRESSHELP
 
        --help-all
-	      show all options
+              show all options
 
        --list-config-files
-	      SUPPRESSHELP
+              SUPPRESSHELP
 
        --no-default-configs
-	      clear list of configuration files to read
+              clear list of configuration files to read
 
    Logging
        --log=FILE
-	      write  log entries to FILE (default is to not write log files at
-	      all); use "syslog" to log to system log, or  "none"  to  disable
-	      logging
+              write  log entries to FILE (default is to not write log files at
+              all); use "syslog" to log to system log, or  "none"  to  disable
+              logging
 
        --log-keep=N
-	      keep last N logs (10)
+              keep last N logs (10)
 
        --log-level=LEVEL
-	      log  at LEVEL, one of debug, info, warning, error, critical, fa-
-	      tal (default: debug)
+              log  at LEVEL, one of debug, info, warning, error, critical, fa-
+              tal (default: debug)
 
        --log-max=SIZE
-	      rotate logs larger than SIZE, zero for never (default: 0)
+              rotate logs larger than SIZE, zero for never (default: 0)
 
        --log-mode=MODE
-	      set permissions of new log files to MODE (octal; default 0600)
+              set permissions of new log files to MODE (octal; default 0600)
 
    Peformance
        --dump-memory-profile=METHOD
-	      make memory profiling dumps using METHOD, which is one of: none,
-	      simple, meliae, or heapy (default: simple)
+              make memory profiling dumps using METHOD, which is one of: none,
+              simple, meliae, or heapy (default: simple)
 
        --memory-dump-interval=SECONDS
-	      make memory profiling dumps at least SECONDS apart
+              make memory profiling dumps at least SECONDS apart
 

(Diff truncated)
Update files for cmdtest 0.11
diff --git a/cmdtest.mdwn b/cmdtest.mdwn
index 6b0351a..3507ee4 100644
--- a/cmdtest.mdwn
+++ b/cmdtest.mdwn
@@ -9,7 +9,8 @@ If not, it reports a problem, and shows the differences.
 * [[README]] for cmdtest
 * [[README.yarn]] for yarn
 * [[NEWS]]
-* [[manpage|cmdtest.1.txt]]
+* [[cmdtest manpage|cmdtest.1.txt]]
+* [[yarn manpage|yarn.1.txt]]
 
 See also:
 
diff --git a/cmdtest/NEWS.mdwn b/cmdtest/NEWS.mdwn
index ca4d551..335c679 100644
--- a/cmdtest/NEWS.mdwn
+++ b/cmdtest/NEWS.mdwn
@@ -3,6 +3,63 @@ NEWS for cmdtest
 
 This file summarizes changes between releases of cmdtest.
 
+Version 0.11, released 2014-03-15
+---------------------------------
+
+For yarn:
+
+* Report number of scenarios skipped due to an ASSUMING step failing.
+
+* Fix the error message for reporting scenarios without THEN steps
+  to include the names of those scenarios only, rather than all
+  scenarios. Patch by Pete Fotheringham.
+
+* Yarn now sets `$HOME` to a directory in `$DATADIR`, and creates
+  that directory. This means test suites can assume `$HOME` exists,
+  but don't use the user's real home directory, which is important for
+  test environment hygiene.
+
+* New option `--allow-missing-steps` to allow running a test suite
+  with some steps missing. The scenarios with missing steps will be
+  skipped. Suggested by Pete Fotheringham.
+
+For cmdtest:
+
+* The `--test` (`-t`) option should now work again. Thank you
+  to Kalle Valo for prodding me.
+
+Version 0.10, released 2013-10-05
+---------------------------------
+
+* Yarn now cleans the environment when it runs shell commands for the
+  implementation steps. The PATH variable is kept from the user's
+  environment, every other variable is either removed or hardcoded to
+  a specific value. More variables can be added explicitly to the test
+  environment with the new `--env NAME=VALUE` option. Additionally
+  yarn sets the `SRCDIR` environment variable to point at the root of
+  the source tree (the directory where yarn was invoked from).
+
+* A new option, `--timings`, has been added to yarn to report how long
+  each scenario and each step took.
+
+* Yarn now reports scenarios skipped because of ASSUMING failing.
+
+* Yarn manual page now documents DATADIR and SRCDIR environment
+  variables.
+
+Bug fixes:
+
+* Yarn now complains if a scenario has no THEN steps. Suggested by
+  Richard Maw.
+
+* Yarn now gives an error if there are no scenarios. Suggested by
+  Daniel Silverstone and others.
+
+* Yarn now checks for duplicate scenario names.
+
+* Yarn now always checks for IMPLEMENTS sections with case-insensitive
+  matching. Reported, with test case, by Jannis Pohlmann.
+
 Version 0.9, released 2013-07-23
 --------------------------------
 
diff --git a/cmdtest/README.mdwn b/cmdtest/README.mdwn
index 300770b..b83eabc 100644
--- a/cmdtest/README.mdwn
+++ b/cmdtest/README.mdwn
@@ -1,6 +1,13 @@
 README for cmdtest
 ==================
 
+This project consists of two programs: the original `cmdtest`,
+and the newer `yarn`. Both are black box testing tools for Unix
+command line tools.
+
+cmdtest
+-------
+
 `cmdtest` black box tests Unix command line tools.
 Given some test scripts, their inputs, and expected outputs,
 it verifies that the command line produces the expected output.
@@ -9,10 +16,27 @@ If not, it reports problems, and shows the differences.
 See the manual page for details on how to use the program.
 
 
+yarn
+----
+
+`yarn` also black box tests Unix command line tools, but takes
+a different approach, where the emphasis is on verifying that the
+tools works correctly in a sequence of operations, or
+what we call a "test scenario". `yarn` is inspired [BDD][BDD],
+behavior-driven development, and some of the implementations made
+by the Ruby community.
+
+See README.yarn for more details.
+
+`yarn` has been designed with Daniel Silverstone.
+
+[BDD]: https://en.wikipedia.org/wiki/Behavior-driven_development
+
+
 Legalese
 --------
 
-Copyright 2011  Lars Wirzenius
+Copyright 2011-2013 Lars Wirzenius
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
diff --git a/cmdtest/README.yarn.mdwn b/cmdtest/README.yarn.mdwn
index 16f7522..5f1c7a2 100644
--- a/cmdtest/README.yarn.mdwn
+++ b/cmdtest/README.yarn.mdwn
@@ -1,6 +1,26 @@
 README for yarn, a scenario testing tool
 ========================================
 
+Installation
+------------
+
+* You need Python 2. Yarn's dependencies do not work with Python 3.
+  (Yet.)
+* Install ttystatus: <http://git.liw.fi/cgi-bin/cgit/cgit.cgi/ttystatus>
+* Install cliapp: <http://git.liw.fi/cgi-bin/cgit/cgit.cgi/cliapp>
+* Install Python-Markdown:
+  <http://github.com/waylan/Python-Markdown.git>
+* You can install them from source, or using your operating system's
+  package manager (if they've been packaged for your operating system;
+  Debian has them: `python-ttystatus`, `python-cliapp`,
+  `python-markdown`).
+* Similarly, install yarn from source or with the package manager
+  (in Debian: `cmdtest`).
+* Installation from source requires cloning the git repository and
+  running `python setup.py install`, perhaps with additional options
+  (see `--help`) to specify installation location, etc. Read also the
+  installation documentation of the libraries.
+
 Introduction
 ------------
 
diff --git a/cmdtest/cmdtest.1.txt b/cmdtest/cmdtest.1.txt
index 68d5bf2..866a5b8 100644
--- a/cmdtest/cmdtest.1.txt
+++ b/cmdtest/cmdtest.1.txt
@@ -1,4 +1,4 @@
-CMDTEST(1)							    CMDTEST(1)
+CMDTEST(1)                                                          CMDTEST(1)
 
 
 
@@ -6,16 +6,16 @@ NAME
        cmdtest - blackbox testing of Unix command line tools
 
 SYNOPSIS
-       cmdtest	    [-c=COMMAND]      [--command=COMMAND]      [--config=FILE]
-       [--dump-config]	[--dump-memory-profile=METHOD]	[--dump-setting-names]
+       cmdtest      [-c=COMMAND]      [--command=COMMAND]      [--config=FILE]
+       [--dump-config]  [--dump-memory-profile=METHOD]  [--dump-setting-names]
        [--generate-manpage=TEMPLATE]  [-h] [--help] [--help-all] [-k] [--keep]
        [--list-config-files] [--log=FILE]  [--log-keep=N]  [--log-level=LEVEL]
        [--log-max=SIZE]   [--log-mode=MODE]   [--memory-dump-interval=SECONDS]
-       [--no-default-configs]	[--no-keep]   [--no-timings]   [--output=FILE]
+       [--no-default-configs]   [--no-keep]   [--no-timings]   [--output=FILE]
        [-t=TEST] [--test=TEST] [--timings] [--version] [FILE]...
 
 DESCRIPTION
-       cmdtest	black  box  tests  Unix  command  line tools.  Given some test
+       cmdtest  black  box  tests  Unix  command  line tools.  Given some test
        scripts, their inputs, and expected outputs, it verifies that the  com-
        mand  line  produces the expected output.  If not, it reports problems,
        and shows the differences.
@@ -23,66 +23,66 @@ DESCRIPTION
        Each test case foo consists of the following files:
 
        foo.script
-	      a script to run the test (this is required)
+              a script to run the test (this is required)
 
        foo.stdin
-	      the file fed to standard input

(Diff truncated)
Add links to more cliapp examples
diff --git a/cliapp.mdwn b/cliapp.mdwn
index 8e1cc7a..b258a6b 100644
--- a/cliapp.mdwn
+++ b/cliapp.mdwn
@@ -11,7 +11,8 @@ compatible ways.
 * [[README]]
 * [[NEWS]]
 * [[cliapp(5) manual page|cliapp.5.txt]]
-* [[example.py]] and [[example2.py]]
+* Examples: [[example.py]], [[example2.py]], [[example3.py]],
+  [[example4.py]].
 * [API documentation](http://code.liw.fi/cliapp/docs/)
 * [[Using stuff on code.liw.fi|code]]
 * Version control:

Update cliapp files for 1.20140315
diff --git a/cliapp/NEWS.mdwn b/cliapp/NEWS.mdwn
index 86418bb..7219b4a 100644
--- a/cliapp/NEWS.mdwn
+++ b/cliapp/NEWS.mdwn
@@ -1,6 +1,28 @@
 NEWS for cliapp
 ===============
 
+Version 1.20140315
+------------------
+
+* Portability patch to disable VmRSS reporting on non-Linux platforms.
+  The code assumed that /proc/self/status exists, but that's only true
+  on Linux. Patch from Itamar Turner-Trauring.
+
+* `cliapp` now logs the current working directory, uid, effective uid,
+  gid, and effective gid at startup.
+
+* `cliapp` (`Settings.load_configs`) now reports an unknown
+  variable in a configuration file with a nice error message, rather
+  than a stack trace.
+
+* A new method, `cliapp.Application.get_subcommand_help_formatter`
+  allows overriding how the full help text for a subcommand is to be
+  formatted. This can be useful for allowing help texts be marked up
+  in, say, Markdown.
+
+* The `cliapp.Settings.require` method now accepts many setting names,
+  and check for all of them. Patch by Stephen Judd.
+
 Version 1.20130808
 ------------------
 
diff --git a/cliapp/README.mdwn b/cliapp/README.mdwn
index 1fd7a39..9b78e69 100644
--- a/cliapp/README.mdwn
+++ b/cliapp/README.mdwn
@@ -22,23 +22,29 @@ cliapp version numbers are of the form `API.DATE`, where `API` starts
 at 1, and gets incremented if the application API changes in an
 incompatible way. `DATE` is the date of the release.
 
+Hacking
+-------
+
+To run the test suite:
+
+   make clean check
+
 Legalese
 --------
 
-# Copyright (C) 2011-2013  Lars Wirzenius
-# Copyright (C) 2012-2013  Codethink Limited
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+* Copyright (C) 2011-2013  Lars Wirzenius
+* Copyright (C) 2012-2013  Codethink Limited
+
+This program is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
 
+You should have received a copy of the GNU General Public License along
+with this program; if not, write to the Free Software Foundation, Inc.,
+51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
diff --git a/cliapp/cliapp.5.txt b/cliapp/cliapp.5.txt
index 9375070..7b7df85 100644
--- a/cliapp/cliapp.5.txt
+++ b/cliapp/cliapp.5.txt
@@ -1,31 +1,31 @@
-CLIAPP(5)							     CLIAPP(5)
+CLIAPP(5)                                                            CLIAPP(5)
 
 
 
 NAME
-       cliapp  -  config  file	and option conventions for Python command line
+       cliapp  -  config  file  and option conventions for Python command line
        framework
 
 DESCRIPTION
-       cliapp is a Python  programming	framework  for	writing  command  line
+       cliapp is a Python  programming  framework  for  writing  command  line
        applications   for  Unix-like  operating  systems.   This  manual  page
        describes the conventions for  configuration  files  and  command  line
        parsing provided by cliapp.
 
        Configuration  file  variables  and command line options are handled by
        cliapp under a uniform abstraction: every setting is available both  in
-       configuration  files  and  command  line options.  There are a few set‐
+       configuration  files  and  command  line options.  There are a few set-
        tings, provided by the framework itself, which are  only  available  on
-       the command line.  For example, --help outputs a short help text, list‐
-       ing all the available options, and --dump-config outputs a list of cur‐
+       the command line.  For example, --help outputs a short help text, list-
+       ing all the available options, and --dump-config outputs a list of cur-
        rent configuration settings.
 
-       Command	line parsing follows GNU conventions: short options start with
+       Command  line parsing follows GNU conventions: short options start with
        a single dash, long options with two dashes, and options  may  be  used
        anywhere  on the command line.  The order of options versus non-options
        does not matter.  The exception is some of the options provided by  the
-       framework,  which  are executed immediately when found, and may be pre‐
-       vent the rest of the options from being parsed.	(--dump-config is  one
+       framework,  which  are executed immediately when found, and may be pre-
+       vent the rest of the options from being parsed.  (--dump-config is  one
        of  these,  so  use it at the end of the command line only.)  Use -- on
        the command line to signal the end of options: no arguments after  that
        are considered to be option.
@@ -33,11 +33,11 @@ DESCRIPTION
        Some  settings  may have aliases, which can be only a single character,
        and in that case they're parsed as single-character option names.
 
-       Some applications have subcommands, which means	that  the  first  non-
+       Some applications have subcommands, which means  that  the  first  non-
        option  argument  is  used to tell the application what to do.  This is
        similar to what many version control systems do, for example CVS,  svn,
        bzr, and git.  Options are global, and are not specific to subcommands.
-       Thus, --foo means the same thing,  regardless  of  what	subcommand  is
+       Thus, --foo means the same thing,  regardless  of  what  subcommand  is
        being used.
 
    Configuration files
@@ -45,44 +45,44 @@ DESCRIPTION
        [config] section.  Other sections are allowed, but  it  is  up  to  the
        application to give meaning to them.
 
-       Multiple  configuration	files  may  be read.  Settings from later ones
-       override settings from earlier ones.  Options  override	settings  from
+       Multiple  configuration  files  may  be read.  Settings from later ones
+       override settings from earlier ones.  Options  override  settings  from
        the configuration files.
 
    String list settings
        Some settings may be a list of values (each value being a string).  For
-       example, there might be a setting for patterns to search for, and  mul‐
+       example, there might be a setting for patterns to search for, and  mul-
        tiple patterns are allowed.  On the command line, that happens by using
        the option multiple times.  In the configuration file, all  values  are
-       given  on one line, separated by commas.  This is a non-standard exten‐
+       given  on one line, separated by commas.  This is a non-standard exten-
        sion to the INI file syntax.  There is no way to escape commas.
 
        Example:
 
-	      [config]
-	      pattern = foo, bar, foobar
+              [config]
+              pattern = foo, bar, foobar
 
    Boolean (true/false or on/off or yes/no) settings
        When a setting can be either on or off, it's called a Boolean  setting.
        Such  settings  are turned off by default, and turned on if used on the
        command line.  In a configuration file, they need to be set to a value:
-       if  the	value is one of yes, on, true, or the number 1, the setting is
+       if  the  value is one of yes, on, true, or the number 1, the setting is
        turned on.  Any other value means it is turned off.
 
-	      [config]
-	      verbose = true
-	      attack-kittens = no
+              [config]
+              verbose = true
+              attack-kittens = no
 
        This turns the verbose setting on, but does not launch attack kittens.
 
        For every boolean setting, two command line options are added.  If  the
-       setting	is  called foo, the option --foo will turn the setting on, and
+       setting  is  called foo, the option --foo will turn the setting on, and
        --no-foo will turn it off.  The negation is only usable on the  command
        line:  its  purpose  is to allow the command line to override a setting
        from the configuration file.
 
    Logging and log files
-       Programs using cliapp automatically support several options for config‐
+       Programs using cliapp automatically support several options for config-
        uring  the  Python  logging  module.  See the --help output for options
        starting with log for details.  Logging can happen to  a  file  or  the
        system log.  Log files can be rotated automatically based on size.
@@ -91,30 +91,30 @@ DESCRIPTION

(Diff truncated)
Close cliapp bug
diff --git a/cliapp/bugs/debian-packaging-should-include-examples.mdwn b/cliapp/bugs/debian-packaging-should-include-examples.mdwn
index e074fef..c908b90 100644
--- a/cliapp/bugs/debian-packaging-should-include-examples.mdwn
+++ b/cliapp/bugs/debian-packaging-should-include-examples.mdwn
@@ -1,3 +1,6 @@
 Fix cliapp Debian package to include examples.
 especially a manpage template
 
+---
+
+This is fixed now. [[done]] --liw

Add Obnam bug about verify stricter
diff --git a/obnam/bugs/verify-stricter.mdwn b/obnam/bugs/verify-stricter.mdwn
new file mode 100644
index 0000000..3d92820
--- /dev/null
+++ b/obnam/bugs/verify-stricter.mdwn
@@ -0,0 +1,27 @@
+On Tue, Mar 11, 2014 at 04:34:13PM +0100, Thomas Schwinge wrote:
+
+> Alternatively, wouldn't it make sense to change to, or at least have
+> available, a mode where verify works not based on the data in the backup,
+> but instead of the actual user data?  Wouldn't doing it in this way build
+> a yet greater confidence that obnam has backed up everything alright?
+> That is, instead of traversing the data in the backup and verifying
+> against the corresponding user data, it'd traverse the user data (as when
+> doing a backup) and verify against the data in the backup.
+
+I think you're right. I think we should have "obnam verify" traverse
+through both the backup generation and the live data, and report as
+follows:
+
+* if a file exists only in the backup, but not in the live data
+* if a file exists only in the live data, but not in the backup
+    - also indicate whether the file matches (current) exclusion
+       rules, since that matters: a file that is in live data but is
+       not excluded is different from an excluded one
+* if a file exists in both the backup and the live data, but is
+  different in any way
+
+I don't have time to work on this at the moment, but I'll add it to
+the list of bugs in http://liw.fi/obnam/bugs/ and would be happy to
+review and merge a patch for this.
+
+--liw

Close fixed bug
diff --git a/obnam/bugs/Unhelpful_error_for_missing_key.mdwn b/obnam/bugs/Unhelpful_error_for_missing_key.mdwn
index 01d0914..9845930 100644
--- a/obnam/bugs/Unhelpful_error_for_missing_key.mdwn
+++ b/obnam/bugs/Unhelpful_error_for_missing_key.mdwn
@@ -17,3 +17,8 @@ Here is an example of error message when using "obnam fsck" without the key:
     File "/usr/lib/python2.7/dist-packages/obnamlib/hooks.py", line 122, in run_filter_read
       tag, content = data.split("\0", 1)
     ValueError: need more than 1 value to unpack
+
+
+---
+
+Fixed in git now. [[done]] --liw

Add note about Daniel
diff --git a/ideas/bug-names.mdwn b/ideas/bug-names.mdwn
index 2b4837f..234c0d0 100644
--- a/ideas/bug-names.mdwn
+++ b/ideas/bug-names.mdwn
@@ -1,3 +1,5 @@
+(Overall design together with Daniel Silverstone.)
+
 The problem: Bug reports, tickets, kanban cards, and other such
 entities need a unique identifier. Almost always a simple counter is
 used for this: 1, 2, 3, etc. As a project ages, the counter grows to

Mark bgproc as orphaned
I don't use nor develop this, so bye bye.
diff --git a/bgproc.mdwn b/bgproc.mdwn
index c441204..067d2ec 100644
--- a/bgproc.mdwn
+++ b/bgproc.mdwn
@@ -1,5 +1,5 @@
 [[!meta title="bgproc: wrapper around Python multiprocess"]]
-[[!tag program]]
+[[!tag program orphaned-project]]
 
 The Python `multiprocessing` library allows some processing to happen in
 the background, using sub-processes. This library adds an abstraction

Add idea about using names, not numbers, for bug ids
diff --git a/ideas/bug-names.mdwn b/ideas/bug-names.mdwn
new file mode 100644
index 0000000..2b4837f
--- /dev/null
+++ b/ideas/bug-names.mdwn
@@ -0,0 +1,110 @@
+The problem: Bug reports, tickets, kanban cards, and other such
+entities need a unique identifier. Almost always a simple counter is
+used for this: 1, 2, 3, etc. As a project ages, the counter grows to
+the tens and hundreds of thousands, even millions. Numbers are large
+as these are difficult to remember, and error prone to type, speak,
+and hear.
+
+We propose a simple textual encoding mechanism to be used instead of
+simple numbers. The goal of the encoding is to make remembering and
+communicating numeric identifiers easier and more reliable. This
+encoding is meant for human communication, as a kind of automatically
+generated nickname for the real identifier.
+
+An example to demonstrate the basic idea:
+
+* The context is a bug tracking system, with bug numbers in the
+  hundreds of thousands. That's up to 20 bits of data.
+* The number is split into four 5-bit parts, and each part is
+  represented as a code word from a different list of words.
+* The word lists have no overlap and each list has a distinct theme,
+  such as animal, geographical location, occupation, and food.
+* Bug 127650 might then be expressed as RABBIT MOUNTAIN DOCTOR
+  PARSLEY.
+
+Some notes:
+
+* By choosing words carefully, the sequences of words become more
+  easily memorable. Additionally, similar words within lists or across
+  lists should be avoided.
+* The parts do not all need to be of the same size. Common colours,
+  for example, are often fairly easy to remember, but there are fairly
+  few of them with memorable names.
+* Since each list of words is distinct, order of words doesn't matter.
+* Words can be translated, without loss of meaning.
+
+Very large identifiers, such as for git commits, do not need to be
+encoded fully to benefit from this scheme. Git commits are already
+often referred to using "short ids", of 7 nybbles.
+
+Even when identifiers are encoded fully, the number of words will grow
+as the identifiers grow. In the early stages of a project, bug
+numbers, for example, will probably be in the hundreds. That's up to
+ten bits, or probably two words. Later, bug numbers may grow larger,
+requiring a third and fourth word.
+
+This can lead to some ambiguity. Is POSTMAN ELEPHANT an early bug, or
+maybe just a partial encoding of a later bug? We don't expect this to
+become a real problem: when ambiguity is not acceptable, the full
+numeric identifier should be used, but when humans communicate about a
+bug, the context is usually sufficient to resolve any ambiguity.
+
+API
+---
+
+We propose the following API for a C library to implement this
+encoding. The intent is that the library will be easy to bind to other
+languages later, as well as being comfortable to use from C.
+
+The library will be called codewords and all identifier are prefixed
+with `cw_` or `CW_`.
+
+    enum {
+        CW_NO_ERROR = 0,
+        CW_ALLOCATION_ERROR,
+        CW_DUPLICATE_WORD_ERROR,
+        CW_DUPLICAT_TRANSLATION_ERROR,
+        CW_UNKNOWN_WORD_ERROR,
+    };
+
+    /* Return read-only array of wordlist name. Array is
+       NULL-terminated. */
+    char **cw_list_wordlists(void);
+    
+    /* Remove a wordlist, if it exists. */
+    void cw_remove_wordlist(const char *name);
+
+    /* Add a new wordlist. Return a CW status code. It is OK for the
+       word list to already exist: in that case, nothing happens. */
+    int cw_add_wordlist(const char *name);
+
+    /* Add a word to a wordlist. Return a CW status code. It is OK for
+       the word to already exist in that word list, but an error if it
+       exists in any other list. */
+    int cw_add_to_wordlist(const char *name, const char *word);
+
+    /* Return number of words in a word list. Return 0 if the word
+       list doesn't exist. */
+    size_t cw_get_word_count(const char *name);
+
+    /* Return the word at an index in a word list. Return NULL if the
+       a word list of the given name doesn't exist, or the index is
+       beyond the length of the list. */
+    char *cw_get_word(const char *name, size_t index);
+
+    /* Add a translation for a word. Return a CW status code.
+       The word must exist in some word list already, but the list
+       does not need to be specified. The translation must not exist. */
+    int cw_add_translation(const char *word, const char *translation);
+
+    /* Encode an unsigned long. Use at most max_words-1 words, and
+       store the words in the words array, which the user has already
+       allocated, and a NULL after the last word. The user MUST NOT
+       free the words. Return a CW status value. */
+    int cw_encode_ull(
+        unsigned long long id, int num_bits, char **words, int max_words);
+
+    /* Decode an unsigned long long value from a NULL-terminated list
+       of words. Return a CW status code, and put the result (if there
+       was no error) into *result. */
+    int cw_decode_long(unsigned long long *result, char **words)

Mark Obnam bug as closed
diff --git a/obnam/bugs/verify-progress-should-be-bytes.mdwn b/obnam/bugs/verify-progress-should-be-bytes.mdwn
index 4e454bb..44744a9 100644
--- a/obnam/bugs/verify-progress-should-be-bytes.mdwn
+++ b/obnam/bugs/verify-progress-should-be-bytes.mdwn
@@ -3,3 +3,7 @@
 When "obnam verify" shows progress, it's based on number of files.
 It should be based on number of bytes instead, for better progress
 reporting. --liw
+
+---
+
+[[done]] in git master now. --liw

Mark Obnam bug as closed
diff --git a/obnam/bugs/clients-list-should-include-ids.mdwn b/obnam/bugs/clients-list-should-include-ids.mdwn
index 6a0a9bd..00232f8 100644
--- a/obnam/bugs/clients-list-should-include-ids.mdwn
+++ b/obnam/bugs/clients-list-should-include-ids.mdwn
@@ -1,2 +1,13 @@
 Obnam needs a way to show the id of each client, so one can, say,
 safely remove the toplevel directory for the client.
+
+---
+
+Obnam now has an internal interface API for accessing repositories,
+and it doesn't expose the client id anymore. So this needs some
+thought: should we expose the id (even though it's not otherwise
+needed)? And what about future repository interface API
+implementations that don't need a client id at all anymore? I suspect
+it isn't going to useful enough to do this. If I get other uses
+cases, I'll re-consider. [[done]], for now. --liw
+

Mark Obnam bug as fixed
diff --git a/obnam/bugs/use-cliapp-setup_logging-overrides.mdwn b/obnam/bugs/use-cliapp-setup_logging-overrides.mdwn
index 37fb0f2..c477577 100644
--- a/obnam/bugs/use-cliapp-setup_logging-overrides.mdwn
+++ b/obnam/bugs/use-cliapp-setup_logging-overrides.mdwn
@@ -1,2 +1,6 @@
 cliapp now allows overriding parts of the logging setup, and obnam should
 use that as soon as cliapp has been released.
+
+---
+
+Fixed in git master. [[done]] --liw

Close fixed bug in Obnam
diff --git a/obnam/bugs/obnammodule-malloc.mdwn b/obnam/bugs/obnammodule-malloc.mdwn
index 1bfd7d7..731ccb2 100644
--- a/obnam/bugs/obnammodule-malloc.mdwn
+++ b/obnam/bugs/obnammodule-malloc.mdwn
@@ -1,2 +1,6 @@
 Review `_obnammodule.c`'s use of malloc: every return value should be
 checked and if there's a failure, the process should abort.
+
+---
+
+Fixed in git master. [[done]] --liw

Mark bug as closed
diff --git a/obnam/bugs/report-actual-transferred-bytes.mdwn b/obnam/bugs/report-actual-transferred-bytes.mdwn
index bccec2b..9387f15 100644
--- a/obnam/bugs/report-actual-transferred-bytes.mdwn
+++ b/obnam/bugs/report-actual-transferred-bytes.mdwn
@@ -3,3 +3,8 @@
 obnam backup should report actual transferred bytes in addition to live
 data bytes, for reporting of overhead, and should calculate speed with
 overhead too
+
+---
+
+Fixed in git master now. --liw
+[[done]]

Mark bug done
diff --git a/obnam/bugs/ugly-enoent-error-message.mdwn b/obnam/bugs/ugly-enoent-error-message.mdwn
index db530f2..4097f6e 100644
--- a/obnam/bugs/ugly-enoent-error-message.mdwn
+++ b/obnam/bugs/ugly-enoent-error-message.mdwn
@@ -13,6 +13,12 @@ ugly error message from obnam:
 
 --liw
 
---
+---
 
 I believe the tuple printing is now fixed. --liw
+
+---
+
+The problem with error messages getting printed out in the middle of
+progress output has now been fixed in git master. --liw
+[[done]]

Add Obnam bug
diff --git a/obnam/bugs/fuse-without-generations.mdwn b/obnam/bugs/fuse-without-generations.mdwn
new file mode 100644
index 0000000..0f95a11
--- /dev/null
+++ b/obnam/bugs/fuse-without-generations.mdwn
@@ -0,0 +1,4 @@
+It seems `obnam mount` (the FUSE plugin) can't handle a client without
+non-checkpoint generations. This is unfortunate, even if it is fairly
+unlikely to happen. Should be easy enough to fix.
+--liw

Add link to Earth Cafe
diff --git a/links.mdwn b/links.mdwn
index aedd050..bbf1446 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -23,6 +23,7 @@ incarnation of that web page.
 [Lambda lounge](http://www.lambdalounge.org.uk/)
 [listentotaxman](http://listentotaxman.com/)
 [Bletchley Park](http://www.bletchleypark.org/)
+[Earth Café](http://www.earthcafe.co/)
 
 **Books:**
 [OpenLibrary](http://openlibrary.org)

Close some Obnam bugs
diff --git a/obnam/bugs/document-black-box-testing.mdwn b/obnam/bugs/document-black-box-testing.mdwn
index 32673dc..5bcbc38 100644
--- a/obnam/bugs/document-black-box-testing.mdwn
+++ b/obnam/bugs/document-black-box-testing.mdwn
@@ -4,3 +4,8 @@ Review obnam black box tests and document how you're supposed to write them.
 
 - hacking section in README
 
+
+---
+
+On second though, I'll just let people read yarn documentation,
+these days. --liw [[done]]
diff --git a/obnam/bugs/time_based_checkpoint_generations.mdwn b/obnam/bugs/time_based_checkpoint_generations.mdwn
index 117da87..3d00f72 100644
--- a/obnam/bugs/time_based_checkpoint_generations.mdwn
+++ b/obnam/bugs/time_based_checkpoint_generations.mdwn
@@ -7,3 +7,12 @@ obnam should accept SIZE values as well as TIME values for the --checkpoint opti
 This would be very handy for connections which vary a lot in speed and quality.
 
 -- weinzwang
+
+
+While I agree this would be useful, I am afraid I haven't made any
+move towards implementing it, and as such, keeping the bug open isn't
+helping me manage the bug list. If anyone really wants this, sending
+a patch (even a proof of concept one) would be effective, though.
+--liw
+
+[[done]]
diff --git a/obnam/bugs/ugly-sshexception-error-message.mdwn b/obnam/bugs/ugly-sshexception-error-message.mdwn
index 44901ba..893146b 100644
--- a/obnam/bugs/ugly-sshexception-error-message.mdwn
+++ b/obnam/bugs/ugly-sshexception-error-message.mdwn
@@ -8,3 +8,8 @@ The following is ugly:
     Exception OSError: OSError(32, 'Broken pipe') in <bound method SFTPFile.__del__ of <paramiko.SFTPFile object at 0x18861cd0>> ignored
 
 There should not be a traceback, but a proper error message.
+
+
+---
+
+I believe this is fixed now. --liw [[done]]

Add obnam chattr bug
diff --git a/obnam/bugs/no-chattr-support.mdwn b/obnam/bugs/no-chattr-support.mdwn
new file mode 100644
index 0000000..80524e0
--- /dev/null
+++ b/obnam/bugs/no-chattr-support.mdwn
@@ -0,0 +1,7 @@
+Obnam does not support the ext2/3/4 chattr attributes. It should back them up and
+set them on restore, when possible.
+
+In addition, it should support the d attribute to exclude
+files from being backed up.
+
+--liw

Add links to Obnam manual, yarns
diff --git a/obnam.mdwn b/obnam.mdwn
index f35a0aa..52b1913 100644
--- a/obnam.mdwn
+++ b/obnam.mdwn
@@ -21,9 +21,8 @@ Some **features** that may interest you:
   has some limitations: see [[faq/dedup]]).
 * **Encrypted** backups, using GnuPG.
 
-See the [manual] for examples of how to use Obnam.
-
-[manual]: http://code.liw.fi/obnam/manual/
+See the [[tutorial]], and below for links to the manual, which has
+examples of how to use Obnam.
 
 Obnam can do **push** or **pull** backups, depending on what you
 need. You can run Obnam on the client, and push backups to the server,
@@ -41,7 +40,13 @@ is not recommended.
 Documentation
 -------------
 
-* [manual]
+* The full manual (currently a work in progress): available as
+  [a web page](http://code.liw.fi/obnam/manual/manual.html) and
+  [PDF](http://code.liw.fi/obnam/manual/manual.pdf).
+    - The Obnam test suite is also meant to be useful for the more
+      technical users of Obnam to read:
+      [web page](http://code.liw.fi/obnam/yarns.html),
+      [PDF](http://code.liw.fi/obnam/yarns.pdf).
 * [[README]] (updated at release time)
 * [[NEWS]] (updated at release time)
 * [[obnam manual page|obnam.1.txt]]

Tweak CV
diff --git a/cv.mdwn b/cv.mdwn
index b64425c..cef0f11 100644
--- a/cv.mdwn
+++ b/cv.mdwn
@@ -17,8 +17,9 @@ I am an expert in the Linux environment. Linux and Unix environments
 are the only ones I am looking to work in.
 
 I want to develop software, at all levels from architectural design
-down to writing lowest level code. I am not a tester, and I prefer
-to do very limited amounts of system or network administration work.
+down to writing even the lowest level code to implement the
+architecture. I am not a tester, and I prefer to do very limited
+amounts of system or network administration work.
 
 ## Stuff I know best
 
@@ -37,9 +38,10 @@ Perl, Markdown, HTML/CSS.
 
 ## Work and training
 
-**Codethink 2011-current.** I am the technical lead and architect
-for [Baserock](http://wiki.baserock.org/), a new way of building
-and developing embedded and appliance Linux systems.
+**Codethink 2011-current.** I have served in a variety of roles,
+including technical lead, architect, and developer, for
+[Baserock](http://wiki.baserock.org/), a new way of building and
+developing embedded and appliance Linux systems.
 
 **Consultant 2005-2011.** I've worked on variety of projects for
 several clients. In 2005-2006 I was under contract to improve the

Fix wrong word
diff --git a/obnam.mdwn b/obnam.mdwn
index 778fa49..f35a0aa 100644
--- a/obnam.mdwn
+++ b/obnam.mdwn
@@ -54,5 +54,5 @@ Documentation
 Links
 -----
 
-* [Cache Directory Caching Standard](http://www.bford.info/cachedir/)
+* [Cache Directory Tagging Standard](http://www.bford.info/cachedir/)
 * [Backup bouncer](http://www.n8gray.org/blog/2007/04/27/introducing-backup-bouncer/)

Update donation page with Amazon wishlist link
diff --git a/obnam/donate.mdwn b/obnam/donate.mdwn
index 9f94d24..331c838 100644
--- a/obnam/donate.mdwn
+++ b/obnam/donate.mdwn
@@ -7,10 +7,12 @@ Hash: SHA256
 Hi! I wrote Obnam, a backup program (http://liw.fi/obnam/). If you
 like the program and would like donate a little to help me afford to
 buy tools and services for developing it further, you can send me
-money:
+money or gifts:
 
-* Bitcoin: bitcoin:1FUKDBy79cC6iTaiyg5i1JVBCemiVdb5QC
+* Amazon wishlist:
+  http://www.amazon.co.uk/registry/wishlist/IAQ38FB6Y27D/ref=cm_wl_act_vv
 * Paypal: liw@liw.fi
+* Bitcoin: bitcoin:1FUKDBy79cC6iTaiyg5i1JVBCemiVdb5QC
 
 Obnam does not run on donations: it currently mainly runs on my free
 time. Donations are not required in any way: you're more than welcome
@@ -18,20 +20,26 @@ to use it without donating, and in any case I prefer a well-formulated
 bug report (see http://liw.fi/obnam/bug-reporting/) or a patch to fix
 a bug or add a feature. No bug is too small to be reported.
 
-Lars Wirzenius, 2013-12-05
+I can also arrange to do Obnam development for specific features, or
+support, for a fee, if you or your company needs something that isn't
+happening otherwise.
+
+Lars Wirzenius, 2014-02-09
 -----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1.4.12 (GNU/Linux)
 
-iQEcBAEBCAAGBQJSoG4WAAoJEIahkFub41rmaKgH/3lvENrNQ9uzOvJuBGjWwXc3
-o8EWoBrq/8AkQiVflIvTCYZPp3qDgIrdln7O/N1/+gSs8oMIJg1JG6axK9VD8mhK
-+P0IWI81H9EyYUldejcmYk+J+2XwiQ9HQpvD7MLjlF7AT/rw8/wnWxtweaypv2EN
-qciyLynLSpwDlRiwbTAgO7F27y/QecpXiAcItCWO7/aADpKlzu4SJjsgpE2awMT/
-OX9A/QlCYNnZo26L9ha0hL2vXjne4I5nQjyQUBpozZIh8UibdO0W1KJrhb/zkut5
-IXjm1MRvNRuHDYLTOkqiuRQQ1wXYgzmWPWfE9xMVMr72M4EfYUbG2t933ZAdKn4=
-=waJp
+iQEcBAEBCAAGBQJS943KAAoJEIahkFub41rmf1kH/jefKNjYhfKE7xbzZgR1IzXJ
+tJIC0a6YTqe+yXNPHOdsCj348v2TTcDl0l7106XprKDos02YZSDGqPbkqlxwF6DH
+cPKw7ZAvosagmbRsW/8dctmDeDi5ejvAzUuSbDFiYDYK5f1OyhozVX8VIMvJXCEj
+5OSGXzzYtpBuCNvB594u6E5FD3aE/MCT/5HTdnNhAfPK5Gn1bxEsDizB7DOIWD9D
+ItAchaeSqTJJ7ODkFB7goRNd/yJiKYcTW3aK3NmuATavq92DWIwvhGTmK5AwbZS/
+mBvmzSLDpqw1cgAJpFCYK9yMBmvZ53okiBFxwuFSXY9FYI8mc8B9HsWK9szycd8=
+=tbcm
 -----END PGP SIGNATURE-----
 </pre>
 
+(See [[donate.txt]] for a plain text version.)
+
 ---
 
 [[!img liw-bitcoin-qr-obnam.png]]
diff --git a/obnam/donate.txt b/obnam/donate.txt
new file mode 100644
index 0000000..69fd91b
--- /dev/null
+++ b/obnam/donate.txt
@@ -0,0 +1,35 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA256
+
+Hi! I wrote Obnam, a backup program (http://liw.fi/obnam/). If you
+like the program and would like donate a little to help me afford to
+buy tools and services for developing it further, you can send me
+money or gifts:
+
+* Amazon wishlist:
+  http://www.amazon.co.uk/registry/wishlist/IAQ38FB6Y27D/ref=cm_wl_act_vv
+* Paypal: liw@liw.fi
+* Bitcoin: bitcoin:1FUKDBy79cC6iTaiyg5i1JVBCemiVdb5QC
+
+Obnam does not run on donations: it currently mainly runs on my free
+time. Donations are not required in any way: you're more than welcome
+to use it without donating, and in any case I prefer a well-formulated
+bug report (see http://liw.fi/obnam/bug-reporting/) or a patch to fix
+a bug or add a feature. No bug is too small to be reported.
+
+I can also arrange to do Obnam development for specific features, or
+support, for a fee, if you or your company needs something that isn't
+happening otherwise.
+
+Lars Wirzenius, 2014-02-09
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.12 (GNU/Linux)
+
+iQEcBAEBCAAGBQJS943KAAoJEIahkFub41rmf1kH/jefKNjYhfKE7xbzZgR1IzXJ
+tJIC0a6YTqe+yXNPHOdsCj348v2TTcDl0l7106XprKDos02YZSDGqPbkqlxwF6DH
+cPKw7ZAvosagmbRsW/8dctmDeDi5ejvAzUuSbDFiYDYK5f1OyhozVX8VIMvJXCEj
+5OSGXzzYtpBuCNvB594u6E5FD3aE/MCT/5HTdnNhAfPK5Gn1bxEsDizB7DOIWD9D
+ItAchaeSqTJJ7ODkFB7goRNd/yJiKYcTW3aK3NmuATavq92DWIwvhGTmK5AwbZS/
+mBvmzSLDpqw1cgAJpFCYK9yMBmvZ53okiBFxwuFSXY9FYI8mc8B9HsWK9szycd8=
+=tbcm
+-----END PGP SIGNATURE-----

Add links to Obnam manual
diff --git a/obnam.mdwn b/obnam.mdwn
index 9f99bc5..778fa49 100644
--- a/obnam.mdwn
+++ b/obnam.mdwn
@@ -21,7 +21,9 @@ Some **features** that may interest you:
   has some limitations: see [[faq/dedup]]).
 * **Encrypted** backups, using GnuPG.
 
-See the [[tutorial]] for examples of how to use Obnam.
+See the [manual] for examples of how to use Obnam.
+
+[manual]: http://code.liw.fi/obnam/manual/
 
 Obnam can do **push** or **pull** backups, depending on what you
 need. You can run Obnam on the client, and push backups to the server,
@@ -29,7 +31,6 @@ or on the server, and pull from the client over SFTP. However, access
 to live data over SFTP is currently somewhat limited and fragile, so it
 is not recommended.
 
-* [[tutorial]]
 * [[1.0 release announcement|1.0]]
 * [[Status and support|status]]
 * [[Download]]
@@ -40,6 +41,7 @@ is not recommended.
 Documentation
 -------------
 
+* [manual]
 * [[README]] (updated at release time)
 * [[NEWS]] (updated at release time)
 * [[obnam manual page|obnam.1.txt]]
diff --git a/obnam/tutorial.mdwn b/obnam/tutorial.mdwn
index 259c2e4..dd99e36 100644
--- a/obnam/tutorial.mdwn
+++ b/obnam/tutorial.mdwn
@@ -1,5 +1,9 @@
 [[!meta title="Obnam tutorial"]]
 
+This tutorial will be migrating to the full Obnam manual,
+at <http://code.liw.fi/obnam/manual/>. This version is no longer
+updated, see the link for the current version.
+
 [[!toc ]]
 
 Installation

Add link to HP N40L wiki page
diff --git a/links.mdwn b/links.mdwn
index 4e40d67..aedd050 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -64,6 +64,7 @@ incarnation of that web page.
 
 **Hardware:**
 [Novena](http://www.kosagi.com/w/index.php?title=Novena_Main_Page)
+[N40L](http://n40l.wikia.com/wiki/HP_MicroServer_N40L_Wiki)
 
 **People:**
 [Arno Wirzenius](http://www.iki.fi/arno.w/)

Fix link
diff --git a/links.mdwn b/links.mdwn
index 7997a84..4e40d67 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -95,7 +95,7 @@ incarnation of that web page.
 [ringmaker](http://www.theringmaker.co.uk/)
 [Slaters](http://www.slaters.co.uk/)
 [Specsavers](http://www.specsavers.co.uk/)
-[Algerian Coffee](http://www.algcoffee.co.uk/scripts/default.asp)
+[Algerian Coffee](http://www.algcoffee.co.uk)
 
 **Organizations:**
 [EFFI](http://www.effi.org/)

Add Novena to links page
diff --git a/links.mdwn b/links.mdwn
index 7a2d083..7997a84 100644
--- a/links.mdwn
+++ b/links.mdwn
@@ -62,6 +62,9 @@ incarnation of that web page.
 [gitano](https://trello.com/board/gitano/4f9fee3d26a8c8e8340941a4)
 [luxio](http://www.rjek.com/bin/luxio/)
 
+**Hardware:**
+[Novena](http://www.kosagi.com/w/index.php?title=Novena_Main_Page)
+
 **People:**
 [Arno Wirzenius](http://www.iki.fi/arno.w/)
 [Jukka Rajala](http://www.jukkar.com/)

Close Obnam bug
diff --git a/obnam/bugs/performance-with-many-hardlinks.mdwn b/obnam/bugs/performance-with-many-hardlinks.mdwn
index c88957e..d30639a 100644
--- a/obnam/bugs/performance-with-many-hardlinks.mdwn
+++ b/obnam/bugs/performance-with-many-hardlinks.mdwn
@@ -10,3 +10,5 @@ how Obnam handles them. Perform a benchmark comparing three cases:
 
 Ideally, Obnam should perform about the same for all. --liw
 
+
+[[done]] really ancient wishlist bug --liw

Close Obnam bug
diff --git a/obnam/bugs/fsck-should-reconstruct-chunk-btrees.mdwn b/obnam/bugs/fsck-should-reconstruct-chunk-btrees.mdwn
index 07e2877..77e68d2 100644
--- a/obnam/bugs/fsck-should-reconstruct-chunk-btrees.mdwn
+++ b/obnam/bugs/fsck-should-reconstruct-chunk-btrees.mdwn
@@ -5,3 +5,5 @@ chunksums and chunklist B-trees in a repository. It should do so,
 at least when requested.
 
 --liw
+
+[[done]] ancient wishlist bug --liw

Close Obnam bug
diff --git a/obnam/bugs/more-rsync-like.mdwn b/obnam/bugs/more-rsync-like.mdwn
index 1b4175c..fc2e9f1 100644
--- a/obnam/bugs/more-rsync-like.mdwn
+++ b/obnam/bugs/more-rsync-like.mdwn
@@ -5,3 +5,5 @@ more rsync-like behavior, and more chance of finding duplicate data.
 This might be worthwhile, for some users, some of the time. It should
 be configurable, though, since it's also potentially going to be a 
 big performance problem. --liw
+
+[[done]] ancient wishlist bug --liw

Close Obnam bug
diff --git a/obnam/bugs/chunk-size-based-on-data-type-and-size.mdwn b/obnam/bugs/chunk-size-based-on-data-type-and-size.mdwn
index 733444d..4fcfc33 100644
--- a/obnam/bugs/chunk-size-based-on-data-type-and-size.mdwn
+++ b/obnam/bugs/chunk-size-based-on-data-type-and-size.mdwn
@@ -12,3 +12,5 @@ This needs to be measurements of real data to see if there are interesting
 parameters.
 
 --liw
+
+[[done]] interesting ideas, but old wishlist bug. --liw

Close Obnam bug
diff --git a/obnam/bugs/estimate-to-be-freed-space.mdwn b/obnam/bugs/estimate-to-be-freed-space.mdwn
index bd5f21e..b17ef44 100644
--- a/obnam/bugs/estimate-to-be-freed-space.mdwn
+++ b/obnam/bugs/estimate-to-be-freed-space.mdwn
@@ -12,3 +12,5 @@ It would be nice for Obnam to have a tool to answer the question
 
 --liw
 
+
+[[done]] ancient wishlist bug, closing. --liw

Close Obnam bug
diff --git a/obnam/bugs/compression-methods.mdwn b/obnam/bugs/compression-methods.mdwn
index 2df1312..967e391 100644
--- a/obnam/bugs/compression-methods.mdwn
+++ b/obnam/bugs/compression-methods.mdwn
@@ -5,3 +5,6 @@ Supporting multiple compression methods would be nice.
 Also one idea is to allow using one compression method (or no compression) while actually doing the backup, and then have a separate tool, to be run on otherwise idle time, recompress the data using some other, slower algorithm to conserve disk space without making the backup process slower.
 
 -- SLi
+
+[[done]] while this would be useful, it hasn't happened, and making
+the bug list longer is hampering other things. --liw

Close Obnam bug
diff --git a/obnam/bugs/Other_compression_methods__63__.mdwn b/obnam/bugs/Other_compression_methods__63__.mdwn
index 2a73170..f4f1732 100644
--- a/obnam/bugs/Other_compression_methods__63__.mdwn
+++ b/obnam/bugs/Other_compression_methods__63__.mdwn
@@ -11,3 +11,6 @@ external program, so the issue doesn't rise. However, we need the backgrounding
 anyway, since encryption uses an external tool, and so there's a big performance impact
 from using encryption. After backgrounding works, adding arbitrary compression filters will
 be easy. --liw
+
+[[done]] this is an ancient wishlist bug, and keeping it open isn't helping it happen,
+but it is making it harder to use the bug list. --liw

Close Obnam bug
diff --git a/obnam/bugs/Local_cache_of_remote_repo_metadata.mdwn b/obnam/bugs/Local_cache_of_remote_repo_metadata.mdwn
index 54505f1..e7d6e9e 100644
--- a/obnam/bugs/Local_cache_of_remote_repo_metadata.mdwn
+++ b/obnam/bugs/Local_cache_of_remote_repo_metadata.mdwn
@@ -5,3 +5,8 @@ Could Obnam keep a local cache of remote repository metadata, like Duplicity doe
 ---
 
 That is indeed a good idea. Unfortunately, the correctness of caches is often tricky, so I've been putting off implementing this until more important things work first. Also, not caching metadata forces me to do other things to make Obnam fast. But I'd like to do the caching too, some day. --liw
+
+---
+
+[[done]] duplicate, and also an old wishlist bug. Keeping this open
+isn't making this happen. --liw

Close Obnam bug
diff --git a/obnam/bugs/deduplication-stats.mdwn b/obnam/bugs/deduplication-stats.mdwn
index 17f7a8c..71a689e 100644
--- a/obnam/bugs/deduplication-stats.mdwn
+++ b/obnam/bugs/deduplication-stats.mdwn
@@ -17,3 +17,6 @@ Also, store per-generation data in the generation for faster retrieval.
 * Number of added/changed/removed files in this generation.
 
 --liw
+
+[[done]] if keeping the wishlist bug open would help make this happen,
+it would have happened already. --liw

Close Obnam bug
diff --git a/obnam/bugs/bgproc.mdwn b/obnam/bugs/bgproc.mdwn
index 464d6d7..be834fd 100644
--- a/obnam/bugs/bgproc.mdwn
+++ b/obnam/bugs/bgproc.mdwn
@@ -98,3 +98,6 @@ This design isn't optimal, since writing things to the repository
 isn't being done in parallel with other things, but I'll tackle that
 problem later.
 
+
+[[done]] this clearly isn't happening, so closing the old wishlist
+bug --liw

Close Obnam bug
diff --git a/obnam/bugs/arch-diagram.mdwn b/obnam/bugs/arch-diagram.mdwn
index 4d1da59..06aa8c3 100644
--- a/obnam/bugs/arch-diagram.mdwn
+++ b/obnam/bugs/arch-diagram.mdwn
@@ -2,3 +2,5 @@
 
 It would be good to have an architecture diagram of the internals of
 obnam, to make life easier for new code contributors. --liw
+
+[[done]] old wishlist bug, closing. --liw

Close Obnam bug
diff --git a/obnam/bugs/local-temp-cache.mdwn b/obnam/bugs/local-temp-cache.mdwn
index 6585782..d74349e 100644
--- a/obnam/bugs/local-temp-cache.mdwn
+++ b/obnam/bugs/local-temp-cache.mdwn
@@ -1,3 +1,5 @@
 [[!tag obnam-wishlist]]
 
 See <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=655094> for details.
+
+[[done]] no point in keeping this open in multiple places. --liw

Close Obnam bug
diff --git a/obnam/bugs/Warn___40__and_optionally_skip__41___backing_up_large_files.mdwn b/obnam/bugs/Warn___40__and_optionally_skip__41___backing_up_large_files.mdwn
index ff49637..6e9d7a6 100644
--- a/obnam/bugs/Warn___40__and_optionally_skip__41___backing_up_large_files.mdwn
+++ b/obnam/bugs/Warn___40__and_optionally_skip__41___backing_up_large_files.mdwn
@@ -12,3 +12,11 @@ Great idea.  --AP
 -----------
 I second that great idea :)  leto
 
+
+---
+
+[[done]]
+
+While I agree it is a nice idea, keeping the wishlist bug open clearly
+isn't making this happen, and long lists of bugs are tedious to work
+with. --liw

Close Obnam bug
diff --git a/obnam/bugs/wishlist:_how_does_memory_and_cpu_usage_of_obnam_depend_on_the_number_of_files_and_their_sizes__63__.mdwn b/obnam/bugs/wishlist:_how_does_memory_and_cpu_usage_of_obnam_depend_on_the_number_of_files_and_their_sizes__63__.mdwn
index 966cd58..13215e8 100644
--- a/obnam/bugs/wishlist:_how_does_memory_and_cpu_usage_of_obnam_depend_on_the_number_of_files_and_their_sizes__63__.mdwn
+++ b/obnam/bugs/wishlist:_how_does_memory_and_cpu_usage_of_obnam_depend_on_the_number_of_files_and_their_sizes__63__.mdwn
@@ -12,3 +12,6 @@ I imagine that in the simplest case you could use something like
     done
 
 to get cpu and memory usage of backup operations. Repeat same for obnam fsck if you are afraid that its memory usage could depend on total_size or file_size.
+
+[[done]] A very old wishlist bug. Closing this, since keeping it open
+clearly isn't making it happen. --liw

Close Obnam bug
diff --git a/obnam/bugs/forget-progress-reporting.mdwn b/obnam/bugs/forget-progress-reporting.mdwn
index 34e27d1..b063f88 100644
--- a/obnam/bugs/forget-progress-reporting.mdwn
+++ b/obnam/bugs/forget-progress-reporting.mdwn
@@ -2,3 +2,6 @@
 
 It would be nice if "obnam forget" could have more detailed progress
 reporting than at the granularity of one generation. --liw
+
+[[done]] this is semi-duplicate, and in any case a wishlist bug that's
+been open for a very long time. --liw

Close Obnam bug
diff --git a/obnam/bugs/warn-about-common-client-names.mdwn b/obnam/bugs/warn-about-common-client-names.mdwn
index f652c25..0dd3727 100644
--- a/obnam/bugs/warn-about-common-client-names.mdwn
+++ b/obnam/bugs/warn-about-common-client-names.mdwn
@@ -2,3 +2,5 @@
 
 It would be cool if Obnam could warn about common client names,
 such as `localhost` or `localhost.localdomain`.
+
+[[done]] closing wishlist bug since it isn't making the thing happen. --liw

Close Obnam bug
diff --git a/obnam/bugs/rename-client.mdwn b/obnam/bugs/rename-client.mdwn
index fb4f29c..7a39d02 100644
--- a/obnam/bugs/rename-client.mdwn
+++ b/obnam/bugs/rename-client.mdwn
@@ -1,3 +1,5 @@
 [[!tag obnam-wishlist]]
 
 Obnam needs to be able to rename a client.
+
+[[done]] this is a duplicate bug. --liw

Close Obnam bug
diff --git a/obnam/bugs/backup-pretend-should-list-filenames-to-stdout.mdwn b/obnam/bugs/backup-pretend-should-list-filenames-to-stdout.mdwn
index 5d40a7b..524b329 100644
--- a/obnam/bugs/backup-pretend-should-list-filenames-to-stdout.mdwn
+++ b/obnam/bugs/backup-pretend-should-list-filenames-to-stdout.mdwn
@@ -3,3 +3,5 @@
 make "obnam backup --pretend" print a list of would-be-backed-up files
 to stdout instead of tty
 
+
+[[done]] I have decided against this. --liw

Close Obnam bug
diff --git a/obnam/bugs/vfs-split-for-live-data-repo-access.mdwn b/obnam/bugs/vfs-split-for-live-data-repo-access.mdwn
index 28a7655..9165ea9 100644
--- a/obnam/bugs/vfs-split-for-live-data-repo-access.mdwn
+++ b/obnam/bugs/vfs-split-for-live-data-repo-access.mdwn
@@ -3,3 +3,6 @@
 Should obnam split VFS for repo access and live data access? repo needs
 so much less, after all. This would perhaps also make it easier to add support
 for things such as S3. -liw
+
+[[done]] I have decided against this. It's unnecessary complication in
+the implementation, I think. --liw

Close Obnam bug
diff --git a/obnam/bugs/missing-v6-restore-test.mdwn b/obnam/bugs/missing-v6-restore-test.mdwn
index db65cf6..fefc0cb 100644
--- a/obnam/bugs/missing-v6-restore-test.mdwn
+++ b/obnam/bugs/missing-v6-restore-test.mdwn
@@ -1 +1,3 @@
 Add an Obnam cmdtest to verify v6 repos can be restored from.
+
+[[done]] in git master. --liw

Close Obnam bug
diff --git a/obnam/bugs/exclude-based-on-mime-type.mdwn b/obnam/bugs/exclude-based-on-mime-type.mdwn
index 293327f..1de5e1d 100644
--- a/obnam/bugs/exclude-based-on-mime-type.mdwn
+++ b/obnam/bugs/exclude-based-on-mime-type.mdwn
@@ -1,3 +1,6 @@
 [[!tag obnam-wishlist]]
 
 Exclude based on mime type of file.
+
+[[done]] -- not written, but keeping a wishlist bug open clearly
+isn't making it happen. --liw

Close Obnam bug
diff --git a/obnam/bugs/exclude-based-on-size.mdwn b/obnam/bugs/exclude-based-on-size.mdwn
index 003bdb5..b942350 100644
--- a/obnam/bugs/exclude-based-on-size.mdwn
+++ b/obnam/bugs/exclude-based-on-size.mdwn
@@ -2,3 +2,6 @@
 
 Write Obnam plugin to exclude files based on size.
 
+
+[[done]] -- not written, but keeping wishlist bug open isn't making
+it happening. I'll write this if I really need it. --liw

Close Obnam bug
diff --git a/obnam/bugs/helper-script-for-bug-report-data-gathering.mdwn b/obnam/bugs/helper-script-for-bug-report-data-gathering.mdwn
index bf8cce4..6f3dfa0 100644
--- a/obnam/bugs/helper-script-for-bug-report-data-gathering.mdwn
+++ b/obnam/bugs/helper-script-for-bug-report-data-gathering.mdwn
@@ -10,3 +10,6 @@ script to gather information for reporting a bug about obnam?
 - is _obnam available?
 - mount point, file system types (/proc/mounts on linux)
 - linux kernel version, or other uname -a output
+
+[[done]] -- no script exists, but keeping the wishlist bug open isn't
+helping it. I'll write one when the pain becomes too much. --liw

Close Obnam bug
diff --git a/obnam/bugs/rolling-checksum-patches-need-review.mdwn b/obnam/bugs/rolling-checksum-patches-need-review.mdwn
index d64799c..8422030 100644
--- a/obnam/bugs/rolling-checksum-patches-need-review.mdwn
+++ b/obnam/bugs/rolling-checksum-patches-need-review.mdwn
@@ -6,3 +6,5 @@
       a different rolling checksum function (and/or a different window size)
       would be better, it needs more testing.
 
+
+[[done]] -- I never got around to doing this. --liw

Close Obnam bug
diff --git a/obnam/bugs/remove-client-not-in-manpage.mdwn b/obnam/bugs/remove-client-not-in-manpage.mdwn
index a7a5ff2..79b8161 100644
--- a/obnam/bugs/remove-client-not-in-manpage.mdwn
+++ b/obnam/bugs/remove-client-not-in-manpage.mdwn
@@ -1,2 +1,4 @@
 "obnam remove-client" is not in the manpage. It also currently
 doesn't work unless you use encryption. --liw
+
+[[done]] -- it is in the 1.6.1 manpage --liw

Close Obnam bug
diff --git a/obnam/bugs/backup-progress-unchanged-chunks.mdwn b/obnam/bugs/backup-progress-unchanged-chunks.mdwn
index fb20ef2..bfa940a 100644
--- a/obnam/bugs/backup-progress-unchanged-chunks.mdwn
+++ b/obnam/bugs/backup-progress-unchanged-chunks.mdwn
@@ -1,2 +1,4 @@
 When Obnam is backing up a large file with many unchanged chunks, the
 progress reporting should indicate this to the user.
+
+[[done]] -- this should be done now. --liw

Close wishlist Obnam bug
diff --git a/obnam/bugs/baserock.mdwn b/obnam/bugs/baserock.mdwn
index 8f42d8d..36e5574 100644
--- a/obnam/bugs/baserock.mdwn
+++ b/obnam/bugs/baserock.mdwn
@@ -1 +1,3 @@
 Obnam hasn't been ported to Baserock.
+
+[[done]] -- I'll port it when I need it, and wishlist bugs are a burden. --liw

Ask Obnam bug reporters to give Larch version too
diff --git a/obnam/bug-reporting.mdwn b/obnam/bug-reporting.mdwn
index 0bdcf20..8316bed 100644
--- a/obnam/bug-reporting.mdwn
+++ b/obnam/bug-reporting.mdwn
@@ -4,7 +4,7 @@ including the following information is helpful
 and makes it easier to figure out what the problem is.
 
 * What is the problem?
-* The version of Obnam you're using, and how you installed it.
+* The version of Obnam and Larch you're using, and how you installed it.
 * The exact command line you used. Copy-paste it instead of
   typing it again into the mail.
 * If there's an error message, copy-paste that into the mail.

Fix link syntax
diff --git a/obnam/status.mdwn b/obnam/status.mdwn
index 5db8a14..a79d91f 100644
--- a/obnam/status.mdwn
+++ b/obnam/status.mdwn
@@ -5,7 +5,7 @@ Obnam is ready for production use. See [[NEWS]] for release notes,
 and [[1.0]] for the 1.0 release announcement.
 
 If you find a bug or other problem, please see the
-[bug-reporting] page and report it using e-mail
+[[bug-reporting]] page and report it using e-mail
 to the mailing list (see below).
 Debian users may also report bugs to the Debian bug tracking
 system.