Hi all,

The idea of a NuttX distribution has come up before. It was discussed
at the NuttX International Workshop, and Alan looked into package
managers for it afterwards [1]. Nobody had picked it up yet, so Alan
and I did. We wanted this list to hear about it from us first. The
public page opens on Sunday, but the proof of concept is ready today.

First, thank you. This was only possible because of the more than 400
PRs you've reviewed and merged for this work since April [2]. Your
reviews were careful, sometimes tough, and every one of them made the
code better. More broadly, Nuttian exists because of years of
community work on NuttX's POSIX layer, the kernel build and the apps,
and we are building on that.

What it is

Nuttian is a distribution built on Apache NuttX. Programs are ordinary
.deb packages installed with dpkg and apt. They run on a NuttX kernel
build, where each program is a process in its own address space.
NuttX's own libc is built as libc.so, with a dynamic linker.

The first proof of concept ("nxsid") has 200+ source packages and 500+
binary packages built from upstream sources, including bash,
coreutils, gcc, make, cmake, Python, Perl, OpenSSH, git and vim. After
boot you can run `apt update && apt install build-essential` and
compile on NuttX itself.

Nuttian is not meant to replace nxpkg/nxstore, which target app
delivery on MCU-class devices. Nuttian uses dpkg/apt for a full
userland on MMU-class systems. We see them as complementary.

What works, and what doesn't yet

- QEMU only for now: arm64, amd64 and riscv64.
- Real hardware support is in progress.
- It is a proof of concept. The ABI can change between releases, and
there is no graphical desktop.
- The goal is the POSIX PSE54 profile. We're not there yet.

How it relates to NuttX upstream

The kernel and libc are not plain NuttX master. They come from an
integration branch: master plus about 310 commits that are not merged
yet. Some of those are open PRs, and the rest still have to be sent.
Their source ships in the archive, and each package page links it
(https://packages.nuttian.org/nuttx/). Today that makes Nuttian a
downstream branch. Our goal is to bring that delta to zero, so the
distribution runs on unmodified NuttX.

There is a lot more to do. Each package has a page recording every
change it needed to build and run on NuttX, and why (for example
https://packages.nuttian.org/bash/). Taken together, those pages are a
concrete list of POSIX gaps in NuttX, and we will keep closing them
upstream. If you'd like to pick items off that list, or have opinions
on how some gaps should be solved in NuttX, we'd welcome the help and
the feedback.

Try it: https://nuttian.org/stealth/ (a few minutes with QEMU when the
architecture matches your machine; slower when emulated)

About the name: Nuttian is meant as a nod to NuttX, in the spirit of
Debian. It is an independent project, not an ASF project, and the site
attributes Apache, Apache NuttX and NuttX as ASF trademarks. We are
also checking the name with the ASF brand team. If anyone has
concerns, we're happy to hear them.

Questions and reports about the distro can go to [email protected].
Anything about NuttX itself stays here, of course.

Thanks again to everyone who reviewed, merged and argued with these patches.

Best regards,
Marco Casaroli (casaroli) and Alan Carvalho de Assis

[1] https://www.mail-archive.com/[email protected]/msg11528.html
[2] 
https://github.com/search?q=is%3Apr+is%3Amerged+author%3Acasaroli+merged%3A%3E2026-04-01+repo%3Aapache%2Fnuttx+repo%3Aapache%2Fnuttx-apps&type=pullrequests

Reply via email to