Skip to main content

Current generation only

The rule​

Every component is current-generation, cloud-native open source, so nothing is carried along for compatibility with a 2010s stack. The platform is built from parts that are actively developed and fit a Kubernetes cluster. New components must meet the same bar.

What that means today​

Areastardelt usesWhat it leaves behind
StorageS3 object storage (SeaweedFS, or your own S3)HDFS
TablesApache IcebergHive-style directories of files
CatalogIceberg REST catalog (Lakekeeper, written in Rust)the Hive Metastore
ComputeSpark Connect (client and server)spark-submit on YARN
SQLTrinoSQL on MapReduce
StreamingKafka in KRaft mode, installed by an operatorZooKeeper
OrchestrationAirflow 3cron files and XML workflows
IdentityOIDC (Keycloak or your own provider), OpenFGA relationships, OPA policiesKerberos, per-service user lists
SecretsOpenBao and External Secretspasswords in config files
DatabasesPostgreSQL run by CloudNativePGhand-managed database VMs
Control planeNova (Rust/axum API, React UI) and an operator in Rust (kube-rs)install scripts on VMs

The test for a new component​

All of these must hold, alongside the license policy:

  1. a permissive license (see the license policy);
  2. actively developed: a release in the last 6 months, and contributions from outside one person or company;
  3. Kubernetes-native: runs as containers, is configured declaratively, keeps its state in a database or object storage we already run;
  4. open standards at the edges: Iceberg / Iceberg REST, S3, OIDC, OpenLineage, Arrow where it applies;
  5. no dependency on HDFS, YARN, ZooKeeper, the Hive Metastore or Kerberos, and no Java runtime older than 21 in images we build.

What we do when something ages​

We replace it in a later milestone, through an issue labelled architecture.