RFC: X library package changes, dependancy changes, freedesktop.org xlibs, etc.
Mike A. Harris
mharris at redhat.com
Mon Feb 9 02:38:45 UTC 2004
On Sun, 8 Feb 2004, Bill Nottingham wrote:
>> >Sounds good to me. I'd love per chipset packaging so that for
>> >example XFree86-ati-radeon-blah contained the radeon driver, dri .so and
>> >related bits, but that I can see is a good deal harder to get right
>>
>> That is something I definitely want to do in the future also.
>
>One of the great benefits of how the OS is distributed now is that,
>for any hardware supported by the OS, they don't need to go looking
>for their CDs, or start hitting the network, etc. to get that hardware
>supported.
>
>If you go down this road, you all of a sudden change that, and
>that's really not good. You also end up having to tie a good deal
>of logic into installation programs just to get the right package
>installed.
I disagree. I think that the "keep it the same forever" approach
does not allow existing problems with the current approach to
ever be solved.
There's also no good reason to believe that packaging things in
another way will automatically create the problems you've
described. For example, the installer can force all drivers to
be installed, and not permit someone to deselect them at install
time. It works well in other OS's this way, and there's no
reason it can't work in Linux either.
Unlike the kernel, which doesn't have a stable binary module ABI,
the X server does, so there's no reason why driver modules can't
be packaged separately and updated individually as the need
arises.
With the current method of putting all drivers into one binary
blob module with the X server and everything else, a one line
driver fix that solves a problem for users but wasnt found until
after the OS is released, generally means the user will have to
pick up the fix from rawhide, or some one-off unofficial build I
do, or they'll have to wait 6 months for the next XFree86
security erratum or something, or the next OS release.
We've gotten by "good enough" with that approach, but I
personally don't believe "good enough" is good enough. I want to
see us do better here, and I think it is both possible to release
individual video driver updates, and that it's in our best
interest to do so, and to be able to do so.
Nobody is forced to put in their CDROM, nor to download them via
a network. They do so only if they wish to have that additional
option.
Right now a user who has video driver problems options include:
- Download a new XFree86 update from Red Hat (if any)
They have to download up to 150 or more megabytes of largely
duplicated binaries, drivers, fonts, and other stuff. Most of
this stuff hasn't even changed at all. If they were just doing
this for the 1Mb driver update, this is quite wasteful on their
bandwidth, our bandwidth, disk space on both sides, and is IMHO a
very poor solution.
- Wait for the next Red Hat official XFree86 update, which may or
may not even solve their problem.
We don't release driver updates now, just full XFree86 updates,
however a given driver may or may not even have been updated.
Many users download new releases in hopes that it may have an
updated driver, even if that driver is identical. They're not
even aware generally wether or not a driver was updated. There's
no easy non-technical way for them to find out.
- Download binary drivers from XFree86.org or somewhere else.
Not a Red Hat "supported" option, doesn't integrate with the
distribution or our tools. An ad-hoc workaround at best, until
their vendor (us) has a better solution for them, which currently
can be months, if not even longer.
There are /many/ cases in which I could fix a driver, or apply
patches from upstream, etc. and have a new driver tested in short
order via unofficial or "testing" channels, and once enough
feedback has been received, I could easily release a "driver
update" rpm, containing just the new driver. up2date and/or yum
makes it trivial for a user to do updates. In most cases, all
the user needs to do then, is restart XFree86 without
reconfiguring anything and they're using the new driver. I think
that is a very very desireable goal, and a 1Mb driver rpm beats a
150Mb half hour RHN update. ;o)
>> Also, the driver rpms should have a metadata file included with
>> them which is essentially like a Windows .INF file, which drops
>> into a predefined /usr/share/something dir and informs our
>> config tools what hardware this new driver supports, etc.
>> Basically a modularized replacement for the ancient Cards
>> database, and pcitable, where that information is now stored in a
>> metadata file accompanying the driver.
>
>Well, currently, the drivers all have information on what hardware
>they support included. *Unlike* the kernel drivers, they don't
>export this in a sane manner.
The drivers can be dlopen()'d and their functions called by other
software. I've never personally tried to do this, but IIRC, the
xf86cfg tool does so. I'd have to confirm that however. I'm not
sure wether that would be the best approach or not though, but
it's something worthy of more research.
My basic premise above, is that the current mechanism for
packaging, supplying, maintaining, distributing video drivers and
updates to users, is not "the best we can do". I _know_ we can
do _much_ better, and I believe that there are a lot of benefits
both to myself as the maintainer of XFree86, to end users who
would like the possibility of getting driver updates sooner than
once every 6-12 months, and to Red Hat for having a better
solution for customers that meets their needs in a way much
closer to what other mainstream operating systems can provide.
I don't claim that it is a cakewalk to get there however, nor
that there are no obstacles. There are obviously some important
issues that would need to be ironed out, including things like
the installer, the config tools, and other bits.
But if we let things stay as they are now, and never even try to
provide a better solution, then we wont ever _have_ a better
solution.
Rather than having people resist such changes and just state some
theoretical problems that might exist if we were to separate out
drivers, I would prefer it if people embraced the idea with the
thought "this would be good for us all around", and then thought
of some real problems it might cause, and then proposed some
ideas for how we might go about solving them.
For the "the driver didn't get installed when I installed the OS"
problem, the solution is simple. We benevolently install all of
the drivers without giving anyone any say during installation
wether or not they want them all.
Also, just for the record... this "split the drivers into
separate rpms" idea, is not something I'm trying to force into
Fedora Core 2, possibly not even FC3. It's a "we need to get
there sometime down the road, how do we go about planning to get
there now" idea.
--
Mike A. Harris ftp://people.redhat.com/mharris
OS Systems Engineer - XFree86 maintainer - Red Hat
More information about the devel
mailing list