-
The official Fedora Packaging guidelines are here: Fedora Packaging Guidelines :: Fedora Docs
-
There are so many tools because people have different ideas of how to improve things, and since it’s open source, they go and make them. In specific for the ones you’ve asked about:
-
rpmbuild is the low-level tool that’s part of
rpm
itself for constructing packages. -
fedpkg is our official helper tool which wraps
rpmbuild
plus a bunch of other tools in a handy suite useful for maintaining an official Fedora package -
tito is a newer tool to do basically the same thing, in slightly different ways.
You probably should have a basic understanding of rpmbuild, but in practice as a Fedora maintainer, you don’t need to touch it directly very often (similarly, koji and bodhi command line tools exist, but they’re generally not necessary to worry much about).
Another emerging tool that takes a slightly different approach is PackIt, which is meant for building software directly from your upstream source repository (on Gitlab or Github or whereever). It also wraps the standard Fedora build process, but in a different way, which you may find easier if
- you’re also the developer of the software and owner of the upstream source repository, and/or if you are
- you’re someone who grew up (or grew into being) more comfortable with git than with extracting and managing tar.gz files.
- See:
-
New Package Process for New Contributors :: Fedora Docs
for the process.
Generally, a good first step is to build the package into Copr, which doesn’t require you to go through all that process. So you can start making the package available, learn how to do it, get initial feedback, etc., and then move to make the package official when it (and you!) are ready.
There’s a Quick Start guide for adding a package to Copr at How to Publish your Software on Copr, Fedora’s User Repository :: Fedora Docs. (This guide happens to use tito.)
Oh, and on “dev channel” — in some ways, that’s Copr. Our main “development” branch, which is called “Rawhide” for obscure historical reasons, is entirely branched into our new release branches twice a year. So, everything that goes in there should be getting ready to be in production use. It’s really more “staging” than it is “dev”. See Updates policy :: Fedora Docs for policies around different Fedora repository branches.