# Juju > Juju is an open source orchestration engine for deploying, integrating, and managing applications across Kubernetes, VMs, and bare metal using software operators called charms. 2026 CC-BY-SA, Canonical Ltd. ## Pages in this subsection - [Juju contributor documentation](https://documentation.ubuntu.com/juju/3.6/contributor.md): Learn how to contribute to Juju development with comprehensive guides and technical references for contributors. - [How-to guides](https://documentation.ubuntu.com/juju/3.6/contributor/howto.md): Explore step-by-step how-to guides for Juju developers covering testing, debugging, database management, and cross-architecture development. - [Compile and run Juju agents on different architectures](https://documentation.ubuntu.com/juju/3.6/contributor/howto/compile-and-run-juju-agents-on-different-architectures.md): Build and deploy Juju agents across multiple architectures using local simplestreams repositories for cross-platform testing. - [Create a unit test suite](https://documentation.ubuntu.com/juju/3.6/contributor/howto/create-a-unit-test-suite.md): Build unit test suites for Juju with proper setup and teardown logic using gocheck test patterns. - [Create a new MongoDB collection](https://documentation.ubuntu.com/juju/3.6/contributor/howto/create-new-mongo-db-collection.md): Add new MongoDB collections to Juju's state package, define entity structures, and implement proper document validation patterns. - [Debug a Dqlite core dump issue](https://documentation.ubuntu.com/juju/3.6/contributor/howto/debug-a-dqlite-core-dump-issue.md): Diagnose and debug Dqlite core dump issues in Juju 3.2+, including validation checks and backtrace collection for issue resolution. - [Manage MongoDB](https://documentation.ubuntu.com/juju/3.6/contributor/howto/manage-mongodb.md): Configure MongoDB profiling, optimize query performance, and manage database operations for Juju development and debugging. - [Merge forward](https://documentation.ubuntu.com/juju/3.6/contributor/howto/merge-forward.md): Merge bug fixes and patches forward across Juju version branches, handling conflicts and maintaining version compatibility. - [Write a unit test](https://documentation.ubuntu.com/juju/3.6/contributor/howto/write-a-unit-test.md): Learn how to write unit tests for Juju using gocheck, including creating test files, suites, and implementing effective test patterns. - [Write an integration test](https://documentation.ubuntu.com/juju/3.6/contributor/howto/write-an-integration-test.md): Create integration tests for Juju using bash test suites, including bootstrapping, test execution, and teardown procedures. - [Write tests](https://documentation.ubuntu.com/juju/3.6/contributor/howto/write-tests.md): How to write tests for Juju using go test and gocheck, including unit and integration testing best practices for contributors. - [Reference](https://documentation.ubuntu.com/juju/3.6/contributor/reference.md): Access technical reference documentation for Juju developers including architecture, workers, agents, and testing frameworks. - [Agent](https://documentation.ubuntu.com/juju/3.6/contributor/reference/agent.md): Learn about Juju agents, their types, dependency engines, and how they manage workers across different deployment environments. - [Juju architectural overview](https://documentation.ubuntu.com/juju/3.6/contributor/reference/architectural-overview.md): Explore Juju's architecture including agents, workers, models, and distributed system design for new and experienced contributors. - [Binary container agent](https://documentation.ubuntu.com/juju/3.6/contributor/reference/binary-containeragent.md): Understand the containeragent binary and containerAgentCommand for spawning unit agents in Kubernetes deployments with Juju. - [Catacomb package](https://documentation.ubuntu.com/juju/3.6/contributor/reference/catacomb-package.md): Utilize the catacomb package for binding worker lifetimes and tracking errors across groups of related workers in Juju development. - [Conventional commits](https://documentation.ubuntu.com/juju/3.6/contributor/reference/conventional-commits.md): Follow conventional commit standards for Juju contributions, including commit types, scopes, and proper formatting guidelines. - [CVEs](https://documentation.ubuntu.com/juju/3.6/contributor/reference/cve.md): Navigate Juju's CVE security advisory process, from reporting vulnerabilities to private releases and embargo management. - [Dependency package](https://documentation.ubuntu.com/juju/3.6/contributor/reference/dependency-package.md): Manage worker dependencies and shared resources using the dependency package's engine and manifold constructs in Juju architecture. - [Entity lifecycle](https://documentation.ubuntu.com/juju/3.6/contributor/reference/entity-lifecycle.md): Understand entity lifecycle states (Alive, Dying, Dead) for Juju entities, including machines, units, applications, relations. - [High Availability (HA)](https://documentation.ubuntu.com/juju/3.6/contributor/reference/high-availability.md): Configure Juju high availability with multiple state machines, MongoDB replicaset mode, and voting member management strategies. - [Testing](https://documentation.ubuntu.com/juju/3.6/contributor/reference/testing.md): Understand Juju's testing requirements and frameworks, covering unit testing and integration testing strategies for contributors. - [Integration testing](https://documentation.ubuntu.com/juju/3.6/contributor/reference/testing/integration-testing.md): Write integration tests for Juju using bash scripts, test suites, and includes for comprehensive end-to-end testing. - [Integration test suite](https://documentation.ubuntu.com/juju/3.6/contributor/reference/testing/integration-testing/integration-test-suite.md): Build integration test suites for Juju with organized setup, teardown logic, and reusable test includes for bash-based testing. - [Test include](https://documentation.ubuntu.com/juju/3.6/contributor/reference/testing/integration-testing/test-include.md): Utilize bash test includes for Juju integration testing, including check functions, cleanup utilities, and juju command helpers. - [Unit testing](https://documentation.ubuntu.com/juju/3.6/contributor/reference/testing/unit-testing.md): Learn about unit testing in Juju with gocheck package, including test suites, checkers, and util suite composition patterns. - [Checker](https://documentation.ubuntu.com/juju/3.6/contributor/reference/testing/unit-testing/checker.md): Use gocheck checkers for assertions in Juju unit tests, including IsNil, Equals, DeepEquals, and ErrorMatches patterns. - [Unit test suite](https://documentation.ubuntu.com/juju/3.6/contributor/reference/testing/unit-testing/unit-test-suite.md): Create structured unit test suites with distinct setup and teardown logic using util suite composition for Juju testing. - [Util suite](https://documentation.ubuntu.com/juju/3.6/contributor/reference/testing/unit-testing/util-suite.md): Leverage util suites like BaseSuite and FakeHomeSuite for structured test setup, teardown, and environment isolation in Juju. - [Tomb package](https://documentation.ubuntu.com/juju/3.6/contributor/reference/tomb-package.md): Implement the tomb package's Kill and Wait methods for managing worker goroutine lifecycles in Juju development. - [Worker](https://documentation.ubuntu.com/juju/3.6/contributor/reference/worker.md): Understand Juju workers, their interface implementation, and role in the dependency engine for managing concurrent operations. - [Worker interface](https://documentation.ubuntu.com/juju/3.6/contributor/reference/worker-interface.md): Explore the Go worker interface defining Kill() and Wait() methods implemented by all Juju workers for lifecycle management. - [Worker package](https://documentation.ubuntu.com/juju/3.6/contributor/reference/worker-package.md): Learn about the Juju worker package providing utilities, interfaces, and dependency management for long-lived worker goroutines in Juju. - [Writing workers](https://documentation.ubuntu.com/juju/3.6/contributor/reference/writing-workers.md): Learn about best practices for writing Juju workers, including tomb usage, channel management, and goroutine lifecycle control patterns. ## Optional - [Top-level llms.txt](https://documentation.ubuntu.com/juju/3.6/llms.txt): Complete documentation index.