Skip to content

Commit 66e6a01

Browse files
committed
feat: add introductory blog post
1 parent 7216172 commit 66e6a01

26 files changed

+19303
-0
lines changed

docs/.gitignore

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
node_modules
2+
\#.*
3+
*~
4+
.docusaurus
5+
build/

docs/README.md

Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# Website
2+
3+
This website is built using [Docusaurus](https://docusaurus.io/), a modern static website generator.
4+
5+
### Installation
6+
7+
```
8+
$ yarn
9+
```
10+
11+
### Local Development
12+
13+
```
14+
$ yarn start
15+
```
16+
17+
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
18+
19+
### Build
20+
21+
```
22+
$ yarn build
23+
```
24+
25+
This command generates static content into the `build` directory and can be served using any static contents hosting service.
26+
27+
### Deployment
28+
29+
Using SSH:
30+
31+
```
32+
$ USE_SSH=true yarn deploy
33+
```
34+
35+
Not using SSH:
36+
37+
```
38+
$ GIT_USER=<Your GitHub username> yarn deploy
39+
```
40+
41+
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
---
2+
slug: kick-off-antithesis
3+
title: Cardano / Antithesis Project Kick-off
4+
authors: [abailly]
5+
tags: [infra]
6+
---
7+
8+
Today, April 2nd, 2025 was the date of the official kick-off for the Cardano/Antithesis project. Already involved in testing and monitoring the Cardano network infrastructure, the [Cardano Foundation](https://cardanofoundation.org) has decided to dedicate resources to evaluate if and how [Antithesis](https://antithesis.com) could increase the reach and level of quality assurance the network needs.
9+
10+
This post introduces the project, its motivations, scope, ambitions, and timeline.
11+
12+
<!-- truncate -->
13+
14+
## Why this project?
15+
16+
The teams implementing the [cardano-node](https://github.com/IntersectMBO/cardano-node) have developed over the years an extensive set of tools, including sophisticated [simulation](https://hackage.haskell.org/package/io-sim) and [model-based](https://hackage.haskell.org/package/quickcheck-dynamic) testing systems
17+
18+
Testing distributed systems at scale is a hard problem, poses unique challenges in terms of tools, scenarios generation, reproducibility, failure analysis, and it requires deep expertise and a significant investment to be effective.
19+
20+
As exemplified by the continued successes of [Jepsen](https://jepsen.io) reports over the past decade, rigorous system-level blackbox testing with fault injections and sophisticated traces analysis can uncover subtle concurrency bugs and security vulnerabilities. However, such tests can quickly be expensive to setup even with virtualised infrastructure, take a lot of time to execute, and are hard to reproduce.
21+
22+
Simulation testing, whereby a piece of software is tested in an environment which _simulates_ its actual execution target to provide better control and allow exploring a lot of scenarios including fault injections, is a quite old technique. The success the [FoundationDB](https://www.foundationdb.org) team had applying this technique sparked the development of [Antithesis](https://antithesis.com), a generic platform for simulation testing of distributed systems.
23+
24+
As the ecosystem grows to include new and different "nodes" in the network like [Dolos](https://github.com/txpipe/dolos), [Dingo](https://github.com/blinklabs-io/dingo), [Amaru](https://github.com/pragma-org/amaru), and many tools and systems building on Cardano core infrastructure, the need arises to investigate how to provide similar system-level testing tools in a language-agnostic way, tools that could be used by the whole community to investigate more scenarios in a more diverse environment.
25+
26+
## What is Antithesis?
27+
28+
In short, Antithesis is a platform combining:
29+
30+
1. A _deterministic hypervisor_ that can run nearly arbitrary pieces of software, emulating the full complexity of the underlying operating system and network, including the ability to simulate the passing of time,
31+
2. _Property-based testing_ and _fuzzing_ to deterministically generate complex test scenarios and check observable properties of the system-under-test, with the ability to _reproduce_ failures,
32+
3. Analysis and reporting tools to help troubleshoot issues signaled by tests run.
33+
34+
The team is responsible for packaging the system-under-test as a "cluster" of containers running and interacting within the simulated environment provided by the platform, for providing test clients and scenarios to explore, and for defining "interesting" properties to verify.
35+
36+
Here is a diagram from [antithesis' website](https://antithesis.com/product/what_is_antithesis/) summarizing how the platform works:
37+
38+
![](https://antithesis.com/img_opt/igPT-jsSII-2034.webp)
39+
40+
## What is this project about?
41+
42+
While we strongly believe in the effectiveness of this approach especially as new components get developed, network grows, and new features are added to the protocol, and Antithesis has already been adopted by industry leaders like Confluent or Ethereum, we want to understand how this investment can yield value to the Cardano community _as a whole_ in a perennial way.
43+
44+
The long-term goal of this project is therefore to collectively build and maintain a testing infrastructure that can benefit the ecosystem and most notably those parties involved in the development and maintenance of the Cardano infrastructure: Nodes, protocols, and related tools. We envision this infrastructure to be governed through an open and transparent process which is yet to be defined, and to be funded by the _community_ through whatever channels seem the most effective, whether it is grants, dedicated treasury withdrawals, infrastructure budget, contributions and fees...
45+
46+
In the short-term however, we need to experiment with the platform, understand what are its capabilities and limits, what it requires from the system-under-test in order to be the most effective, how powerful it is to find and troubleshoot bugs and security vulnerabilities, and more generally openly and candidly build a strong case for the governing bodies of the Cardano ecosystem to decide whether or not this investment shall be pursued.
47+
48+
The phases and coarse-grained timeline of the project are documented in the [README](https://github.com/cardano-foundation/antithesis), and this blog post marks the beginning of the _Proof-of-Concept_ period during which will collaborate with Antithesis to assess the tool.
49+
50+
## Why should you care?
51+
52+
As already stated, the goal of this project is to evaluate whether the Cardano community, as a whole, could benefit from the continuous availability of Antithesis as a testing infrastructure. This means that if you have some expertise on Cardano, its components, the network, the protocol, and if you have ideas on properties we should be testing, scenarios we should investigate, faults and adversarial behaviours we should be prepared to face, we would be more than happy to hear from you!
53+
54+
Concretely, this means that we expect from _you_ as a Cardano enthusiast to help us with:
55+
56+
* Improving infrastructure code (eg. docker images, containers, compose files) we use to run tests, and defining particular setups to test,
57+
* Defining and designing [test](https://antithesis.com/docs/test_templates/) that explore "interesting" scenarios,
58+
* Stating and refining properties that need to old, in specific or generic cases,
59+
* Documenting the expected behaviour in such a way that can easily lead to test generations, for example under the umbrella of teh [Cardano Blueprint](https://github.com/cardano-scaling/cardano-blueprint) project,
60+
* Troubleshooting bugs and security vulnerabilities, following our [Security policy](https://github.com/cardano-foundation/antithesis/security/policy),
61+
* ...

docs/blog/authors.yml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
abailly:
2+
name: Arnaud Bailly
3+
title: Project Lead
4+
url: https://github.com/abailly
5+
image_url: img/abailly-avatar.jpeg
6+
socials:
7+
github: abailly

docs/blog/tags.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
infra:
2+
label: Infrastructure
3+
permalink: /infra
4+
description: Setting up infrastructure for Antithesis run

docs/docusaurus.config.ts

Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
import {themes as prismThemes} from 'prism-react-renderer';
2+
import type {Config} from '@docusaurus/types';
3+
import type * as Preset from '@docusaurus/preset-classic';
4+
5+
// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)
6+
7+
const config: Config = {
8+
title: 'Tartarus',
9+
tagline: "ch'i' non ti lascerò nel mondo basso.",
10+
favicon: 'img/cardano-ada-logo.svg',
11+
12+
// Set the production url of your site here
13+
url: 'https://cardano-scaling.github.io/',
14+
// Set the /<baseUrl>/ pathname under which your site is served
15+
// For GitHub pages deployment, it is often '/<projectName>/'
16+
baseUrl: '/antithesis',
17+
18+
// GitHub pages deployment config.
19+
// If you aren't using GitHub pages, you don't need these.
20+
organizationName: 'cardano-scaling', // Usually your GitHub org/user name.
21+
projectName: 'antithesis', // Usually your repo name.
22+
23+
onBrokenLinks: 'throw',
24+
onBrokenMarkdownLinks: 'warn',
25+
26+
// Even if you don't use internationalization, you can use this field to set
27+
// useful metadata like html lang. For example, if your site is Chinese, you
28+
// may want to replace "en" with "zh-Hans".
29+
i18n: {
30+
defaultLocale: 'en',
31+
locales: ['en'],
32+
},
33+
34+
presets: [
35+
[
36+
'classic',
37+
{
38+
docs: false,
39+
blog: {
40+
routeBasePath: '/',
41+
showReadingTime: true,
42+
feedOptions: {
43+
type: ['rss', 'atom'],
44+
xslt: true,
45+
},
46+
// Please change this to your repo.
47+
// Remove this to remove the "edit this page" links.
48+
editUrl:
49+
'https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/',
50+
// Useful options to enforce blogging best practices
51+
onInlineTags: 'warn',
52+
onInlineAuthors: 'warn',
53+
onUntruncatedBlogPosts: 'warn',
54+
},
55+
theme: {
56+
customCss: './src/css/custom.css',
57+
},
58+
} satisfies Preset.Options,
59+
],
60+
],
61+
62+
themeConfig: {
63+
// Replace with your project's social card
64+
image: 'img/docusaurus-social-card.jpg',
65+
footer: {
66+
style: 'dark',
67+
links: [
68+
{
69+
title: 'Community',
70+
items: [
71+
{
72+
label: 'Discord',
73+
href: 'https://discord.gg/quVqGUrW',
74+
},
75+
],
76+
},
77+
{
78+
title: 'More',
79+
items: [
80+
{
81+
label: 'GitHub',
82+
href: 'https://github.com/cardano-scaling/antithesis',
83+
},
84+
],
85+
},
86+
],
87+
copyright: `Copyright © ${new Date().getFullYear()} Cardano Foundation, Inc. Built with Docusaurus.`,
88+
},
89+
prism: {
90+
theme: prismThemes.github,
91+
darkTheme: prismThemes.dracula,
92+
},
93+
} satisfies Preset.ThemeConfig,
94+
};
95+
96+
export default config;

0 commit comments

Comments
 (0)