Features/Repackaging of Fedora fonts

Summary
Distribution-wide audit and repackaging of packages containing fonts to check they comply with the updated Packaging:FontsPolicy and to prepare for Features/AutomaticFontInstallation.

Owner

 * Name: Nicolas Mailhot (probably a good idea to consider Jens Petersen as co-lead and backup)
 * email: 

Current status

 * Targeted release: Fedora 11
 * Last updated: 2009-01-24
 * Percentage of completion: 50% :
 * rpm support files have been written, proofed and published
 * packaging guidelines have been written, discussed, approved and published
 * complementary documentation has been written
 * most affected packagers have been notified (those we could identify)
 * distribution default font packages have been converted
 * i18n-controlled font packages are being converted
 * progress on other packages is uneven and varies depending on packager disponsibility, goodwill and experience

The best way to follow progress is probably the bugzilla tracker.

Detailed Description
Since the Fonts special interest group was created rules on the legal and technical aspects have been progressively written and refined. Thanks to the fine Fedora review process they've mostly been applied to font packages created since.

However a lot of pre-existing font packages have never been changed to conform to those rules, and packagers that shipped fonts as part of some other whole have largely ignored them. Targeted licensing or packaging audits happened, but never distribution-wide.

The aim of this Feature is to clean up the cruft and try to make sure we follow our own packaging guidelines.

Benefit to Fedora
Our guidelines address multiple problems and thus enforcing them comprehensively will provide multiple benefits:


 * 1) purging the distribution of fonts we distribute under unclear, inappropriate or plain unlawful licensing conditions.
 * 2) exposing all our fonts in our primary font system, fontconfig. It is unacceptable that years after fontconfig was generalised some fonts are still segregated inside apps, especially since the packaging of many of them was requested by users meanwhile. Just making sure existing Fedora fonts are properly exposed in fontconfig would increase our user-visible font offering tremendously.
 * 3) fixing all the packaging bugs which have been introduced by the free-form variations on fontconfig scriptlets our packagers have unfortunately been fond of in the past. The new guidelines are much more rigid and only allow the exact pattern our fontconfig maintainer approved.
 * 4) clearly signalling upstreams what our target font system is so they stop procrastinating and clinging to brittle marginal font resolution systems that increase our maintenance burden.
 * 5) reducing our spin, mirror and bandwidth requirements, by identifying and removing the unnecessary duplication of the same big font files in multiple packages.
 * 6) cleanly separating each font family in a specific package, to present users a uniform font selection granularity and stop forcing the installation of unrelated material just to get a particular font.
 * 7) presenting users consistent discoverable font package names.
 * 8) preparing for Features/AutomaticFontInstallation and increasing its effectiveness. Having the infrastructure to perform automatic font installation is useless without a pool of clean font packages to install. Features/AutomaticFontInstallation will require rebuilding of font packages to add autoinstall-related metadata. This can only be automated if the font packages are sane in the first place.
 * 9) removing new packager uncertainty by exposing them to a pool of consistent packages.
 * 10) sensitising non-fonts packagers to the constraints induced by the fonts they ship.
 * 11) enhancing our desktop with the rich font complement expected by today's users.
 * 12) leading the advancement of free, open software and content at a time the free/open font scene is undergoing tectonic changes.

Scope
Distribution-wide.

How To Test

 * 1) Install packages in the fonts and legacy-fonts Fedora 10 groups,
 * 2) Install other packages affected by the bugzilla tracker,
 * 3) Check yum or packagekit manage to update this packageset to its Rawhide/Fedora devel/Fedora 11 test versions,
 * 4) Check that all the F11 font package names conform to Packaging:FontsPolicy,
 * 5) Check that all the different font families are properly split in independent packages in F11, and that you can un-install other font or application packages without removing the one you want to keep : Packaging:FontsPolicy,
 * 6) Check they're all declared in the F11 fonts or legacy-fonts groups: Packaging:FontsPolicy,
 * 7) (For packagers), check the new spec files conform to our new templates: Packaging:FontsPolicy,
 * 8) Check that the fontconfig rules packagers wrote are sane, do not substitute their font to unrelated ones in fontconfig-aware apps such as firefox, and do not pre-empt better fonts for a particular locale (especially for unicode blocks shared by multiple scripts, typically CJK locales).
 * 9) Check a clean install works fine too, and that no spin references a font package name that will disappear in Fedora 11.
 * 10) Check the problems in the bugzilla tracker are properly taken care of, and add new entries if necessary

See also Improving existing font packages.

User Experience

 * 1) Pros:
 * 2) users will (hopefully) notice a much larger font complement in applications, with more flexible installation possibilities.
 * 3) more fonts we do not provide will be substituted properly.
 * 4) the need for third-party sites advising to install other fonts outside Fedora packages will diminish.
 * 5) Cons:
 * 6) kickstart files and other howtos and third party scripts that reference our old package names will need to be updated.
 * 7) it is a large change, even with lots of QA some new problems are likely to make it to the final release
 * 8) many fonts that were left to rot in peace inside obscure applications will now be exposed to a larger public, who is bound to identify new problems.

Dependencies
The changes are spread over more than a hundred of existing source packages. They range from trivial (changing a font package dependency name), easy (adapting a recent guidelines-compliant package to the latest guidelines changes) and hard (untangling packages which have accumulated many fonts without installing them in the proper place, and without checking their licensing properly ).

They can only be performed in a distributed manner by each packager with a QA team checking no big mistakes are made.

The completion of this feature is thus dependant on the goodwill of every packager dealing with fonts in the distribution. It is unfortunately probable some of them will decide they're not concerned, and will hamper the change by not cleaning up their font dependencies or font installation.

Contingency Plan
None needed. The effectiveness of this feature does depend on the number of packages changed, and it would be better for Fedora and its derivatives if those changes were cleanly concentrated in a single release cycle, but continuing it the next cycle is not a technical problem.

Documentation
Extensive documentation has been written:
 * clear, complete and accurate packaging guidelines: Packaging:FontsPolicy
 * wikified packaging templates: simple, multi-font
 * helper rpm macros and text templates: Packaging:FontsPolicy
 * a FAQ: Shipping fonts in Fedora (FAQ)
 * plus all the pre-existing material in Category:Fonts_packaging

Release Notes
Fedora font packages underwent a massive reorganisation for Fedora 11. Many pre-existing font packages have been renamed or split. Fonts are now systematically exposed in fontconfig, the primary Fedora font system.

You should now have access to more fonts in Fedora, with a font-family granularity, both in the installer and in applications.

As usual the complete list of font package changes and additions is available here.

Comments and Discussion

 * See Talk:Features/Repackaging of Fedora fonts

Notes: