[reproducible-website] 03/03: Add persona specific FAQ questions generated at summit

Valerie R Young spectranaut at riseup.net
Tue Dec 20 04:03:51 UTC 2016


This is an automated email from the git hooks/post-receive script.

spectranaut-guest pushed a commit to branch faq
in repository reproducible-website.

commit baa64cfb3064685bd013c733d685bebc61070c2d
Author: Valerie R Young <spectranaut at riseup.net>
Date:   Mon Dec 19 23:02:33 2016 -0500

    Add persona specific FAQ questions generated at summit
---
 _faq/#testing.md#    | 17 +++++++++++++++++
 _faq/distribution.md | 18 ++++++++++++++++--
 _faq/myths.md        |  4 ++--
 _faq/testing.md      |  6 +++++-
 _faq/upstream.md     | 44 ++++++++++++++++++++++++++++++++++++++++----
 _faq/user.md         |  6 +++++-
 6 files changed, 85 insertions(+), 10 deletions(-)

diff --git a/_faq/#testing.md# b/_faq/#testing.md#
new file mode 100644
index 0000000..cd8b67b
--- /dev/null
+++ b/_faq/#testing.md#
@@ -0,0 +1,17 @@
+---
+title: Continuous Testing FAQ
+layout: faq
+permalink: /faq/testing/
+---
+
+### What are the benefits of continuously testing the reproduciblity of my software project?
+
+TODO: answer
+
+### Who else is doing it?
+
+TODO: answer
+
+### Which parts of the build environment should be varied between builds?
+
+See the [test bench documentation](/docs/test-bench/).
diff --git a/_faq/distribution.md b/_faq/distribution.md
index 3c8857e..4fae4be 100644
--- a/_faq/distribution.md
+++ b/_faq/distribution.md
@@ -4,10 +4,24 @@ layout: faq
 permalink: /faq/distributor/
 ---
 
-## Why should I, as a distributor of software, care about reproducible builds?
+### Why should I, as a distributor of software, care about reproducible builds?
 
 TODO: answer
 
-## How can I, as a distribution of software, achieve reproducible builds?
+### How can I, as a distribution of software, achieve reproducible builds?
 
 TODO: answer
+
+### Is there a mailing list used by other distributions and projects for cross-collaboration?
+
+Yes: [https://lists.reproducible-builds.org/listinfo/rb-general](https://lists.reproducible-builds.org/listinfo/rb-general)
+
+### Is there a mailing list used by other distributions and projects for cross-collaboration?
+
+Yes: #reproducible-builds on irc.oftc.net 
+
+### How else can I benefit from the work other distributions have put into making unreproducible upstream software reproducible?
+
+Debian currently tracks notes and bugs on all unreproducible packages in this git repo: [https://anonscm.debian.org/cgit/reproducible/notes.git/](https://anonscm.debian.org/cgit/reproducible/notes.git/) They hope to extend this work to contain notes for the same source in different distributions in the near future.
+
+
diff --git a/_faq/myths.md b/_faq/myths.md
index 8117a14..dc385d1 100644
--- a/_faq/myths.md
+++ b/_faq/myths.md
@@ -4,10 +4,10 @@ layout: faq
 permalink: /faq/myths/
 ---
 
-## What if I need to include a build path in my binary?
+### What if I want to include a build path in my binary?
 
 TODO: answer
 
-## What if I need to include a build timestamp in my binary?
+### What if I want to include a build timestamp in my binary?
 
 TODO: answer
diff --git a/_faq/testing.md b/_faq/testing.md
index 6ea731a..ff7b2ef 100644
--- a/_faq/testing.md
+++ b/_faq/testing.md
@@ -8,6 +8,10 @@ permalink: /faq/testing/
 
 TODO: answer
 
-## How can I do it?
+## Who else is doing it?
 
 TODO: answer
+
+## Which parts of the build environment should be varied between builds?
+
+See the [test bench documentation](/docs/test-bench/).
diff --git a/_faq/upstream.md b/_faq/upstream.md
index 84630fd..8bdce3d 100644
--- a/_faq/upstream.md
+++ b/_faq/upstream.md
@@ -4,10 +4,46 @@ layout: faq
 permalink: /faq/upstream/ 
 ---
 
-## Why should I write reproducible code?
+### Why should I write reproducible software?
 
-TODO: answer
+Writing reproducible software helps with 
 
-## How do I write reproducible code?
+### How do I write reproducible software?
 
-TODO: answer
+Test that your software is reproducible, then look at the differences and modify your build to avoid this difference. A number of general guidelines are available in the "Achieve deterministic builds" section of [the documentation](/docs/).
+
+### How do I test whether my software is reproducible?
+
+Build your software once. Add a variation to the build environment which should not influence the output, for example by moving it to another path, and create a second build. Then compare the resulting binaries using the [@diffoscope@](/tools/) tool. Make sure there are no differences. See the [test bench documentation](/docs/test-bench/) for a number of parameters that can be varied.
+
+### Can my favorite language be used to write reproducible software?
+
+#### C
+
+ - Avoid ```__FILE__```.
+ - Avoid ```__DATE__```, ```__TIME__```, and ```__TIMESTAMP__``` (you can also disable them using the flag -D in gcc/clang).
+ - Do not read uninitialized memory (msan, asan) (if your tool is part of a toolchain)
+ - Ensure to not rely on ```readdir()``` order (if your tool is part of a toolchain) - e.g. similar to how ```find | cpio -o``` needs a sort in the middle
+
+#### Python
+
+ - Python does hash randomization. Anything that depends on the value of a hash is not deterministic (e.g. iterating over a hash table). Setting the environment variable ```PYTHONHASHSEED``` can disable this behavior, but the proper fix is not to depend on specific hash values.
+ - Pyc files: you may simply discard .pyc and .pyo files
+
+#### Emacs byte code
+
+### Can my favorite compression tool produce deterministic output?
+
+#### gzip
+
+ - Use option ```-n``` (does not record timestamp)
+ - ```ziptime``` resets timestamps in ZIP files to 2008-01-01, meant for Android APKs
+
+
+#### ar
+
+ - Use option ```D``` ("Operate in deterministic mode").
+
+### Can a multi-threaded producer (e.g. compression, compiler) be reproducible?
+
+Frequently, no. Many multi-threaded software provides non predictable output which results in non reproducibility. Forcing them to run mono/single-threaded ensures the output is predictable.
diff --git a/_faq/user.md b/_faq/user.md
index 18d3102..e9e034b 100644
--- a/_faq/user.md
+++ b/_faq/user.md
@@ -8,6 +8,10 @@ permalink: /faq/user/
 
 TODO: answer
 
-## Why should I care?
+## Why should I care about reproducible builds?
 
 TODO: answer
+
+## Is there any reproducible distribution that I can use today?
+
+Sadly we are not there yet, but multiple distributions are putting a lot of effort to reach that goal. See distributions that are working towards reproducible builds [here](/who/).

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/reproducible-website.git



More information about the Reproducible-commits mailing list