<p>So having a deterministic/reproducible build system is more of a software development practice than it is a single piece of software like Gitian. There are a variety of projects that try to implement this practice which are listed below: </p>

<p><a href="https://reproducible-builds.org/who/" rel="nofollow">https://reproducible-builds.org/who/</a></p>

<p>Gitian handles the deterministic building through a virtual machine, and then the uploading and comparison of signatures through git. However, deterministic building is impossible to automate for all set of software, due to the wide range of things that can cause the compiled code to be different (for example read <a href="https://wiki.debian.org/ReproducibleBuilds/Howto" rel="nofollow">https://wiki.debian.org/ReproducibleBuilds/Howto</a> or <a href="https://blog.torproject.org/blog/deterministic-builds-part-two-technical-details" rel="nofollow">https://blog.torproject.org/blog/deterministic-builds-part-two-technical-details</a> where they describe specific issues for reproducible builds in their particular projects). So at the end of the day, part of the reproducible build process is manually hunting down all the things that can cause the binaries to be different and fixing it. </p>

<p>So if you have a project like Debian with thousands of software packages and authors, part of the reproducible build system must be education and <a href="https://tests.reproducible-builds.org/debian/reproducible.html" rel="nofollow">statistic tracking</a>.</p>

<p>For smaller projects, what you need depends on the software libraries you are working with and what OS's you are distributing for. For example, Debian has their own <a href="https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain" rel="nofollow">reproducible build tools</a>. You could use <a href="https://diffoscope.org/" rel="nofollow">https://diffoscope.org/</a> to identify specific differences in your binaries. </p>

CC BY-SA 3.0
2016-06-30T18:13:53.413Z
2016-06-30T22:26:03.727Z
2016-06-30T22:26:03.727Z
k kurokawa
<p>I like how Bitcoin Core uses Gitian to make their builds deterministic. But Gitian is also a really complicated workaround. Is there any research being done into alternatives for deterministic builds?</p>

<development><bitcoin-core-development><gitian>
Are there alternatives to Gitian?
Кира Кисловская
# Are there alternatives to Gitian?

(Asked by: username_0 on 2016-06-27)

I like how Bitcoin Core uses Gitian to make their builds deterministic. But Gitian is also a really complicated workaround. Is there any research being done into alternatives for deterministic builds?

**Tags:** development, bitcoin-core-development, gitian


---

## 1 answers

### Answer by username_1 on 2016-06-30. Score: 3

So having a deterministic/reproducible build system is more of a software development practice than it is a single piece of software like Gitian. There are a variety of projects that try to implement this practice which are listed below:

<https://reproducible-builds.org/who/>

Gitian handles the deterministic building through a virtual machine, and then the uploading and comparison of signatures through git. However, deterministic building is impossible to automate for all set of software, due to the wide range of things that can cause the compiled code to be different (for example read <https://wiki.debian.org/ReproducibleBuilds/Howto> or <https://blog.torproject.org/blog/deterministic-builds-part-two-technical-details> where they describe specific issues for reproducible builds in their particular projects). So at the end of the day, part of the reproducible build process is manually hunting down all the things that can cause the binaries to be different and fixing it.

So if you have a project like Debian with thousands of software packages and authors, part of the reproducible build system must be education and [statistic tracking](https://tests.reproducible-builds.org/debian/reproducible.html).

For smaller projects, what you need depends on the software libraries you are working with and what OS's you are distributing for. For example, Debian has their own [reproducible build tools](https://wiki.debian.org/ReproducibleBuilds/ExperimentalToolchain). You could use <https://diffoscope.org/> to identify specific differences in your binaries.


---

