import { Callout } from "zudoku/ui/Callout";

# Comparison with BcContainerHelper, AL-Go and ALOps

A fair, source-backed comparison of ALbuild against its three natural neighbours in the Business Central DevOps space.

<Callout type="info" title="The four tools are not the same kind of thing">
A feature matrix would be misleading without saying so, they sit at different layers:

- **BcContainerHelper**: a free, MIT-licensed PowerShell *library* from Microsoft. The foundation layer (containers, artifacts, compile, publish, test, sign). It does **not** orchestrate a pipeline on its own. Microsoft is phasing out BcContainerHelper *inside AL-Go*, with support ending **2027-10-01**.
- **AL-Go for GitHub**: Microsoft's free, plug-and-play DevOps *templates and actions*. **GitHub Actions only.** Built on BcContainerHelper today.
- **ALOps**: Hodor's **commercial** product (created by Eric "waldo" Wauters). A set of Azure DevOps pipeline tasks (plus GitHub Actions v3). Marketed as "no PowerShell required."
- **ALbuild**: our PowerShell module: a reusable command library **plus** an Azure DevOps task extension, YAML templates and a local pipeline runner. **BcContainerHelper-free.** Has a free tier and licensed tiers.

So ALbuild's closest direct competitor is **ALOps**; AL-Go is the free GitHub-native alternative.
</Callout>

## At a glance

| | BcContainerHelper | AL-Go for GitHub | ALOps | **ALbuild** |
| --- | --- | --- | --- | --- |
| **Type** | PowerShell library | GitHub templates + actions | Azure DevOps extension (+ GitHub) | PowerShell module + AzDO extension |
| **Vendor** | Microsoft | Microsoft | Hodor (waldo) | 365 business development |
| **License / cost** | MIT, free | Free | Commercial (30-day trial) | Free tier + licensed tiers |
| **Primary CI platform** | Any (you orchestrate) | GitHub Actions only | Azure DevOps (+ GitHub Actions v3) | Azure DevOps |
| **Container engine dependency** | BcContainerHelper itself | BcContainerHelper (→ deprecating) | Own engine | Own engine (BcContainerHelper-free) |
| **AI-agent surface** | None | None | None | CLI with `--json`, MCP server, AL interpreter |

## Where ALbuild genuinely leads

These are differentiators backed by code, not marketing:

- **No BcContainerHelper dependency.** The entire container stack is reimplemented. With Microsoft ending BcContainerHelper support inside AL-Go on 2027-10-01, not depending on it is a strategic advantage.
- **A real transitive dependency resolver with a lock file.** [`Resolve-BcDependencies`](../powershell-module/feeds#resolve-bcdependencies) is a backtracking constraint solver producing `dependencies.lock.json`, none of the three competitors offer a true lock-file model.
- **Mixed dependency sources in one resolver.** NuGet v3 **and** Azure DevOps Universal Packages **and** committed local `.app` files, with Microsoft first-party apps pinned to the target build.
- **Container-less *and* container builds** from one command ([`Invoke-BcCompiler`](../powershell-module/apps#invoke-bccompiler)), selectable per run.
- **A local pipeline runner.** [`Invoke-ALbuildPipeline`](../powershell-module/pipeline) executes the same YAML templates on a developer machine, neither AL-Go nor ALOps offer this.
- **Race-safe versioning.** [`Invoke-BcBuildVersionStamp`](../powershell-module/core#invoke-bcbuildversionstamp) claims the build version via a git compare-and-swap branch push, robust under parallel builds.
- **Azure DevOps-first with V1 task compatibility.** All legacy V1 tasks are reproduced with deprecation warnings, so existing pipelines migrate incrementally.
- **Built for AI agents, not merely usable by them.** Three things none of the others offer: a
  cross-platform [CLI](../cli/index) with machine-readable `--json` on every command and stable
  error codes, an [MCP server](../mcp-server/index) that hands an assistant the same toolchain the
  pipeline uses, and [`albuild probe`](../cli/probe), an AL interpreter that evaluates expressions
  and procedure calls **in under a second with no container at all**. For an agent iterating on
  logic, that is the difference between a feedback loop measured in seconds and one measured in
  minutes.
- **Code coverage with an honest denominator.** [Coverage](code-coverage) is measured against the
  executable lines in your own AL source, not against the subset Business Central happens to report,
  and it renders in the VS Code gutter as well as in the pipeline.

## Honest weaknesses

Stated plainly, because the comparison is only useful if it is fair:

- **Maturity & ecosystem.** ALbuild is far younger than BcContainerHelper, AL-Go and ALOps, with a smaller community and less third-party content.
- **Azure DevOps only, no GitHub Actions.** Teams on GitHub are served by AL-Go (free) or ALOps (v3).
- **Key deployment features are behind a paid license** (runtime packages, AppSource submission, on-prem deployment, environment provisioning). AL-Go offers the AppSource/PTE/environment equivalents for free.
- **A second AL engine is a fidelity risk.** [`albuild probe`](../cli/probe) reimplements AL
  semantics, so it can in principle disagree with Business Central. It is built to refuse rather
  than guess, and a differential harness runs the same AL through both engines to catch any
  divergence, but it remains a fast pre-check and never a substitute for running the real tests.
- **Not Microsoft's strategic direction.** AL-Go is Microsoft's first-party DevOps path for BC.

## Bottom line

- **On GitHub, for free, with Microsoft backing** → AL-Go for GitHub.
- **On Azure DevOps, commercial, mature, "no PowerShell"** → ALOps.
- **As a foundational library to build your own automation** → BcContainerHelper.
- **On Azure DevOps, when you want a BcContainerHelper-free stack, reproducible dependency resolution with a lock file, mixed NuGet/Universal/local sources, and a local pipeline runner** → **ALbuild**.
- **When an AI agent is doing a meaningful share of the AL work** → **ALbuild**, for the JSON-first CLI, the MCP server and container-less probing.

## Sources

- [BcContainerHelper repository](https://github.com/microsoft/navcontainerhelper)
- [Deprecating BcContainerHelper (support ends 2027-10-01)](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/al-go/algo-deprecating-bccontainerhelper)
- [Overview of AL-Go for GitHub](https://learn.microsoft.com/en-us/dynamics365/business-central/dev-itpro/al-go/algo-overview)
- [AL-Go repository](https://github.com/microsoft/AL-Go)
- [ALOps documentation](https://docs.alops.be/)

> Competitor capabilities reflect public sources and evolve over time; verify against the linked documentation before relying on a specific cell.
