It has become abundantly clear that distribution maintainers should have
as few patches as possible. Patches waste time due to duplicate work,
resources (portage disk space and bandwidth), and as the Debian project
recently found out after a major vulnerability was discovered in the
OpenSSH packages (see http://www.milw0rm.com/exploits/6094, and
http://www.securityfocus.com/bid/30276 among others), they can become a
source of great embarrassment, and liability since they are not nearly
so well audited as code in heavily used mainstream projects (an
unintentional Cathedral if you will). I therefore propose the following
changes:
Patches in the metadata.xml should have some sort of status tracking for
each patch, repoman should flag any that don't, and warn on any that
have not been submitted upstream unless the status is signed off on by a
herd leader (such as Gentoo specific patches). This would provide visual
feedback for users and developers with regard to a pretty important
metric on how successful Gentoo is at getting patches pushed back to
developers.
Developers who consistantly clear a large quantity of patches upstream
should also be recognized in the Gentoo Monthly Newsletter, and
otherwise as appropriate.
Obviously the software needs to work, and therefore we need patches, but
Gentoo has not done enough to date to get them pushed upstream. Lets
look at some cringeworthy statistics on outstanding patches. (NB these
are only patches in portage, and not patches which don't meet portage's
maximum size)
app-accessibility 48 app-admin 178
app-antivirus 10 app-arch 101
app-backup 55 app-benchmarks 20
app-cdr 58 app-crypt 90
app-dicts 28 app-doc 26
app-editors 90 app-emacs 51
app-emulation 186 app-forensics 21
app-i18n 77 app-laptop 23
app-misc 181 app-mobilephone 34
app-office 64 app-pda 50
app-portage 36 app-shells 91
app-text 334 app-vim 13
app-xemacs 4 dev-ada 1
dev-cpp 30 dev-db 141
dev-dotnet 27 dev-embedded 17
dev-games 27 dev-haskell 12
dev-java 264 dev-lang 313
dev-libs 391 dev-lisp 112
dev-ml 15 dev-perl 78
dev-php 6 dev-php5 11
dev-python 202 dev-ruby 63
dev-scheme 37 dev-tcltk 33
dev-tex 24 dev-tinyos 3
dev-util 328 distfiles 26
eclass 21 games-action 58
games-arcade 76 games-board 58
games-emulation 88 games-engines 8
games-fps 58 games-kids 9
games-misc 15 games-mud 19
games-puzzle 65 games-roguelike 26
games-rpg 15 games-server 7
games-simulation 14 games-sports 17
games-strategy 54 games-util 31
gnome-base 45 gnome-extra 60
gnustep-apps 22 gnustep-base 3
gnustep-libs 9 kde-base 146
kde-misc 52 mail-client 71
mail-filter 49 mail-mta 21
media-fonts 5 media-gfx 188
media-libs 494 media-plugins 273
media-radio 2 media-sound 411
media-tv 44 media-video 253
metadata 72 net-analyzer 213
net-dialup 121 net-dns 45
net-firewall 33 net-fs 47
net-ftp 76 net-im 91
net-irc 68 net-libs 111
net-mail 113 net-misc 428
net-nds 11 net-news 16
net-nntp 21 net-p2p 67
net-print 49 net-proxy 53
net-voip 9 net-wireless 89
net-www 14 net-zope 6
perl-core 2 rox-base 11
rox-extra 6 sci-astronomy 32
sci-biology 32 sci-calculators 31
sci-chemistry 104 sci-electronics 21