This page documents the approximate procedure for creating a new port and getting it included into Debian. It is a work in progress and is based on the port template wiki page.

/!\ Do not skip any of the steps.

/!\ Complete each step before moving to later steps.

Assemble a team of people working on the port and find a financial sponsor to support the team's work.

Identify related ports and ISAs, decide that the port is worth creating and detail the reasons why.

Decide on the GNU triplet, Debian multiarch tuple, Debian architecture name, the name that end-users will use for the architecture and other details of the architecture and ABI.

Discuss the port with the community. Please send an email to the FIXME mailing list. If the port is related to some other architectures, ensure you CC the mailing list for the architecture family. Also join the #debian-bootstrap and #debian-ports IRC channels.

Prepare patches supporting the port for rebootstrap, GNU config, dpkg, binutils, gcc, gdb, qemu, glibc, linux projects.

Use your modified rebootstrap, the patches and manual bootstrapping to build all of build-essential.

Keep working on the bootstrap process until all of build-essential is installable with debootstrap.

Continue building as many packages as you can using the new build-essential packages.

Finalise the architecture details, especially including the ABI and CPU baseline requirements.

Get the necessary changes included into the upstream GNU config (instructions), binutils, gcc (instructions, gdb (instructions), qemu (instructions), glibc (instructions), linux (info) projects and any other upstream projects that you have modified.

Get any necessary changes included into dpkg (instructions), rebootstrap and other Debian packages involved in the bootstrap process.

Register the port on the Debian wiki, replace "example" throughout the page with the chosen architecture details and fill out as many details as you have.

Summarise the details of the architecture and ABI on the arch summary wiki page.

Setup communication channels for the architecture. Use the architecture family as the name of any communication channels you create, just in case additional related architectures are created later. A mailing list and IRC channel are recommended.

Add your architecture to the bugs arch usertags page.

Get the port included amongst the unofficial ports.

Setup unofficial buildd servers for the port, either in qemu or hardware.

Include the port on the ports list on the Debian website and add the end-user name for the port to the website arches data. If you create a page on the website, create one named after the architecture family, just in case additional related architectures are created later.

Monitor build failures (1 2) and continually fix issues.

Donate hardware for the GCC compile farm.

Setup porterboxen for package maintainers to login to and port packages.

Optionally, donate hardware for debomatic.

Port the Debian installer so that it works on the hardware you have available.

Use the Debian installer to install Debian on the hardware you have available.

Write some documentation about installing the arch on the hardware you have installed.

Submit installation reports for the hardware you have installed.

Submit some hardware probes for the hardware you have installed.

Grow the hardware ecosystem until it satisfies the requirements for an official port.

Improve the port until it satisfies the criteria for being included in the main archive.

Donate hardware for the official buildds and co-ordinate with the Debian sysadmins to setup the hardware in Debian hosting locations.

Add quality assurance for the port for Reproducible Builds, Debian CI, and piuparts (doesn't yet support non-x86 ports) and other Debian QA efforts.

Add support for the port to the live images and cloud images if appropriate hardware exists.

Improve the port until it satisfies the criteria for being included in a Debian release.

Make the port more performant by porting or optimising various libraries (ToDo: add examples).

Make the bootstrap process more trustworthy through Bootstrappable Builds.