We can't target any user without fixing these 5 things
caillon at redhat.com
Thu Oct 8 20:31:22 UTC 2009
(hm, apparently my VPN connection died on the plane when I thought I had
sent this last Saturday...)
I think perhaps the single largest issue we have is a lack of
reliability/predictability during a Fedora release stream (e.g.
post-release updates, rawhide). It's great that we have predictable
schedules, and that we have predictable feature sets. What sucks is
that nobody knows how well those feature sets will work, and just as
importantly, nobody knows what types of package updates (wrt ABI compat,
rebases, etc) to expect in the Fedora update streams. Things which work
on release day may break later on due to some packages getting
de-stabilizing updates, some not. We ask maintainers to use their
judgement, and when people complain, we explain that we don't control
it, and it's up to the maintainer. This clearly does not work as this
is a frequent topic of contention on various mailing lists, and is not
really beneficial to any class of user.
Additionally, nobody knows whether rawhide on any given day will be
usable, and it still has a negative stigma attached to it: some
engineers who provide rawhide packages don't even use rawhide, which is
causing rawhide and thus the upcoming releases to get less testing. I
do not think that we can really provide top quality software if we can't
even use what we build at any given point. We are more focused with
getting features in then with getting them in and having them work. We
are happy to break things in rawhide and say "well, it's rawhide, i'll
fix it in a few days".
If we want to target Fedora for any class of user, we need to think and
act for the user. Right now, we're clearly not even acting for the
people that do use our distribution. I think we should fix that before
we can even begin to define what our target user should be. If we can't
do these five things, then I think any discussion involving target users
is rather pointless, and quite honestly, we are doomed to fail, IMHO.
(Note that some of these items may be best specified by e.g. FESCo, but
I think they reflect a significant enough change in the way we do things
that the Board should push for and stand behind these).
1. Define a list of core/critical-path functionality that packagers
are required to ensure they do not break. Define a plan of action for
what happens if such functionality becomes broken. See example.
Bonus points: come up with an easy to follow "smoketest" for how to
determine whether something on the list is broken.
2. Define update criteria for our release streams: what types of
updates we expect, and what types of updates we do not want in each
stream. Define a plan of action for what happens if an update fails to
comply. See example.
3. Set up something similar to Mozilla's "Sheriffs". The Sheriff
will be a rotating role and shall be responsible for coordination and
enforcing of the previous two rules. If an issue arises, the sheriff
will attempt to contact the packager responsible, and attempt to get
them to fix or revert the issue. If this isn't possible within 15
minutes, the sheriff will find a provenpackager to do so.
4. Improve our test suites. Provide $coolstuff incentive for people
who contribute (the most?) valid test cases.
5. Start an initiative to automate as much of the above as possible.
Possibly as GSoC projects. Particularly, I'd like to see a tinderbox
which creates VMs from a buildroot+ks file, runs automated tests for the
critical path, and outputs the PASS/FAIL results. I'd also like to have
a post-commit hook which reminds people to not break stuff and to be
available to the sheriff on IRC.
 Example: Core/critical-path is a system must boot up, get a display
manager with XYZ video cards, be able to log in successfully, be able to
get a working network via ethernet (and if available, via xyz wireless
cards), have audio work on XYZ audio cards, and be able to successfully
use yum/rpm/PackageKit. In the event any package breaks this
functionality, the package must be fixed immediately (within 15? minutes
of noticing) or the changed is reverted, package untagged and rebuilt.
If N violations occur, provenpackager status is revoked.
 Example: For rawhide, do not break dependencies without announcing
in advance about why you are doing so to fedora-devel-list, and not
receiving objections. For Fedora releases, updates must not break ABI
or dependencies without getting an exception granted from FESCo. In the
event any package fails to comply, the change is immediately reverted,
and mail sent to the packager owner. If N violations occur,
provenpackager status is revoked.
More information about the fedora-advisory-board