Skip to content

Sabu

Sabu is a microservices-based software framework for developing focused carbon emissions workflows.

The framework is designed and developed by Alireza Adli. Its purpose is to organize carbon emissions software into independent, reusable, and deployable services. Each service has a focused responsibility and can be developed, tested, packaged, and deployed with clear boundaries.

Sabu currently focuses on building-related carbon emissions workflows, with the most complete implementation provided by jug_lca_buildings.

Current focus

The current public implementation is centered on jug_lca_buildings, a service for calculating building-level embodied and end-of-life carbon emissions from GeoJSON building data.

The broader Sabu architecture is being extended gradually. The same design direction is planned next for:

  • jug_gis_cities
  • jug_gis_validation

The planned jug_sim_buildings service is not yet developed.

Main repositories

Sabu is organized through two public repositories:

Repository Purpose
sabu Main framework repository containing services, shared libraries, contracts, and deployment files
sabu-test-data-and-examples Companion repository containing datasets, examples, results, and benchmark materials

The main repository contains the framework implementation. The companion repository demonstrates how Sabu services can be used with test data, example commands, and generated outputs.

Main components

Sabu contains two main types of components:

Component type Description
Services Independently developed and deployable runtime units, such as jug_lca_buildings
Shared libraries Reusable Python packages imported by services, such as sabu-chassis and citygisoo

Services expose user-facing functionality. Shared libraries provide reusable internal capabilities and are not deployed as standalone services.

Naming and philosophy

The name Sabu comes from an older Persian word for jug. The naming was inspired by a line from Rumi:

گر بریزی بحر را در کوزه‌ای
چند گنجد قسمت یک روزه‌ای

A close translation is:

If you pour the sea into a jug, how much can it hold? Only one day’s share.

This idea reflects the design philosophy behind Sabu. A complex software system should not be forced into a single container of responsibility. Instead, the design should be divided into multiple focused services, each with a clear purpose and boundary.

Sabu services follow this naming convention:

jug_domain_specifics

In this convention, jug means service.

Examples include:

jug_lca_buildings
jug_gis_cities
jug_gis_validation
jug_sim_buildings

Although the package names use the jug_ prefix, this documentation refers to them as services in normal prose.

Where to start

New users should begin with:

  1. Getting Started
  2. Architecture Overview
  3. Services Overview
  4. Libraries Overview
  5. Examples and Data

For the first working service, start with jug_lca_buildings.