Getting your program integrated into Linux distributions will help to increase its adoption and to ensure that users have it well-integrated into their systems and kept up-to-date easily. Gentoo Linux has more than 13,000 packages, and Donnie will share his extensive experience creating and maintaining Gentoo packages and offer suggestions for improvement.
Technical and philosophical questions that determine how easy or difficult it is for distribution packagers to work with upstream developers will be discussed. Technical issues include the basic metaphor that a package\'s build and installation process is an API to distribution packages -- it should be changed carefully and purposefully, and changes should be well-documented. In addition, Donnie will describe the level of control and system integration desired by packagers. Philosophical issues, including user expectations and licensing requirements, differ between distributions and can cause major conflicts with upstream developers. Finally, Donnie will discuss developments toward the future of distribution packaging so that upstream developers can consider how this fits into the future of their software.
Slack (or Teams) Automation for Bonterra Impact Management (fka Social Soluti...
How to be a distribution-friendly project
1. How to be
a distribution-friendly project
(and why you should care!)
Donnie Berkholz
Gentoo Linux
This presentation is licensed Creative Commons Attribution-ShareAlike
2. What does that mean?
Distributions: Fedora, Debian, Gentoo, etc
●
Packages are managed by the
●
distribution, so you don't have to install by
hand.
3. Why should you care?
“How to become
a bigger player?”
- X. Gonze,
24 March 2009
Flickr: 3eyedmonsta
Bigger user community == bigger developer
●
community. Same conversion percentage means
more developers.
●If you're in a distro, people will choose your
package over others that aren't. Assumption of
quality, low barrier to entry
●Distro will become the primary consumer channel
4. A unique opportunity
Using the GPL means you can get
into distributions that only allow
open source.
“We promise that the Debian system and all its
components will be free according to these
guidelines.”
“... Fedora will always be free for anybody, anywhere,
to use, modify and distribute.”
A distribution gives users a unified
interface so they don't need to know the
Flickr: Kliefi
details of installing your package.
5. What does a
package do?
It's a build script.
●
●Basic info (homepage, where
to download, license, optional
features)
●Functions to build it similar to a
manual build (fetch, unpack,
compile, install, etc)
6. How do you get software packaged?
I maintain 400-500
●
packages
●Time is the limiting
factor. Distribute
work to upstream
projects whenever
possible.
Flickr: ToniVC
●Make it as easy as
possible. Act like
other open-source
packages.
7. Philosophies
Stability: Don't
●
change if avoidable.
Stability
Figuring it out takes
a while.
●Control: give us the
*
flexibility we need:
options, flags, etc.
●Knowledge about Control Knowledge
the first two
8. Stability
Build process == API
●
●We access it like you
access libraries,
programmatically in a build
script
●If you change it, have a
reason and tell us why!
●Principle of Least Surprise
Flickr: tony.evans
Versioning: “Stability” relative
●
to other packages Stable relative to your past
Same for build system. releases, and stable (few
●
changes) relative to other
open-source projects
9. Control
Bundling
●
Don't bundle patches!
●
● Autodetect w/ manual override
● pkg-config
Optional features
●
Respect: environment, parallel build
●
Installation: Put specific filetypes
●
anywhere
“Standard” build systems are easier
●
for packagers because we already Flickr: undergroundbastard
know them
WWGD: What Would GNU Do?
●
10. Knowledge
Document stability & control
●
Steady state & changes
●
PACKAGING file
●
How to build
●
Dependencies
●
New releases
●
Bugs/patches (open!)
●
Flickr: tsmyther
Accessing current source
●
11. The future of packaging
Generating packages
directly from bzr tags:
No tarballs involved
Flickr: Chris Seufert
12. Philosophies
Stability: Don't
●
change if avoidable.
Stability
Figuring it out takes
a while.
●Control: give us the
*
flexibility we need:
options, flags, etc.
●Knowledge about Control Knowledge
the first two
13. Want to talk more?
Packaging
●
● Encouraging
new developers
● A copy of this
presentation
Email: dberkholz@gentoo.org
Subject: ABINIT: <your topic>