Aurora DX Introduction
Aurora Developer Experience (aurora-dx)
is a dedicated experience on top of Aurora that features development tools and integrations for developers. Unlike traditional Linux distributions, Aurora heavily embraces containerization and requests that you do not install your development tools directly on the host.
Scope of Development Tools
- Your Home directory isolated from system files (Homebrew)
- A container (Distrobox, Devcontainers)
This approach makes managing dependencies safer by posing less risk by breaking your operating system installation. The Aurora maintainers will not dictate on how you develop, but will take away the footguns that will break your machine and ultimately your workflow. Aurora-DX consists of the following features that provide a great developer experience:
- Integration of QEMU and KVM for an easy virtualization experience
- Preinstalled tools and configurations so you can get started quickly, like Visual Studio Code and Devcontainer Integration
- Convenient ways to install your favorite tools like Jetbrains Toolbox using
ujust
commands
Enable Developer Mode
To enable Developer Mode from a Vanilla Aurora Installation, type in ujust devmode
and follow the prompts in your terminal. The assistant will look something like this:
After enabling Developer Mode, you need to add yourself to the right groups.
This can be done with ujust dx-group
and requires a logout and a login after that. And you're done, you now have docker and other awesome tools at your disposal, ready to be used!
Features
Visual Studio Code with Docker
Visual Studio Code is included in the image as the default IDE. It comes with the devcontainers extension already installed. It's the recommended developer experience, so start here if you're new to containerized development!
- Dev Containers Documentation - you can skip most of the installation instructions and go directly to the tutorial
- Dev Containers Specification
- Beginner's Series to: Dev Containers - great introductory tutorial from the VS Code YouTube channel
The most current Docker Engine is included by default and is set up to be the default container runtime for vscode. Using docker compose is also a great way to get started in container development and is an option if devcontainers don't fit your style.
DevPod
DevPod is an open source tool used to create reproducible developer environments. Each developer environment runs in a separate container and is specified through a devcontainer.json
file. It's like Codespaces but is open-source, client-only, and unopinionated: it works with any IDE and lets you use any cloud, Kubernetes, or even local docker
environment.
Check out this talk from Rich Burroughs:
Podman and Podman Desktop
Podman Desktop is included to provide container management. Check out the Podman Desktop documentation for more information. All the upstream podman
tools are included. This is the default system container runtime and is the recommended developer configuration that Fedora ships with.
Though Aurora defaults to docker and vscode for development, all of the Fedora upstream tools are included for those who prefer that experience.
Built-in Performance Tooling
Sysprof is included as a systemwide performance profiler. As well as Brendan Gregg's recommended CLI tools:
bcc
,bpftrace
,iproute2
,nicstat
,numactl
,sysprof
,sysstat
,tiptop
,trace-cmd
, andutil-linux
Thanks to Ubuntu and Canonical for the detailed specification and rationale. We hope that the inclusion of performance tools will lead to better upstream software.
Quality of Life Improvements
- Cockpit for local and remote management
- A collection of well-curated monospace fonts
- Tailscale for VPN
- Just task runner for automation tasks
fish
andzsh
available as optional shells
Pet Containers
Pet containers are available as interactive terminals via distrobox. Manage these via the included DistroShelf application.
Use DistroShelf's interface to create your own pet containers from whichever distribution is on the list:
For CLI warriors you can manage your containers with the Terminal's built-in container support:
The included Terminal includes a host terminal so that you can quickly switch between containers and the host.
- The default terminal is Ptyxis, which includes built in integration of distrobox containers. It is aliased as "Terminal" in the menu. It is mapped to Ctrl-Alt-Enter by default for quick launch
- Podman Desktop - Containers and Kubernetes for application developers
- Pods is also a great way to manage your containers graphically
Other Tooling
JetBrains
ujust jetbrains-toolbox
will fetch and install the JetBrains Toolbox application, which will manage the installation of the JetBrains set of tools. This application will handle installation, removal, and upgrade of the JetBrains products, and is handled completely in your home directory, independent of the operating system image. We do not recommend using the JetBrains flatpaks.
- Check the JetBrains documentation for integrating those tools with the podman runtime.
- Check out how to setup JetBrains with devcontainers
- Uninstallation instructions
The JetBrains blog also has more information on JetBrains Dev Containers support:
DevPod also has support for JetBrains:
Neovim
brew install neovim devcontainer
then follow these directions for a devcontainer setup:
Kubernetes and other Cloud Native Tooling
ujust install-k8s-dev-tools
to get started:
- kind - Run a Kubernetes cluster on your machine. Run
kind create cluster
on the host to get started! - kubectl - Administer Kubernetes Clusters
- k9s and kubectx
- Dagger - an open-source runtime for composable workflows. This is a powerful tool that is a perfect match for Aurora systems. (aka people are talking about this one.)
If you feel there's a tool that should be included by default, send a PR to this file. But let's not overdo it.
Ramalama and other AI tools
Ramalama can be installed via ujust install-ai-tools
for local management and serving of AI models. Check the AI documentation for more information.
Virtualization and Container Runtimes
- virt-manager and associated tooling (KVM, qemu)
- Incus provides system containers