by Jesse Keating
There are lots of ways that software gets included in Fedora releases. Because Fedora is a community-powered Linux distribution, the most common (and likely the easiest) method is when a community member packages and “owns” the task of building it for Fedora. This story follows that process.
How Sally met Eddie
Sally is a Fedora user. She’s been using Fedora for a number of releases and really enjoys the project. However, she’s unhappy with the offered text editors and has been in search of something better. She was introduced to Eddie by a mutual friend in a community forum. You see, Eddie is a text editor, and many feel he’s a rather good one. Sally decides to give Eddie a chance.
Sally looks for Eddie in Fedora. She uses “Add/Remove Software” and searches for the term “Eddie”. She’s rather disappointed to discover that Eddie is not available yet in Fedora. She really wants to give him a chance so she visits Eddie’s home (let’s say he has a web site at eddietheeditor.org). She is saddened to find that there are no packaged version of Eddie for Fedora–just a source download and a Microsoft Windows binary. Not easily discouraged, Sally finds directions on how to download, compile, and install Eddie. It all seems pretty straightforward to Sally, so she does so.
Sharing Eddie with the community
Sally has a lot of fun with Eddie! He does everything she hoped he would do and more. The only sour note in their relationship is that every time Eddie learns a new trick or corrects some bad behavior, she has to download, compile, and install him all over again. Sally thinks this would be much easier if Eddie just came with Fedora.
Sally looks around at fedoraproject.org. There she finds directions for adding software to the Fedora package set. The best part? She discovers that anybody can suggest new software for Fedora!
She also finds instructions on how to make an RPM, which is the software packaging mechanism used by Fedora. She reviews the guidelines for package quality and correctness. At first, this seems like quite a lot of work, but she finds tools in Fedora that makes the process easier.
Sally prepares Eddie for submission. She learns that all Fedora packages must go through a peer review process to ensure the packaging guidelines are followed, the licensing is correct, the package builds correctly, and a number of other checks. To this end, Sally files a package review bug in Fedora’s bug tracking system, Bugzilla.
A fellow Fedora community member, Bob, is also a Fedora packager. He takes a look at the review request. Bob notices that Sally has not packaged anything for Fedora before. This means that she needs a Sponsor–somebody to mentor her in the ways of Fedora packaging. Bob is a Fedora Sponsor and is willing to take Sally on, so he processes the review. He notices a problem in the package submission and alerts Sally to the issues. Sally and Bob work together to bring Eddie up to spec for Fedora.
Sally returns to Fedoraproject.org and reviews what comes next. She reads about checking Eddie into Fedora’s source control system (CVS), and building Eddie for Rawhide. All Fedora packages are built from Fedora’s source control system. This ensures that the build can be reproduced when needed, and that all changes to upstream sources are tracked and managed centrally.
Once Eddie has been checked into CVS, Sally can request a build of Eddie. This request goes to Fedora’s Build System, Koji. Koji takes Sally’s request, checks Eddie out of CVS, and asks its builders to build Eddie for all the architectures that Fedora supports. At the end of each day, an automated process gathers up all the latest builds of Fedora packages and composes an installable package repository named Rawhide. Rawhide is the developmental tree of Fedora.
Each new Fedora release is driven through Rawhide. Sally decides that she would like to help in the development of the next Fedora release, by making sure Eddie works well. She upgrades one of her Fedora machines to Rawhide and installs Eddie. Now Eddie is available to anyone who is running Rawhide.
The Big Day, Eddie’s first Fedora release
Now Sally has Eddie in Rawhide. There is a Fedora release coming up, and she’d like more people to know about Eddie. How can she make it so that Eddie is seen by people during installation?
The package selection screen in the installer and on her installed system is driven by grouping information provided by comps. Comps is a simple XML file that organizes packages in groups, and describes groups with categories. She reads about how to update comps and sets to work. She finds an existing group called Editors within the Applications category and thinks that this would be the perfect place for Eddie.
She adds Eddie to the group, and sure enough in the next day’s rawhide release she can see Eddie in Add/Remove Software within the Editor group. She has marked Eddie as an optional editor. This means that when users view the Editor group, Eddie won’t be pre-selected. That’s OK, because Eddie isn’t for everybody.
In the days leading up to the Fedora release, Sally wants to make sure that Eddie is in tip-top shape. She’s received a few bug reports about how Eddie does things. The fact that people are using Eddie is really awesome in itself, but the users are also contributing to its improvement. She has communicated with Eddie’s upstream authors to report these issues and suggestions. Sally does a few more builds of Eddie for Rawhide. As each snapshot and release candidate comes out , Sally ensures that Eddie works as expected.
The big day comes–a Fedora release! Sally is very very happy to see Eddie in the release, and brags to all her friends that SHE is the one that made it happen. Thus ends the story of how Sally met Eddie, and shared Eddie with the Fedora community.
Fedora is a powerful project. Not only does it provide an awesome Linux distribution, it also provides a very large collection of packages for all your needs. In addition, the Fedora project is an open project, meaning that every day folks like Sally have the ability and power to join the project and bring new software to the collection. Without the vibrant Fedora community wrangling the packages, Fedora would not be as successful as it is today. In the next part, we’ll follow along as Sally releases updates of Eddie for the latest Fedora release.
About the author
Jesse Keating is a Senior Software Engineer for Red Hat, Inc. and is the lead Fedora Release Engineer. He has been involved in the Fedora community since its inception and has been a member of various Fedora committees.