summaryrefslogtreecommitdiff
path: root/tickets/8e2695e055c1477eabf43b18db2b8578/Maildir/new/1457028906.M804487P4151Q5.hrun
diff options
context:
space:
mode:
Diffstat (limited to 'tickets/8e2695e055c1477eabf43b18db2b8578/Maildir/new/1457028906.M804487P4151Q5.hrun')
-rw-r--r--tickets/8e2695e055c1477eabf43b18db2b8578/Maildir/new/1457028906.M804487P4151Q5.hrun950
1 files changed, 950 insertions, 0 deletions
diff --git a/tickets/8e2695e055c1477eabf43b18db2b8578/Maildir/new/1457028906.M804487P4151Q5.hrun b/tickets/8e2695e055c1477eabf43b18db2b8578/Maildir/new/1457028906.M804487P4151Q5.hrun
new file mode 100644
index 0000000..79b161f
--- /dev/null
+++ b/tickets/8e2695e055c1477eabf43b18db2b8578/Maildir/new/1457028906.M804487P4151Q5.hrun
@@ -0,0 +1,950 @@
+Return-Path: <obnam-dev-bounces@obnam.org>
+X-Original-To: distix@pieni.net
+Delivered-To: distix@pieni.net
+Received: from bagpuss.pepperfish.net (bagpuss.pepperfish.net [148.251.8.16])
+ (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))
+ (No client certificate requested)
+ by pieni.net (Postfix) with ESMTPS id 74BEA2E113
+ for <distix@pieni.net>; Thu, 3 Mar 2016 19:13:14 +0100 (CET)
+Received: from platypus.pepperfish.net (unknown [10.112.100.20])
+ by bagpuss.pepperfish.net (Postfix) with ESMTP id 1BA7FED4;
+ Thu, 3 Mar 2016 18:13:14 +0000 (GMT)
+Received: from ip6-localhost ([::1] helo=platypus.pepperfish.net)
+ by platypus.pepperfish.net with esmtp (Exim 4.80 #2 (Debian))
+ id 1abXkP-0006gV-TC; Thu, 03 Mar 2016 18:13:13 +0000
+Received: from inmail0 ([10.112.100.10] helo=mx0.pepperfish.net)
+ by platypus.pepperfish.net with esmtp (Exim 4.80 #2 (Debian))
+ id 1abXkN-0006fo-Sb
+ for <obnam-dev@obnam.org>; Thu, 03 Mar 2016 18:13:11 +0000
+Received: from mail-qg0-f53.google.com ([209.85.192.53])
+ by mx0.pepperfish.net with esmtps (TLS1.2:RSA_ARCFOUR_SHA1:128)
+ (Exim 4.80) (envelope-from <remirampin@gmail.com>)
+ id 1abXkJ-0006QG-Nz
+ for obnam-dev@obnam.org; Thu, 03 Mar 2016 18:13:11 +0000
+Received: by mail-qg0-f53.google.com with SMTP id w104so23732137qge.1
+ for <obnam-dev@obnam.org>; Thu, 03 Mar 2016 10:13:02 -0800 (PST)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
+ h=from:to:cc:subject:date:message-id:in-reply-to:references
+ :in-reply-to:references;
+ bh=VwvE5uzCWq62tMVrb0UDgHBehjL57d3j4csJZymRhMM=;
+ b=FaZNC1xg1UC4r2SpH9JUWcW6pbzYe71/V2FfCPiE8kG88fhN+vH3a7RajFxWOlgyO6
+ +MRvPgTtF30pbBILiT+9WffhLseGuj7RS1AsOeigC0R9cC3bJRGyTFegrpc6gRijGCrA
+ cuHb6sr9jhvoHQgA0medm8q1C3kxniKKnErMxXY8goFkloE8+b0IugX+sNgHjhn4753E
+ IOi++r/vwg4zTJ2T1EQGXH65PqWo1A8Ju9gZz384FpfWxJP5m8DdgamKBiTznlElYU0X
+ WS6+ltyELy8PJTxvargDBgydog/ZxNdHTcLt6eqlCSc4wRItPxrFTeEqLh+e3dIw0Vqt
+ 1DvA==
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+ d=1e100.net; s=20130820;
+ h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to
+ :references:in-reply-to:references;
+ bh=VwvE5uzCWq62tMVrb0UDgHBehjL57d3j4csJZymRhMM=;
+ b=iB5tMvvIlbO9mhpmjnBL4t9+LMx6cz9fKfLjLKOko4+O2idxze/mDBVGKbQgvnODf0
+ jwWx8+d9KJyTRJAZRW6XxeOncpVMOXzkqBlftcqqnsf9qeubNHE4eo44/MhWU5+nfsT9
+ 8TjqewMKBtQ+dnTZm02wLJqhX46Jql/VHDKoM6i9Saf/A1uZNMAgztvKMFhxyyRoJMuJ
+ WCaCBzO0B3KQVUiGof8EySPkVSA+RRdHzV3jJqBT4KstFvcA42XrAjZq9loDJmVQpf2o
+ iwsvIPLKoZbe1cuY3JlRRe8otgA8IgADtAeO4H2In70VOih0aXustT+ey4vyHyBTRUJL
+ M78Q==
+X-Gm-Message-State: AD7BkJJwodM9otrDG8hCxl0NhKEfQTI5inD586q/IoLrFzBxQ0anJ7dd6pvpmBkTDAonsg==
+X-Received: by 10.140.42.39 with SMTP id b36mr4792516qga.4.1457028776135;
+ Thu, 03 Mar 2016 10:12:56 -0800 (PST)
+Received: from randy.nyu.edu (NYUFWA-WLESSAUTHCLIENTS-03.NATPOOL.NYU.EDU.
+ [216.165.95.74])
+ by smtp.gmail.com with ESMTPSA id d64sm17391811qgd.9.2016.03.03.10.12.55
+ (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128);
+ Thu, 03 Mar 2016 10:12:55 -0800 (PST)
+From: Remi Rampin <remirampin@gmail.com>
+To: obnam-dev@obnam.org
+Date: Thu, 3 Mar 2016 13:12:45 -0500
+Message-Id: <e98d668267a30a19b287b728ba674191c52613a4.11457028091.git.remirampin@gmail.com>
+X-Mailer: git-send-email 2.7.2
+In-Reply-To: <cover.11457028091.git.remirampin@gmail.com>
+References: <cover.11457028091.git.remirampin@gmail.com>
+In-Reply-To: <cover.1457028091.git.remirampin@gmail.com>
+References: <cover.1457028091.git.remirampin@gmail.com>
+X-Spam-Score: 0.2
+X-Spam-Score-int: 2
+X-Spam-Bar: /
+X-Scanned-By: pepperfish.net, Thu, 03 Mar 2016 18:13:11 +0000
+X-Spam-Report: Content analysis details: (0.2 points)
+ pts rule name description
+ ---- ---------------------- --------------------------------------------------
+ 1.0 PPF_FROM_CONTAINS_MAIL The From header contains 'mail'
+ 1.2 FREEMAIL_FROM Sender email is commonly abused enduser mail provider
+ (remirampin[at]gmail.com)
+ -0.7 RCVD_IN_DNSWL_LOW RBL: Sender listed at http://www.dnswl.org/, low
+ trust [209.85.192.53 listed in list.dnswl.org]
+ -0.0 SPF_PASS SPF: sender matches SPF record
+ -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1%
+ [score: 0.0000]
+ 0.8 PPF_SUBSCRIBE_SPLIT RAW: Contains the text 'subscribe' with optional
+ whitespace
+ -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's
+ domain
+ 0.1 DKIM_SIGNED Message has a DKIM or DK signature,
+ not necessarily valid
+ -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
+X-ACL-Warn: message may be spam
+X-Scan-Signature: c7c007cbd50c36c3acd0264c8a1b1a00
+Cc: Remi Rampin <remirampin@gmail.com>
+Subject: [PATCH 1/4] Sync French translation with English reference
+X-BeenThere: obnam-dev@obnam.org
+X-Mailman-Version: 2.1.5
+Precedence: list
+List-Id: Obnam development discussions <obnam-dev-obnam.org>
+List-Unsubscribe: <http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-dev-obnam.org>,
+ <mailto:obnam-dev-request@obnam.org?subject=unsubscribe>
+List-Archive: <http://listmaster.pepperfish.net/pipermail/obnam-dev-obnam.org>
+List-Post: <mailto:obnam-dev@obnam.org>
+List-Help: <mailto:obnam-dev-request@obnam.org?subject=help>
+List-Subscribe: <http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-dev-obnam.org>,
+ <mailto:obnam-dev-request@obnam.org?subject=subscribe>
+Sender: obnam-dev-bounces@obnam.org
+Errors-To: obnam-dev-bounces@obnam.org
+
+---
+ manual/fr/020-concepts.mdwn | 2 +-
+ manual/fr/060-backing-up.mdwn | 48 ++++---
+ manual/fr/070-restoring.mdwn | 28 +++-
+ manual/fr/110-encryption.mdwn | 10 ++
+ manual/fr/120-misc.mdwn | 16 +++
+ manual/fr/140-troubleshooting.mdwn | 75 +++++++++++
+ manual/fr/155-repo.mdwn | 19 +++
+ manual/fr/160-tuning.mdwn | 41 +++++-
+ manual/fr/700-contrib.mdwn | 181 +++++++++++++++++++++++++
+ manual/fr/800-errors.mdwn | 10 ++
+ manual/fr/801-errors.mdwn | 269 +++++++++++++++++++++++++++++++++++++
+ 11 files changed, 679 insertions(+), 20 deletions(-)
+ create mode 100644 manual/fr/155-repo.mdwn
+ create mode 100644 manual/fr/700-contrib.mdwn
+ create mode 100644 manual/fr/800-errors.mdwn
+ create mode 100644 manual/fr/801-errors.mdwn
+
+diff --git a/manual/fr/020-concepts.mdwn b/manual/fr/020-concepts.mdwn
+index 46cb5d5..c367bc1 100644
+--- a/manual/fr/020-concepts.mdwn
++++ b/manual/fr/020-concepts.mdwn
+@@ -277,7 +277,7 @@ Glossary
+ * **off-site backup**: a backup repository stored physically far away
+ from the live data
+ * **precious data**: all the data you care about; cf. live data
+-* **repository**: the location where are backups are stored
++* **repository**: the location where backup data is stored
+ * **restore**: retrieving data from a backup repository
+ * **root**, **backup root**: a directory that is to be backed up,
+ including all files in it, and all its subdirectories
+diff --git a/manual/fr/060-backing-up.mdwn b/manual/fr/060-backing-up.mdwn
+index 16ccc5d..ee28d6e 100644
+--- a/manual/fr/060-backing-up.mdwn
++++ b/manual/fr/060-backing-up.mdwn
+@@ -137,8 +137,8 @@ protocol (part of SSH). You need the following to achieve this:
+ exchange for having one of their machines at your place, so that you
+ both can backup remotely.
+
+-* An **ssh key** for logging into the server. You _can_ log in using
+- passwords too, but it is quite cumbersome.
++* An **ssh key** for logging into the server. Obnam does not currently
++ support logging in via passwords.
+
+ * Enough disk space on the server to hold your backups.
+
+@@ -356,6 +356,29 @@ duplicate data is quite coarse (see the `--chunk-size` setting), and
+ so Obnam often doesn't find duplication when it exists, when the
+ changes are small.
+
++De-duplication isn't useful in the following scenarios:
++
++* A file changes such that things move around within the file. The
++ (current) Obnam de-duplication is based on non-overlapping chunks
++ from the beginning of a file. If some data is inserted, Obnam won't
++ notice that the chunks have shifted around. This can happen, for
++ example, for disk or ISO images.
++
++* Files with duplicate data that is not on a chunk boundary. For
++ example, emails with large attachments. Each email recipient gets
++ different `Received` headers, which shifts the body and attachments
++ by different amounts. As a result, Obnam won't notice the
++ duplication.
++
++* Data in compressed files, such as `.zip` or `.tar.xz` files. Obnam
++ doesn't know about the file compression, and only sees the
++ compressed version of the data. Thus, Obnam won'd de-duplicate it.
++
++A future version of Obnam will hopefully improve the de-duplication
++algorithms. If you see this optimistic paragraph in a version of Obnam
++released in 2017 or later, please notify the maintainers. Thank you.
++
++
+ De-duplication and safety against checksum collisions
+ -----------------------------------------------------
+
+@@ -428,27 +451,18 @@ happen if Obnam is interrupted by the user before it's finished.
+
+ The Obnam command `force-lock` deals with this situation. It is
+ dangerous, though. If you force open a lock that is in active use by
+-a running Obnam instance, there will likely to be some stepping of
+-toes. The result may, in extreme cases, even result in repository
+-corruption. So be careful.
++any running Obnam instance, on any client machine using that
++repository, there will likely to be some stepping of toes. The result
++may, in extreme cases, even result in repository corruption. So be
++careful.
+
+ If you've decided you can safely do it, this is an example of how to
+ do it:
+
+ obnam -r /media/backups/tomjon-repo force-lock
+
+-Note that some of the locks are per-client, to prevent you from
+-accidentally running Obnam twice for the same client, which would
+-result in standing on your own toes: kind of impressive, but
+-uncomfortable and not recommended.
+-
+-If you need to force open a lock for specific client, you can specify
+-the client name explicitly:
+-
+- obnam --client-name magrat \
+- -r /media/backups/tomjon-repo force-lock
+-
+-(Long line broken to two for typographical reasons.)
++It is not currently possibly to only break locks related to one
++client.
+
+ Consistency of live data
+ ------------------------
+diff --git a/manual/fr/070-restoring.mdwn b/manual/fr/070-restoring.mdwn
+index 378b071..b56bd9f 100644
+--- a/manual/fr/070-restoring.mdwn
++++ b/manual/fr/070-restoring.mdwn
+@@ -5,7 +5,7 @@ The worst has happened! Your cat got confused between its litter box
+ and your hard drive! Your goat deleted your most important document
+ ever! Woe be you!
+
+-Let's stay calm. This is why you have backups. There's on need for
++Let's stay calm. This is why you have backups. There's no need for
+ exclamation marks. Take a deep breath, have a cup of tea, and all will
+ be well.
+
+@@ -90,6 +90,32 @@ restored files. If you do want replace your live data with restored
+ files, you should restore to a temporary location first, and then move
+ the files to where you want them to be.
+
++An actual example of a restoration
++----------------------------------
++
++I had a corrupted gnus file, and this is how I restored it from backup.
++
++ obnam --config=/home/foobar/cron/conf/obnam.conf generations>~/cron/upload/obgen.txt
++
++This copies all generations for the main obnam backup to obgen.txt, and this
++is part of that file.
++
++ 1207586 2014-08-25 08:00:43 .. 2014-08-25 08:08:24 (385163 files, 175029819657 bytes)
++ 1208367 2014-08-25 12:00:42 .. 2014-08-25 12:08:31 (385965 files, 175057598863 bytes)
++ 1209313 2014-08-25 16:00:12 .. 2014-08-25 16:07:33 (386537 files, 175076976590 bytes)
++ 1210254 2014-08-25 20:00:15 .. 2014-08-25 20:09:41 (386896 files, 175086483254 bytes)
++
++And I decided to restore from generation 1208367.
++
++This is the actual restore command.
++
++ obnam --config=/home/foobar/cron/conf/obnam.conf --generation=1208367 restore ~/News/rss/nnrss.el --to=/home/foobar/cron/upload/
++
++This restores 'nnrss.el' to ~/cron/upload/ from where I was able to copy it
++back to its proper place in ~/News/rss/
++
++Obviously you replace your user-name for foobar.
++
+ Practice makes prestores painless
+ ---------------------------------
+
+diff --git a/manual/fr/110-encryption.mdwn b/manual/fr/110-encryption.mdwn
+index 74a959b..94a4426 100644
+--- a/manual/fr/110-encryption.mdwn
++++ b/manual/fr/110-encryption.mdwn
+@@ -112,6 +112,16 @@ them. Run the following command and pick your key from the list.
+
+ gpg --list-keys
+
++The output will look something like this:
++
++ pub 4096R/5E8511F9 2009-07-22
++ uid Lars Wirzenius <liw@liw.fi>
++ sub 2048R/9BE35AE6 2011-08-05
++
++That's the output for one key; there may be many keys. The key
++identifier is on the line staring with `pub`, in the second column
++after the slash. Above, it's 5E8511F9.
++
+ In the rest of the examples in this chapter, we'll assume your key
+ identifier is CAFEFACE.
+
+diff --git a/manual/fr/120-misc.mdwn b/manual/fr/120-misc.mdwn
+index 0ed6c7f..d80e823 100644
+--- a/manual/fr/120-misc.mdwn
++++ b/manual/fr/120-misc.mdwn
+@@ -3,3 +3,19 @@ Other stuff
+
+ This chapter discusses topics that do not warrant a chapter of their
+ own, such as compressing backups and running Obnam from cron.
++
++k4dirstat cache files
++---------------------
++
++[k4dirstat] is a utility for visualising the disk space used by a
++directory tree. Obnam's `kdirstat` command can be used to produce a
++listing of the contents of a generation in a format which can be read
++by k4dirstat using `File`, `Read Cache File` from the k4dirstat
++menu. e.g.
++
++ $ obnam kdirstat --client CLIENT --generation GENID > CLIENT.kdirstat.cache
++ $ gzip -v9 CLIENT.kdirstat.cache # OPTIONAL
++
++`CLIENT.kdirstat.cache[.gz]` can now be read by `k4dirstat`.
++
++[k4dirstat]: https://bitbucket.org/jeromerobert/k4dirstat/wiki/Home
+diff --git a/manual/fr/140-troubleshooting.mdwn b/manual/fr/140-troubleshooting.mdwn
+index 1d4b377..02d8188 100644
+--- a/manual/fr/140-troubleshooting.mdwn
++++ b/manual/fr/140-troubleshooting.mdwn
+@@ -5,3 +5,78 @@ This chapter discusses how to debug problems with Obnam. It covers
+ things such as log files, various levels of logging and tracing, and
+ common problems with Obnam use. It also explains what things go where
+ in an Obnam backup repository.
++
++
++Turning on full logging
++-----------------------
++
++Obnam can write a log file. There are several options controlling
++that. Knowing these can help get out the most information when there's
++a problem that needs to be investigated.
++
++* `--log=obnam.log` tells Obnam where to log. The log is a simple text
++ file.
++* `--log-level=debug` tells Obnam to log at the most detailed level.
++ The default level is `info`, which excludes most debug information.
++* `--trace=obnamlib --trace=larch` tells Obnam to log additional debug
++ information. The two arguments match all filenames in Obnam and the
++ Larch library Obnam uses. This additional information is mostly
++ useful to someone who can read and understand the program source
++ code.
++
++Note that these settings can make log files be quite large, in the
++order of tens of megabytes. The size depends on how many files and how
++much data your live data has.
++
++
++Reporting problems ("bugs")
++---------------------------
++
++If you have a problem with Obnam, and you want to report it (please
++do!), including the following information is helpful and makes it
++easier to figure out what the problem is.
++
++* You should report problems to the `obnam-support@obnam.org` mailing
++ list. This is a publically archived mailing list where various
++ people help others use Obnam.
++
++* What is the problem? What did you try to achieve? What actually
++ happened?
++
++* The version of Obnam and Larch you're using, and how you installed
++ it.
++ - On Debian, run `dpkg -l obnam python-larch` on the command line
++ and include the output.
++
++* The exact command line you used. Copy-paste it instead of
++ typing it again into the mail. Sometimes the problem can be hidden
++ if you don't copy the command line exactly. Also, copying by typing
++ is boring, and we should avoid boring things in life.
++
++* If there's an error message, copy-paste that into the mail.
++
++* The output of `obnam --dump-config`, which includes the full
++ configuration. Include it as an attachment to your mail to
++ `obnam-support`. If you have some secret information, such as
++ filenames or hostnames, you can replace those with XXXX.
++
++* If you can reproduce the problem while running with
++ `--log-level=debug`, `--log=obnam.log` and `--trace=obnamlib
++ --trace=larch` options, include a suitable amount from the end of
++ the log file. The suitable amount may depend on the situation, but
++ if you give the last two hundred lines, and it's not enough, we'll
++ ask for more. Again, feel free to replace any sensitive filenames,
++ etc, with XXXX.
++
++* The output of the `env` command, in the same terminal window in
++ which you ran Obnam. (Again, as an attachment.)
++
++* If your bug is about performance, please run Obnam under profiling,
++ and attach the profiling file. To run Obnam under profiling, install
++ the Python profile (`python-profiler` package in Debian/Ubuntu), and
++ set the `OBNAM_PROFILE` environment variable to the name of the file
++ with the profiling output (that's the file you should send by mail).
++ For example: `OBNAM_PROFILE=obnam.prof obnam backup` would run the
++ backup under the profiler, and write the result to `obnam.prof`.
++
++Thank you for your help in making Obnam better.
+diff --git a/manual/fr/155-repo.mdwn b/manual/fr/155-repo.mdwn
+new file mode 100644
+index 0000000..c99d675
+--- /dev/null
++++ b/manual/fr/155-repo.mdwn
+@@ -0,0 +1,19 @@
++The backup repository internals
++===============================
++
++This chapter describes what the Obnam backup repository looks like.
++Unless you're interested in that, you can skip that entirely.
++
++For now, look at the Obnam website at <http://obnam.org/development/>.
++
++
++Repository file permissions
++---------------------------
++
++Obnam sets the permissions of all files it creates in the repository
++such that only the owner of the files can read or write them.
++(Technically, 0600 for files, 0700 for directories.)
++
++This is to prevent backups from leaking because someone else has read
++access to the repository. There is no setting in Obnam to control
++this.
+diff --git a/manual/fr/160-tuning.mdwn b/manual/fr/160-tuning.mdwn
+index bcca7f0..160caab 100644
+--- a/manual/fr/160-tuning.mdwn
++++ b/manual/fr/160-tuning.mdwn
+@@ -2,7 +2,46 @@
+
+ This chapter discusses ways to tune Obnam performance for various
+ situations. It covers the various options that can affect CPU and
+-memory consumptions, as well as ways to experiment to find a good set
++memory consumption, as well as ways to experiment to find a good set
+ of values.
+
+ See <http://obnam.org/faq/tuning/> for a start.
++
++
++## Running Obnam under the Python profiler
++
++A **profiler** is a program that measures where another program spends
++its time. This can be very useful for finding out why the other
++program is slow.
++
++Obnam can easily be run under the Python profiler. You need to have
++the profiler installed. Check with your operating system or Python
++installation how to achieve that. To see if you have it installed, run
++the following command on the command line:
++
++ python -c 'import cProfile'
++
++If this outputs nothing, all is well. If it outputs an error such as
++the following, you have not got the profiler installed:
++
++ Traceback (most recent call last):
++ File "<string>", line 1, in <module>
++ ImportError: No module named cProfiler
++
++Once you have the profiler installed, run Obnam like this:
++
++ OBNAM_PROFILE=backup.prof obnam bsckup
++
++This will cause the profiling data to be written to the file
++`backup.prof`. You can do this for any Obnam command, and write it to
++any file.
++
++The profiling data is in binary form. Obnam comes with a little helper
++program to transform it to a human-readable form:
++
++ obnam-viewprof backup.prof | less
++
++If you run the above command, you'll see that the humans to whom this
++is readable are programmers and circus clowns. If you can understand
++the output, great! If not, it's still useful to send that to the Obnam
++developers to report a performance problem.
+diff --git a/manual/fr/700-contrib.mdwn b/manual/fr/700-contrib.mdwn
+new file mode 100644
+index 0000000..efdcd9a
+--- /dev/null
++++ b/manual/fr/700-contrib.mdwn
+@@ -0,0 +1,181 @@
++Participating in Obnam development
++==================================
++
++The Obnam project is quite small, as far as software projects go.
++There is one main developer, plus a few others who sometimes help out.
++It would be nice to have more people involved, and this chapter is an
++introduction for that.
++
++It is a common misunderstanding that only code matters in a software
++project. On the contrary, without a number of other things, code is
++useless, particularly so in a free software project, including Obnam.
++Examples of necessary things in almost any serious software project:
++
++* writing and updating documentation, which includes manuals and
++ websites
++* translating documentation, and the software's user interface
++* providing support to users with questions or problems
++* reporting actionable bugs
++* processing bug reports: asking for clarifications, reproducing the
++ reported problem, finding the cause of the problem, and developing a
++ suitable fix
++* porting the software to various platforms, including different
++ operating systems, different versions of said operating systems,
++ different versions of the languages and libraries the software uses,
++ different hardware, etc
++* quality assurance: developing and performing manual and automated
++ tests and benchmarks, and analysing results
++* hosting and operating web sites, mailing lists, IRC channels, other
++ communication channels
++* handling project governance, which includes dealing with conflicts
++ between people
++* managing the project in general, including making sure things don't
++ stall
++* finally, writing the code itself, which is a necessary, but not
++ sufficient part of having a project that people other than the
++ developers can use it
++
++This list is insufficient; additions are welcome. See the rest of this
++chapter for suggestions on how to contribute to the list.
++
++
++Helping support users
++---------------------
++
++Perhaps the easiest way to participate in the project is to help
++support other users of the software. This is easy, and doesn't
++necessarily require more than being able to use the software oneself.
++Yet it is quite valuable, as it frees others from doing that. Even
++with the highest quality, easiest to use software, there's always some
++need for user support:
++
++* Code can be wrong, and a user may experience this. Analysing the
++ situation and isolating the bug is an important part of the software
++ development process.
++
++* Documentation can be wrong, or out of date, or written in
++ anticipation of a feature that doesn't exist yet.
++
++* Some people have misunderstandings, due to whatever reason, which
++ leads them to have problems when using the software. Figuring out
++ what the actual problem and its cause are can be a time consuming
++ process, but often does not require any special skills, except for
++ patience and a willingness to ask a lot of questions.
++
++In the Obnam project, the best way to help out with this is to
++subscribe to the `obnam-support@obnam.org` mailing list or join the
++`#obnam` (irc.oftc.net) IRC channel, and start answering questions.
++
++It's OK to not be an expert. Helping others is a great way to learn.
++If you make it clear you're not an expert, but are trying to help
++anyway, usually makes others appreciate your help even more.
++
++Some suggestions on doing support work:
++
++* Try to understand what the person needing help is actually trying to
++ achieve, rather than answering their literal question. Better yet,
++ do both.
++
++* You don't need to have the solution to respond. A quick, but
++ incomplete answer that nevertheless moves the discussion forward is
++ helpful. Even if you don't know the correct answer, it's good to ask
++ a question that results in the person needing help providing more
++ information, or finding the solution themselves, or inspires someone
++ else to discover the solution,
++
++* Always be helpful and polite. Never respond with things such as
++ "read the fine manual" (or RTFM for short). It's OK to say that the
++ answer is in the manual, but then provide a link, and possibly also
++ a quote.
++
++* People who need help are often frustrated, and sometimes desperate,
++ because they've tried and tried to solve the problem on their own,
++ but have failed. This can leak through their messages. Ignore it,
++ unless they actually become impolite, at which point its probably
++ best to escalate the situation. Avoid getting into a quarrel about
++ who's right or who said what and what did they mean by it.
++
++* It's better to not respond at all, than respond while irritated,
++ annoyed, or angry. It's more important for the project to maintain a
++ polite and helpful atmosphere in the long run than to solve any
++ current technical problem.
++
++In short, if you do your best to be polite, friendly, and helpful, go
++ahead and respond.
++
++
++Writing and updating documentation
++----------------------------------
++
++The project has various kinds of documentation.
++
++* The `obnam.org` website.
++* The manual page.
++* The manual (which is what you're reading now).
++* Various blog posts around the web.
++
++Writing documentation is fairly easy. Updating it takes a bit more
++effort, since it requires reviewing existing documentation to make
++sure it's up to date. The main goals of Obnam documentation are:
++
++* Accuracy.
++* Clarity.
++* Completeness.
++* A bit of dry humour in places.
++
++Any help you can give here is most welcome.
++
++* Read through existing documentation.
++* If you find anything that's wrong, inaccurate, incomplete, missing,
++ or unclear, send a note to the developer mailing list.
++* If you can include a new wording, all the better. It's not required.
++* If you can provide an actual patch, perfect, since it makes it
++ easiest to incorporate your suggestion. Again, it's not required.
++
++You don't need to be a good writer. As part of the process, others
++will review what you send, and will point out anything they feel can
++be improved. For example, suppose you notice that a paragraph in this
++manual is unclear, but you don't know what it actually should say. If
++you send a mail saying this, others can then come up with a better
++wording.
++
++Translating documentation
++-------------------------
++
++The Obnam manual and manual page are written in English, and have been
++translated to German. More languages are most welcome.
++
++The author of this manual is not particularly familiar with the
++process of translation, and so wishes someone else would fill in this
++section.
++
++The Obnam user interface is not currently translatable, and making it
++so will require code changes. Helping make those code changes would be
++nice.
++
++Developing the code
++-------------------
++
++Assuming you already know how to program, it's fairly straightforward
++to work on the Obnam code base. At least it's meant to be so: if you
++have trouble, please ask and point out what's unclear or wrong.
++
++Check out the source from the git server, and read the `README` file
++for details on how to get started, and how to run the automated test
++suite, and how to send patches. See the website for some development
++documentation, including explanations of the on-disk data structures.
++
++Code changes that are not very trivial should be sent in a form that
++can be handled by git. This can be actual patches sent to the mailing
++list, or a URL from which changes can be merged.
++
++Project governance
++------------------
++
++The Obnam project has a very informal form of governance: the founder
++of the project, Lars Wirzenius, has all the power, and everyone else
++has no power. As the project grows, this will change.
++
++If there's a social problem somewhere, for example someone is
++misbehaving, it's best to report it to Lars directly. If Lars is the
++problem, it's best to call him out directly.
+diff --git a/manual/fr/800-errors.mdwn b/manual/fr/800-errors.mdwn
+new file mode 100644
+index 0000000..e42580c
+--- /dev/null
++++ b/manual/fr/800-errors.mdwn
+@@ -0,0 +1,10 @@
++Appendix: Error messages
++========================
++
++This appendix lists all Obnam error messages and their explanations.
++It is possible you'll see other error messages while running Obnam.
++These are not listed here, as Obnam doesn't know about them.
++
++The errors are listed twice: briefly, in order of their unique
++error, and then more fully, in alphabetical order.
++
+diff --git a/manual/fr/801-errors.mdwn b/manual/fr/801-errors.mdwn
+new file mode 100644
+index 0000000..084f279
+--- /dev/null
++++ b/manual/fr/801-errors.mdwn
+@@ -0,0 +1,269 @@
++## By error code
++
++* `R018FCX ToplevelIsFileError`
++* `R01F56X RepositorySettingMissingError`
++* `R02C17X HardlinkError`
++* `R0B15DX RepositoryGenerationDoesNotExist`
++* `R0BE94X RepositoryClientNotLocked`
++* `R0C79EX GpgError`
++* `R0F22CX URLSchemeAlreadyRegisteredError`
++* `R0FC21X SetMetadataError`
++* `R169C6X MissingFilterError`
++* `R173AEX NoFilterTagError`
++* `R1A025X RepositoryClientKeyNotAllowed`
++* `R1CA00X ClientDoesNotExistError`
++* `R22E66X SizeSyntaxError`
++* `R24424X RepositoryClientDoesNotExist`
++* `R283A6X UnitNameError`
++* `R2FA37X WrongNumberOfGenerationSettingsError`
++* `R338F2X BackupRootMissingError`
++* `R3B42AX WrongNumberOfGenerationsForVerify`
++* `R3E151X RepositoryFileDoesNotExistInGeneration`
++* `R3E1C1X RestoreTargetNotEmpty`
++* `R41CE6X RepositoryClientAlreadyExists`
++* `R43272X RepositoryChunkDoesNotExist`
++* `R45B50X DuplicatePeriodError`
++* `R47416X WrongHostKeyError`
++* `R4C3BCX BackupErrors`
++* `R57207X RepositoryClientGenerationUnfinished`
++* `R5914DX InvalidPortError`
++* `R5F98AX NoHostKeyError`
++* `R681AEX LockFail`
++* `R6A098X RepositoryGenerationKeyNotAllowed`
++* `R6C1C8X RepositoryClientListNotLocked`
++* `R6EAF2X RepositoryClientLockingFailed`
++* `R7137EX BagIdNotSetError`
++* `R79699X RepositoryFileKeyNotAllowed`
++* `R79ED6X BackupRootDoesNotExist`
++* `R7B8D0X FileNotFoundError`
++* `R826A1X UnknownVFSError`
++* `R8AAC1X NoHostKeyOfWantedTypeError`
++* `R8F974X RepositoryChunkIndexesLockingFailed`
++* `R91CA1X ShowFirstGenerationError`
++* `R9808DX ForgetPolicySyntaxError`
++* `RA4F35X RootIsNotADirectory`
++* `RA5942X WrongNumberOfGenerationsForDiffError`
++* `RA7D64X UnknownRepositoryFormatWanted`
++* `RA881CX RepositoryChunkContentNotInIndexes`
++* `RA920EX NotARepository`
++* `RABC26X FuseModuleNotFoundError`
++* `RB1048X RepositoryClientListLockingFailed`
++* `RB4324X GAImmutableError`
++* `RB8E98X WrongURLSchemeError`
++* `RB927BX SeparatorError`
++* `RBF6DDX RepositoryAccessError`
++* `RCB0CAX KeyAuthenticationError`
++* `RCE08AX ObnamIOError`
++* `RCEF5CX MallocError`
++* `RD5FA4X ObnamSystemError`
++* `RD6259X RestoreErrors`
++* `RDF30DX Fail`
++* `RE187FX RepositoryChunkIndexesNotLocked`
++* `REFB32X RepositoryClientHasNoGenerations`
++* `RF4EFDX UnknownRepositoryFormat`
++
++
++## By name
++
++`BackupErrors` (`R4C3BCX`)
++: There were errors during the backup
++
++`BackupRootDoesNotExist` (`R79ED6X`)
++: Backup root does not exist or is not a directory: {root}
++
++`BackupRootMissingError` (`R338F2X`)
++: No backup roots specified
++
++`BagIdNotSetError` (`R7137EX`)
++: Bag id not set: cannot append a blob (programming error)
++
++`ClientDoesNotExistError` (`R1CA00X`)
++: Client {client} does not exist in repository {repo}
++
++`DuplicatePeriodError` (`R45B50X`)
++: Forget policy may not duplicate period ({period}): {policy}
++
++`Fail` (`RDF30DX`)
++: {filename}: {reason}
++
++`FileNotFoundError` (`R7B8D0X`)
++: FUSE: File not found: {filename}
++
++`ForgetPolicySyntaxError` (`R9808DX`)
++: Forget policy syntax error: {policy}
++
++`FuseModuleNotFoundError` (`RABC26X`)
++: Failed to load module "fuse", try installing python-fuse
++
++`GAImmutableError` (`RB4324X`)
++: Attempt to modify an immutable GADirectory
++
++`GpgError` (`R0C79EX`)
++: gpg failed with exit code {returncode}: {stderr}
++
++`HardlinkError` (`R02C17X`)
++: Cannot hardlink on SFTP; sorry
++
++ This is due to a limitation in the Python paramiko library that
++ Obnam uses for SSH/SFTP access.
++
++`InvalidPortError` (`R5914DX`)
++: Invalid port number {port} in {url}: {error}
++
++`KeyAuthenticationError` (`RCB0CAX`)
++: Can't authenticate to SSH server using key
++
++`LockFail` (`R681AEX`)
++: Couldn't create lock {lock_name}: {reason}
++
++`MallocError` (`RCEF5CX`)
++: malloc out of memory while calling {function}
++
++`MissingFilterError` (`R169C6X`)
++: Unknown filter tag: {tagname}
++
++`NoFilterTagError` (`R173AEX`)
++: No filter tag found
++
++`NoHostKeyError` (`R5F98AX`)
++: No known host key for {hostname}
++
++`NoHostKeyOfWantedTypeError` (`R8AAC1X`)
++: No known type {key_type} host key for {hostname}
++
++`NotARepository` (`RA920EX`)
++: {url} does not seem to be an Obnam repository
++
++`ObnamIOError` (`RCE08AX`)
++: I/O error: {filename}: {errno}: {strerror}
++
++`ObnamSystemError` (`RD5FA4X`)
++: System error: {filename}: {errno}: {strerror}
++
++`RepositoryAccessError` (`RBF6DDX`)
++: Repository does not exist or cannot be accessed: {error}
++
++`RepositoryChunkContentNotInIndexes` (`RA881CX`)
++: Repository chunk indexes do not contain content
++
++`RepositoryChunkDoesNotExist` (`R43272X`)
++: Repository doesn't contain chunk {chunk_id}. It is expected at
++ {filename}
++
++`RepositoryChunkIndexesLockingFailed` (`R8F974X`)
++: Repository chunk indexes are already locked
++
++`RepositoryChunkIndexesNotLocked` (`RE187FX`)
++: Repository chunk indexes are not locked
++
++`RepositoryClientAlreadyExists` (`R41CE6X`)
++: Repository client {client_name} already exists
++
++`RepositoryClientDoesNotExist` (`R24424X`)
++: Repository client {client_name} does not exist
++
++`RepositoryClientGenerationUnfinished` (`R57207X`)
++: Cannot start new generation for {client_name}: previous one is not
++ finished yet (programming error)
++
++`RepositoryClientHasNoGenerations` (`REFB32X`)
++: Client {client_name} has no generations
++
++`RepositoryClientKeyNotAllowed` (`R1A025X`)
++: Client {client_name} uses repository format {format} which does
++ not allow the key {key_name} to be use for clients
++
++`RepositoryClientListLockingFailed` (`RB1048X`)
++: Repository client list could not be locked
++
++`RepositoryClientListNotLocked` (`R6C1C8X`)
++: Repository client list is not locked
++
++`RepositoryClientLockingFailed` (`R6EAF2X`)
++: Repository client {client_name} could not be locked
++
++`RepositoryClientNotLocked` (`R0BE94X`)
++: Repository client {client_name} is not locked
++
++`RepositoryFileDoesNotExistInGeneration` (`R3E151X`)
++: Client {client_name}, generation {genspec} does not have file
++ {filename}
++
++`RepositoryFileKeyNotAllowed` (`R79699X`)
++: Client {client_name} uses repository format {format} which does
++ not allow the key {key_name} to be use for files
++
++`RepositoryGenerationDoesNotExist` (`R0B15DX`)
++: Cannot find requested generation {gen_id!r} for client
++ {client_name}
++
++`RepositoryGenerationKeyNotAllowed` (`R6A098X`)
++: Client {client_name} uses repository format {format} which does
++ not allow the key {key_name} to be used for generations
++
++`RepositorySettingMissingError` (`R01F56X`)
++: No --repository setting. You need to specify it on the command
++ line or a configuration file
++
++`RestoreErrors` (`RD6259X`)
++: There were errors when restoring
++
++ See previous error messages for details.
++
++`RestoreTargetNotEmpty` (`R3E1C1X`)
++: The restore --to directory ({to}) is not empty.
++
++`RootIsNotADirectory` (`RA4F35X`)
++: {baseurl} is not a directory, but a VFS root must be a directory
++
++`SeparatorError` (`RB927BX`)
++: Forget policy must have rules separated by commas, see position
++ {position}: {policy}
++
++`SetMetadataError` (`R0FC21X`)
++: {filename}: Couldn't set metadata {metadata}: {errno}: {strerror}
++
++`ShowFirstGenerationError` (`R91CA1X`)
++: Can't show first generation. Use 'obnam ls' instead
++
++`SizeSyntaxError` (`R22E66X`)
++: "{size}" is not a valid size
++
++`ToplevelIsFileError` (`R018FCX`)
++: File at repository root: {filename}
++
++`URLSchemeAlreadyRegisteredError` (`R0F22CX`)
++: VFS URL scheme {scheme} already registered
++
++`UnitNameError` (`R283A6X`)
++: "{unit}" is not a valid unit
++
++`UnknownRepositoryFormat` (`RF4EFDX`)
++: Unknown format {format} at {url}
++
++`UnknownRepositoryFormatWanted` (`RA7D64X`)
++: Unknown format {format} requested
++
++`UnknownVFSError` (`R826A1X`)
++: Unknown VFS type: {url}
++
++`WrongHostKeyError` (`R47416X`)
++: SSH server {hostname} offered wrong public key
++
++ Note that this may due to an obsolete host key in your "known
++ hosts" file. If so, use "ssh-key -R" to remove it. However, it can
++ also be a sign that someone is trying to hijack your connection to
++ your server, and you should be careful.
++
++`WrongNumberOfGenerationSettingsError` (`R2FA37X`)
++: The restore command wants exactly one generation option
++
++`WrongNumberOfGenerationsForDiffError` (`RA5942X`)
++: Need one or two generations
++
++`WrongNumberOfGenerationsForVerify` (`R3B42AX`)
++: verify must be given exactly one generation
++
++`WrongURLSchemeError` (`RB8E98X`)
++: SftpFS used with non-sftp URL: {url}
++
+--
+2.7.2
+
+
+_______________________________________________
+obnam-dev mailing list
+obnam-dev@obnam.org
+http://listmaster.pepperfish.net/cgi-bin/mailman/listinfo/obnam-dev-obnam.org