Skip to main content

General Questions

Maybe. Maybe not. There is no plan.SerenityOS is a hobby project driven by what contributors find interesting and fun to implement. There’s no formal roadmap or feature guarantee.
Maybe someday. Maybe never. If you want to see something happen, you can do it yourself!
SerenityOS is built by volunteers who implement features they’re interested in. The best way to get a feature added is to contribute it yourself or convince someone else it would be fun to work on.
There are no ISO images. This project does not cater to non-technical users.SerenityOS is designed for developers and requires building from source. If you’re looking for a ready-to-use operating system, this isn’t it.
Simple! Just refer to the build instructions.Building SerenityOS is straightforward if you have the right development tools installed. The quick start guide walks you through the entire process.

Building & Development

If it builds on CI, it should build for you too. Try these steps:
1

Rebuild the Toolchain

The toolchain may need to be rebuilt:
Meta/serenity.sh rebuild-toolchain
2

Try a Clean Repository

If rebuilding the toolchain doesn’t help, try with a clean repo:
git clean -xffd
This will delete all untracked files. Make sure you’ve committed or backed up any work.
3

Ask for Help

If you still can’t figure it out, ask in the #build-problems channel on Discord.
The SerenityOS project tries to maximize hackability, accountability, and fun by implementing everything ourselves.This means:
  • You can understand the entire system from top to bottom
  • No hidden behaviors from third-party libraries
  • Complete control over the implementation
  • More learning opportunities for contributors
  • Maximum enjoyment for the developers
While this approach requires more work, it makes the system more cohesive and ensures everything follows the same design philosophy.

Package Management

In short: No, SerenityOS does not have a “Linux-style” package manager with pre-built software.

Why Not?

SerenityOS uses a monorepo approach, meaning all software is built in the same style using the same tools. Additionally:
  • The SerenityOS ABI has no stability guarantee
  • Library symbols and syscall interfaces can change at any moment
  • Only the POSIX C library API remains relatively stable
  • Pre-built binaries would break frequently
There’s no reason to have a binary package manager because the entire system is built from source in a single repository.

What About Third-Party Software?

The supported method to use third-party software is by compiling ports found in the Ports directory.What is a port?
  • A piece of software that can optionally be installed
  • Might not have been built by the SerenityOS team
  • Supports running on SerenityOS
  • Always built from source
  • Has its own install script

How to Install Ports

cd Ports/curl
./package.sh
Currently, when running in a VM, ports should be cross-compiled on the host and added to the filesystem image before booting. Compiling ports on SerenityOS itself is possible but requires manual work and is not actively supported.

Future Development

In the future, port installation may be easier with the pkg tool. If you’re interested in contributing, check out the #package-manager channel on Discord.

Excluding Components

It is possible to exclude some SerenityOS components from the build at compile time.
This section is informational. We are not lawyers and this is not legal advice. Consult a qualified lawyer if you have legal questions regarding your use of SerenityOS software.

MP3 Patents Have Expired

MP3 was indeed originally protected by patents. However, all MP3 patents have expired since at least 2017, depending on where a specific patent was registered.We believe it to be completely legal to implement MP3 as 2-clause BSD licensed software without acquiring patent licenses.

Other Formats

This does NOT apply to many other multimedia formats, such as:
  • H.264 (AVC) video codec
  • H.265 (HEVC) video codec
  • JPEG 2000 image format
As long as there is any reason to believe that a format is covered by patents, there will not be an implementation in the SerenityOS monorepo. We believe patents are incompatible with the BSD 2-clause license in general.

Third-Party Ports

Third-party ports with differing licenses can provide implementations for patented formats (such as ffmpeg). However:
  • Using this third-party software might not be legal depending on your situation and use case
  • See ffmpeg’s legal information for details
  • Everything regarding SerenityOS code is handled by our license
  • Everything regarding third-party code is handled by the license of that particular software

Getting Help

Join Discord

Get real-time help from the community

Read the Docs

Browse technical documentation

Contributing Guide

Learn how to contribute

Issue Policy

Before opening an issue, read the policy

More Questions?

If your question isn’t answered here:
  1. Check the documentation folder in the repository
  2. Search existing GitHub issues
  3. Ask in the appropriate Discord channel
  4. Read the contributing guide before opening a new issue

Build docs developers (and LLMs) love