Re: Installing XFree86 4.3 on RHL 7.3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 17 May 2003, Michael B Allen wrote:

>to the three packages mentioned. All of which I seem to have or have
>rebuilt from src.rpm. Rpmfind.net claims 2.4.18-3 provides kernel-drm. My
>impression was that the remaining stuff is just a problem with RPM
>dependencies. But if you know for certain a few packages that will
>definately give me problems then please enlighten me before I run rpm
>--nodeps and end up needing to back it off.
>
>"Upgrading" to RH 9 is not an option. This is my work machine and I don't
>need any headaches. Right now the machine is rock solid and I'm going
>to keep it that way. Backing off X is one thing but changing operating
>systems is not acceptable and I'm sorry to hear RH is so quick to leave
>people behind and EOL versions they just put out a year ago. I would
>just like to use a flat panel I have but the current video doesn't seem
>up to it so I was hoping improved support for my chip would help.

Don't even get me started.  You have absolutely no idea 
whatsoever the amount of engineering resources that are required 
to support releases for longer periods of time.

First, I must apologize to everyone reading this for its length,
however I need to speak my mind about a few things that I find a
lot of people simply do not understand, and appreciate how 
complicated it is to produce a Linux distribution, and to keep it 
as high quality as possible, knowing what risks are good and what 
ones are bad, and knowing how to make the most efficient usage of 
your manpower and time resources, and to divide that time amongst 
future development of products, as well as maintenance of 
released products.

I further apologize if this comes off as a rant to some people, 
as it is not intended in that way.  Since email does not carry 
through emotional content very well, in order to understand my 
inflection/tonality here, picture me sitting in a nice cozy 
lazyboy chair, sipping a nice hot cup of Earl Grey tea, with a 
pleasant look on my face, and a polite tone to my voice.  ;o)

I'd offer you all a cup of Earl Grey to enjoy while reading my 
rambling below, however distance and technology prevent that. ;o)

First, I should point out that the software comes at zero cost to
those who want to obtain it that way, and upgrades are also
optionally at zero cost.  Some people do pay for the software
and/or for RHN.  Red Hat does not and has never promised any
customers or users that any OS product would receive video driver
updates once a month, or once every 6 months.  Once the OS has
shipped, it is shipped largely as-is.  We provide security
updates for the OS to handle security issues that arise, and we 
try to provide bugfix errata for major bugs that arise and to 
which we have the manpower resources and time to work on 
producing such errata.  There is no guarantee of course that 
every single bug that gets reported can be fixed by us.  We do 
try to provide as many fixes as possible however, and work is 
prioritized based on many factors not worth going into here.

However, there are no good reasons why people can not upgrade
their OS to a newer version in order to obtain support for new
hardware.  If hardware is trivial to add support for in an
update, it often will happen, however non-trivial updates for new
hardware are not always easy to do, and can require extensive 
engineering resources even to attempt.

Nobody is obligated to pay for new OS versions of course, so they
can be downloaded free of cost for those who can not, or do not
want to pay for it.  Not a bad deal at all for a full fledged
operating system.  And if they've got an RHN subscription
already, after upgrading the OS, their entitlement can be changed
to the new version free of charge as well.

Some people wish that new XFree86 releases would be released as 
updates for existing OS releases every time a new release of X 
comes out, both so they can get the new XFree86 features, as well 
as the new XFree86 driver support and other enhancements.  This 
was attempted once, as an experiment.  I released XFree86 4.1.0 
as an update to XFree86 4.0.3 for Red Hat Linux 7.1.  I did this 
for 3 reasons:

1) Because the types of changes between the two releases did not 
change any core technology in any major way that might risk 
destabilization, or conflict with existing documentation of the 
OS, etc.

2) I wanted to be able to maintain one single set of XFree86 
packages for multiple releases of the operating system, thus 
minimizing workload hopefully

3) I wanted to test how well an update like that would be 
received by people, the types of problems that might arise, and 
other problems, as well as getting good feedback.  4.1.0's 
changeset happend to not contain any major changes that I thought 
were likely to be too risky, and I'd been running 4.1.0 on my 7.1 
box for quite some time already as were many others.  The 
experiment was worth trying.

Overall, the upgrade to 4.1.0 for RHL 7.1 worked out without any
major catastrophes, but it wasn't without regression and wasn't
without its share of angry users.  I had been quite careful to
try to minimize risks and retain as much packaging compatibility
as possible, and deal with the numerous font related problems,
DRM problems, driver change problems, and other issues as nicely
as possible.

Many people were glad to see the new release, and received it 
well, however not everyone did.  Some users had working setups, 
which after upgrading to the new release - no longer had a 
working X setup.  They were upset at the thought that we could 
possibly release an updated X package set which broke their 
setup.  How could we possibly not have tested their specific 
video chip on their motherboard with the exact configuration 
options they were using?  etc. for example.

The answer of course being, that we don't have every piece of
hardware, and even if we did have every motherboard, video card,
laptop, system, monitor, mouse, keyboard, etc., we could never
possibly have the time and manpower resources to even attempt to
test a small fraction of all possible hardware out there.  For
video hardware, we'd have to try and test it in every color depth
at every video resolution and do so both with and without DRI
enabled, with and without dualhead, and with and without a bunch
of other options, including testing Xvideo and the numerous other
features that are present in XFree86.

People just want stuff to work, and when it doesn't, then someone 
is going to get heat for it for sure.

So yes, upgrading the X server may work great for many people, 
but it may totally screw up other people's setups too, and people 
get much more angry for having their setup broken from an update 
than they do starting out with a non working setup and not 
getting an update to fix it.

Another *MAJOR* technical support issue, is the kernel DRM.  DRM 
are the kernel modules which are used by the DRI code in XFree86 
to perform direct rendering, and implement 3D acceleration.  

XFree86 can not work with just any old DRM, it requires the
specific kernel DRM that was shipped as part of the source code
of that specific XFree86 release, or a newer version of DRM which
retains backward compatibility.  This poses a significant
technical, and technical support problem for Red Hat, and also 
for the users.

If we hypothetically *wanted* to release an updated XFree86
version for an existing OS release, we absolutely can not just
update X, and let DRM break.  We *MUST* release a new kernel
_first_ which contains the updated DRM.  We must also try to
guarantee that the new DRM works also with the older XFree86, so
that users who do not want to upgrade X for whatever reason - are
not forced to.  And shipping multiple versions of DRM is also not 
feasible, as that requires supporting an ever expanding amount of 
software, with the same number of engineers.  We can't support 3 
different versions of X on 3 different kernels on one OS all at 
once, simply because some users want to upgrade and others do 
not, and all users want us to support whatever they are using.

Another problem, as you are learning above, is that new versions 
of XFree86, require other new pieces of software, such as 
freetype, fontconfig, expat, and other software as well.  In 
order to officially release all of those updated packages, we 
would technically have to make sure that any one of those 
packages can be updated on the system, and also work with the 
existing XFree86 in a compatible fashion, and that combinations 
of upgrades of the different pieces also work compatibly.  The 
amount of quality assurance testing complexity that it would 
involve to properly test the massive number of compatibility 
permutations in upgrading that many components is mind numbing.

One example I can think of, which I do not recall the specifics 
of, is that freetype exported some of it's internal interfaces in 
some releases, and that some stupid applications were using these 
internal interfaces and should not have been.  A newer version of 
freetype fixed this by not exporting those interfaces.  The 
applications which used them but should not have been of course 
would now be broken.  So releasing an update of freetype, would 
mean releasing an update of the other apps that ended up 
breaking due to updating freetype.  Imagine if that happened to 
be OpenOffice, Mozilla, and Nautilus.  The number of packages 
quickly expands to consume all engineering and QA resources.  The 
end result is that a large portion of the OS has been updated - 
just to upgrade something seemingly simple like XFree86.

So, while people can upgrade XFree86 on their systems manually,
and they might not have any problems personally with it, and may
never happen to run a piece of software that broke due to one of
the upgrades they did to get the new X installed, Red Hat, as a 
vendor will hear bad words from every user out there who does 
experience such a problem after such an update should an update 
be made available.

XFree86 is an extremely large major piece of software.  It is
totally impossible to test it completely in any combination of
automated or manual manner.  In particular, the most dynamic
thing is the video drivers, which may get upstream updates to fix
a given bug, add a new feature, etc. and silently break another 
card nobody developing has, or nobody tested on.  Perhaps that 
update just broke 16bit depth on C&T 65000 chip only, and all 
other C&T chips work fine.  Who would ever know?  To set up a 
test matrix to make sure these types of regressions are 
impossible would require being a company like IBM, and having 
every video vendor out there deeply interested in being involved 
and making sure their hardware works on as much hardware as 
possible.

That just is not something feasible at this stage of the Linux 
game.  And so, while companies such as Red Hat do make 
contributions to XFree86, fix bugs, and other companies do too, 
XFree86 largely remains developed by XFree86.org, the DRI 
project, and others in the community, and it is as high quality 
as it is handed over when branded with a new version number and 
release.  That gets integrated into RPM packaging, patches 
dropped that are included now, new problems that arise get fixed 
hopefully, and the beta test process begins.

>From a distribution beta test release perspective, as well as the
ongoing rolling rawhide packages, they're not just a test of any
given piece of software such as XFree86, but it is also a test of
how that software integrates with all of the other software being
beta tested.  As many bugs get fixed as possible of course, but
there are hundreds more bugs in XFree86 than are humanly possible
to fix with the number of people working on it both in
XFree86.org, the community, all distribution vendors shipping X,
and beyond.  There will always be bugs, and just like any other
vendor or distro, we just try to ship as bug free a version as
possible with the resources we have available, and to continue 
fixing problems that arise as best that can be done over time.

To release an update of a major new XFree86 release on an old OS,
means that while the video drivers are likely as well tested as
the new release of the OS, and other things are likely well 
tested too, there is no *integration* testing done by the public 
on the OS as a whole.  The risks are far to great at causing a 
domino effect of regression and requiring massive package updates 
for problems that could theoretically arise.

Does this all sound too complicated?  Probably, but this is just
a very brief commentary on why as a /general rule/ new XFree86
releases do not get released for old OS versions.  Whenever 
possible, drivers get updtated if it does not require significant 
re-engineering to retrofit them into an older X server as an 
update.  I've done this in the packages of 4.2.0 in RHL 8.0:

[mharris@xxxxx XFree86-4.2.1]$ ls -1 *cvs*
XFree86-4.2.0-apm-driver-update-cvs-20020617.patch
XFree86-4.2.0-ark-driver-update-cvs-20020617.patch
XFree86-4.2.0-chips-driver-update-cvs-20020617.patch
XFree86-4.2.0-cirrus-driver-update-cvs-20020617.patch
XFree86-4.2.0-i740-driver-update-cvs-20020617.patch
XFree86-4.2.0-i810-driver-update-cvs-20020617.patch
XFree86-4.2.0-mkfontscale-xcvs-20020618.patch
XFree86-4.2.0-pci-domains-from-cvs.patch
XFree86-4.2.0-siliconmotion-driver-update-cvs-20020617.patch
XFree86-4.2.0-trident-driver-update-cvs-20020617.patch

There are other updates as well.  However if someone finds that 
their chip is not supported, and will not be supported in any 
official OS update of XFree86, and they are told to upgrade to a 
new OS version for support for that chip - it is for a really 
good reason.  It means that adding support for that chip, is 
significantly complex that it would require major engineering 
resources, possibly even ending up forking the X codebase in a 
major way to even get it to work.

Intel i845 graphics is a good example of this.  i845 requires
invasive kernel changes, as well as very invasive X server
changes (compared to 4.2.0 that is), and the technical
specifications for the hardware aren't even possible if someone
did plan on doing it.  So that is why i845 will not ever be
supported in Red Hat Linux < 9.  If I could make i845 work in RHL 
8.0 in 2-3 days worth of work, then it might be feasible to try 
to do that.  It is not easily possible however, and so it will 
not happen.  There are massive number more things that are much 
more important for me to be working on, than wasting massive 
ammount of time trying to backport driver code without the 
hardware and without the docs, and with a huge amount of 
dependant code needing backporting as well.  It's easier to just 
upgrade the whole X server than maintain a massively forked 
backport.  And I've covered the reasons why an X server update is 
generally not feasible above.

You'll notice in the patches above there is:
	XFree86-4.2.0-i810-driver-update-cvs-20020617.patch

That was an attempt to backport the existing i845 video support
in XFree86 CVS as of June 2002.  It did not work at all for the
majority of people, but it worked better than nothing for a few
people, so it was kept, and it shipped in Red Hat Linux 8.0.  It
was unsupported of course, and remains unsupported.  

Nonetheless, it was an attempt I had made voluntarily on my own
personal time to try and get i845 running in any useable manner
on XFree86 4.2.0 in Red Hat Linux 8.0, and without having the
video hardware to even test with, and without any knowledge of
the hardware since the specs were not publically nor privately
available.  I had originally planned on trying to improve this in
my own spare time also, as I really couldn't justify spending
company time on doing what was largely a hack, and not something
that could be considered "supported".

The majority of feedback I received since then however about i845
support from users and customers however has been extremely
negative - ranting and raving.  People demanding that we support
i845, etc. and going ballistic when I tell them it is not 
supported, and that we wont ever support that video hardware on 
those specific products.

I've covered above why that support is not feasible to do, and
not going to happen, and that people need to upgrade to Red Hat
Linux 9 if they want officially supported i845 video.  If i845
could be made to work well in Red Hat Linux 8.0 or earlier
without a lot of effort, I probably would have gladly tried to do
so by now, even in my own time.

Due to the amount of complaining and negativity I've received
however, for something that is unsupported, and not feasible to
try to support, I dropped any plans to attempt doing this, as in
my personal time as a volunteer - as there wasn't anything
positive or good that I was receiving about it.

I've used i845 as a single example here, however there are lots
of other examples which could be used.  Some people want 3D
support for Radeon 8500 in Red Hat Linux 8.0 for example.  
Essentially, the only sane way to do that, is with XFree86 4.3.0.  
Ditto for many other hardware support related issues.

Soon there will be XFree86 4.1.0 updates forthcoming for Red Hat
Linux 7.1, 7.2 and the AS/AW/WS enterprise line of products.  
These updates contain some new video hardware updates that I was 
able to work on and integrate, including support for all 
remaining Rage 128 video chipsets, Savage driver update to the 
latest bits, some Radeon updates, Nvidia Quadro updates, and 
others.

There will be XFree86 4.2.1 updates for both Red Hat Linux 7.3
and 8.0 of which contain identical support and bug fixes now (but
different RPM packaging).  There is a new savage driver, R128 
updates as above for 4.1.0, FireGL 8700/8800 support update, and 
many many other updates as well.

There are still some driver and other updates which can be done 
without much effort for 4.2.1 and 4.1.0 however not a heck of a 
lot without going into major effort for little to no benefit.  

After this upcoming XFree86 update is released, both 4.1.0 and
4.2.1 will essentially go into security-fixes only phase, and
updates will only come out when there is a security issue found
that requires an update.  I will try to cram any stable sane
bugfixes into those updates as well, but people experiencing 
problems in those releases should expect that only security fixes 
will occur from now on for those releases, and that OS upgrades 
will be required in most cases where new hardware is unsupported 
in the given OS release currently.

Also, before someone asks me..  Yes, this will be an XFree86
4.2.0 -> 4.2.1 version update for Red Hat Linux 7.3 and 8.0, and
some people may see this as contradictory to what I've said above
(and below) about version upgrades.  XFree86 4.2.1 is only a 
cosmetic version number change that was made by XFree86.org for a 
security update.  XFree86 4.2.0 and 4.2.1 are identical support 
wise other than 4.2.1 containing a security fix (which we 
shipped as a patch to 4.2.0) and various other bug fixes which 
we've been shipping all along as patches to 4.2.0.  So while this 
is a version change, it is minor and only a few small patches 
different from our existing 4.2.0 packages not counting all of 
the new bugfixes I've rolled in personally of course.  ;o)

I will also be moving XFree86 packaging to a much more modular
set of packages sometime in the future, with the intent being to
be able to provide more frequent updates of certain pieces
without having to roll out a massive 150Mb errata to fix a
driver.  It'll be a gradual packaging shift that happens over
time rather than a major break in packaging strategy in order to
minimize user problems and whatnot.

I would eventually like to see the drivers split into their own
packages and be able to be updated independantly, and I'd like to
see the driver sources compatible across server releases in some
manner.  Those things require buy in from the upstream X supplier
however in order to truely be feasible.


>If there are no objections I'm going to try running with --nodeps. Last
>call! Stop me now if you know better!

Go nuts if you must, but do so realizing that dependancies exist
for a reason.  After running with "--nodeps", you can fully
expect whatever software required the given dependancies you've
chosen to ignore - to break.  That's not specific to XFree86 of
course, but is just the fact that dependancies are tracked by RPM
for a reason, and when you use --nodeps you are purposefully
saying "I know that this software *requires* this other thing in
order to work, but I don't care, install it broken anyway".


>Mike
>[who fortunately uses Pine]

Not so fortunate actually... pine was just officially removed 
from the distribution in rawhide.  Of course, I'll be maintaining 
pine rpms for RHL unofficially on people.redhat.com though, 
because I am such a nice guy.  ;o)

Anyway, I hope that some people out there got something
beneficial from my above attempt to rationalize XFree86 package
management and release engineering, and I hope people look at 
this much deeper in the future and with more perspective into the 
complexities involved in maintaining distribution software, and 
providing stable updates to the userbase, which are tested as 
much as can be reasonably done.

I hope people realize now that while upgrading any major software
component such as XFree86 on one's own personal system, may seem
to come off without any problems, that for a vendor to do it, a
lot more work must go into the process than just doing it and
saying "it works for me".  A vendor has a fair amount of
responsibility to its customers to not release software updates
which may cause any large risks to any particular part of its
installed userbase, and also to use its engineering and time
resources as wisely as possible, balancing future development 
with maintenance and support.  In the realm of video, that often 
means users will be required to upgrade their OS in order to stay 
up to date with the latest video hardware support available.

It's not the ideal solution, but it is the only really feasible 
one given the parameters and contraints.

One again, my apologies for the long book...  would you like 
another cup of Earl Grey?  ;o)


-- 
Mike A. Harris



_______________________________________________
xfree86-list mailing list
xfree86-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/xfree86-list
IRC: #xfree86 on irc.redhat.com

[Red Hat General]     [Red Hat Watch]     [Red Hat Development]     [Kernel Development]     [Yosemite Camping]

  Powered by Linux