Commit 22598fe6 authored by Mariano Giménez's avatar Mariano Giménez Committed by Chris Lamb
Browse files

feat: Add user stories

- Add user stories data and include user stories in index page
- Update how section and add sidebar
parent 7ba24171
Loading
Loading
Loading
Loading

_data/user-stories.yml

0 → 100644
+17 −0
Original line number Diff line number Diff line
cards:
  - emoji: "🔒"
    title: "Security & Trust"
    description: "It lets users make sure that software hasn't been altered, so it's safe and reliable."
  - emoji: "💻"
    title: "Transparency in Development"
    description: "It makes sure that developers' code always works the same way, which makes the software more consistent and trustworthy."
  - emoji: "🛠️"
    title: "Build Infrastructure Protection"
    description: "Attacks on build systems can affect many users. Reproducible builds detect unauthorized changes to the build process early."
  - emoji: "📜"
    title: "Regulatory Compliance & Licensing"
    description: "It ensures software complies with licenses and industry standards by proving that binaries match their source code."
  - emoji: "🎯"
    title: "Developer Resilience Against Attacks"
    description: "It protects developers from targeted attacks by allowing third-party verification of their software, preventing compromise."
+21 −0
Original line number Diff line number Diff line
<div  class="row justify-content-center text-center">
  <h2 class="text-center mb-4">Why Reproducible Builds Matter</h2>
  <div class="row justify-content-center">
    {% for card in site.data.user-stories.cards %}
    <div class="col-lg-4 col-md-6 col-sm-12 mb-4 d-flex">
      <div class="card h-100 shadow-sm">
        <div class="card-body">
          <div
            class="bg-light d-flex justify-content-center align-items-center p-3 rounded-circle mx-auto mb-3"
            style="width: 50px; height: 50px; font-size: 24px"
          >
            {{ card.emoji }}
          </div>
          <h3 class="card-title">{{ card.title }}</h3>
          <p class="card-text">{{ card.description }}</p>
        </div>
      </div>
    </div>
    {% endfor %}
  </div>
</div>
+69 −85
Original line number Diff line number Diff line
@@ -12,12 +12,10 @@ permalink: /
            <a href="{{ "/" | relative_url }}">
                <img class="mb-4 img-fluid" src="{{ "/assets/images/logo-text-white.png" | relative_url }}" alt="Reproducible Builds" />
            </a>

            <p class="lead mt-5 pt-5 pb-5">
                <strong>Reproducible builds</strong> are a set of software development
                practices that create an independently-verifiable path from source
                to binary&nbsp;code.

                <small class="d-none d-sm-inline">
                    (<a href="{{ "/docs/definition/" | relative_url }}">more</a>)
                </small>
@@ -26,92 +24,78 @@ permalink: /
    </div>
</div>

{% include nav_buttons.html %}

## Why does it matter?

Whilst anyone may inspect the source code of free and open source software for
malicious flaws, most software is distributed pre-compiled with no method to
confirm whether they correspond.

This incentivises attacks on developers who release software, not only via
traditional exploitation, but also in the forms of political influence,
blackmail or even threats of violence.

This is particularly a concern for developers collaborating on privacy or
security software: attacking these typically result in compromising
particularly politically-sensitive targets such as dissidents, journalists and
whistleblowers, as well as anyone wishing to communicate securely under a
repressive regime.

Whilst individual developers are a natural target, it additionally encourages
attacks on build infrastructure as a successful attack would provide access to
a large number of downstream computer systems. By modifying the generated
binaries here instead of modifying the upstream source code, illicit changes
are essentially invisible to its original authors and users alike.

The motivation behind the **Reproducible Builds** project is therefore to allow
verification that no vulnerabilities or backdoors have been introduced during
this compilation process. By promising identical results are always
generated from a given source, this allows multiple third parties to come
to a consensus on a "correct" result, highlighting any deviations as suspect
and worthy of scrutiny.

This ability to notice if a developer or build system has been compromised
then prevents such threats or attacks occurring in the first place, as any
compromise can be quickly detected. As a result, front-liners cannot be
threatened/coerced into exploiting or exposing their colleagues.
<!-- {% include nav_buttons.html %} -->

[Several free software projects]({{ "/who/projects/" | relative_url }})
already, or will soon, provide reproducible builds.
{% include user-stories.html %}

## How?

First, the **build system** needs to be made entirely deterministic:
transforming a given source must always create the same result. For example,
the current date and time must not be recorded and output always has to be
written in the same order.

Second, the set of tools used to perform the build and more generally the
**build environment** should either be recorded or pre-defined.

Third, users should be given a way to recreate a close enough build
environment, perform the build process, and **validate** that the output matches
the original build.

Learn more about [how to make your software build reproducibly…]({{ "/docs" | relative_url }})

## Recent monthly reports

<ul class="list-unstyled">
<div class="container my-5">
    <div class="row">
        <!-- How section -->
        <div class="col-md-8">
            <h2 class="mb-4">How does it work?</h2>
            <ol class="list-unstyled ps-3">
                <li class="d-flex mb-4">
                    <div class="me-3" style="font-size: 1.5rem; color: #1e5b96;">
                        <span class="me-2" style="font-size: 1.5rem; color: #1e5b96">-</span>
                    </div>
                    <div>
                        <strong>Build system:</strong> The build system needs to be entirely deterministic. Transforming a given source must always produce the same result. For example, the current date and time must not be recorded, and the output always has to be written in the same order.
                    </div>
                </li>
                <li class="d-flex mb-4">
                    <div class="me-3" style="font-size: 1.5rem; color: #1e5b96;">
                        <span class="me-2" style="font-size: 1.5rem; color: #1e5b96">-</span>
                    </div>
                    <div>
                        The set of tools used to perform the build and the <strong>build environment</strong> should either be recorded or pre-defined.
                    </div>
                </li>
                <li class="d-flex mb-4">
                    <div class="me-3" style="font-size: 1.5rem; color: #1e5b96;">
                        <span class="me-2" style="font-size: 1.5rem; color: #1e5b96">-</span>
                    </div>
                    <div>
                        Users should be given a way to recreate a close enough build environment, perform the build process, and <strong>validate</strong> that the output matches the original build.
                    </div>
                </li>
            </ol>
            <a href="{{ '/docs' | relative_url }}" class="btn btn-primary mt-3">Learn more</a>
        </div>
        <!-- Sidebar: Recent Reports and News -->
        <div class="col-md-4">
            <div class="p-4 bg-light rounded">
                <h3 class="mb-3">Recent Monthly Reports</h3>
                <ul class="list-unstyled mb-4">
                    {% assign reports = site.reports | sort: 'year, month' | where: 'draft', 'false' | reverse %}
                    {% for x in reports limit: 3 %}
    <li>
                    <li class="mb-2">
                        <span class="text-muted">{{ x.date | date: "%b %-d, %Y" }}</span>:
                        <a href="{{ x.url | relative_url }}">{{ x.title }}</a>
                    </li>
                    {% endfor %}
                </ul>

([See all reports…]({{ "/news/" | relative_url }}))

## Recent news

<ul class="list-unstyled">
                <a href="{{ "/news/" | relative_url }}" class="btn btn-outline-primary btn-sm">See all reports</a>
            </div>
            <div class="p-4 bg-light rounded mt-4">
                <h3 class="mb-3">Recent News</h3>
                <ul class="list-unstyled mb-4">
                    {% assign posts = site.posts | where: 'draft', 'false' %}
                    {% for x in posts limit: 3 %}
    <li>
                    <li class="mb-2">
                        <span class="text-muted">{{ x.date | date: "%b %-d, %Y" }}</span>:
                        <a href="{{ x.url | relative_url }}">{{ x.title }}</a>
                    </li>
                    {% endfor %}
                </ul>

([See all…]({{ "/news/" | relative_url }}))

                <a href="{{ "/news/" | relative_url }}" class="btn btn-outline-primary btn-sm">See all news</a>
            </div>
        </div>
    </div>
</div>

{% assign sponsors = site.data.sponsors.platinum | sort: 'name' %}
{% if sponsors.size != 0 %}

## Sponsors

We are proud to be [sponsored by]({{ "/sponsors/" | relative_url }}):