mingw: document approach for integrating mingw with native packages
Historically the mingw packages were introduced as completely separate
components in Fedora, with their own spec files, separate maintainers,
etc. This was driven primarily from a reasonable concern that the
maintenence of MinGW builds would be an unacceptable burden on the
existing native package maintainers.
In the many years since MinGW was introduced to Fedora, however, it has
become clear that this concern was mostly unfounded. While some packages
may be more difficult, the majority of MinGW packages are not difficult
to keep building successfully in Fedora. Furthermore the existance of
MinGW support in Fedora, has enabled upstream projects to actively test
Windows support in their CI systems prior to release.
There biggest problem for MinGW packages in Fedora has turned out to be
caused by the very decision to package them as completely separated
components. Specifically it is difficult to ensure that MinGW builds are
being kept in sync with changes to the native package builds, even when
both share the same maintainer. This is particularly apparent when
looking at reports of unaddressed CVEs in Fedora packages.
With this all in mind, it is the view of the MinGW SIG that Fedora is
best served by having MinGW support integrated into the native packages
in general. While the specific maintainer of the native package will
have slightly more work, history has demonstrated this is not likely to
be significant in most cases. For Fedora maintainers in aggregate, the
amount of effort spent on MinGW will decrease, benefiting the project
as a whole. This proposal thus strongly promotes the integrated MinGW
packaging approach to be the default, though existing native package
maintainers retain the ability to decline such proposals.
The concept of integrating MinGW support into the native packages has
already been put into practice on many packages where the same Fedora
contributor maintained both the MinGW and native packages. Specifically
examples implemented by Sandro Mani are:
mingw-eigen3
mingw-enchant2
mingw-freeimage
mingw-gdal
mingw-GeographicLib
mingw-geos
mingw-giflib
mingw-gtkspell3
mingw-gtkspellmm30
mingw-jxrlib
mingw-leptonica
mingw-libgeotiff
mingw-libimagequant
mingw-libkml
mingw-librttopo
mingw-libspatialite
mingw-libwebp
mingw-openjpeg2
mingw-OpenSceneGraph
mingw-osgearth
mingw-podofo
mingw-proj
mingw-python-pillow
mingw-qtspell
mingw-shapelib
mingw-svg2svgt
mingw-tesseract
mingw-uriparser
and examples by Daniel Berrange are
mingw-libvirt
mingw-gtk-vnc
mingw-libvirt-glib
mingw-libosinfo
mingw-osinfo-db-tools
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>