From alsa-devel-owner@alsa.jcu.cz  Mon Mar  1 20:05:22 1999
Received: from screech.cs.alfred.edu (IDENT:root@screech.cs.alfred.edu [149.84.148.201])
	by marvin.jcu.cz (8.9.1a/8.9.1) with ESMTP id UAA11936
	for <alsa-devel@alsa.jcu.cz>; Mon, 1 Mar 1999 20:04:54 +0100
Received: from Screech (lansdoct@Screech [149.84.148.201])
	by screech.cs.alfred.edu (8.8.7/8.8.7) with ESMTP id OAA27641
	for <alsa-devel@alsa.jcu.cz>; Mon, 1 Mar 1999 14:04:33 -0500
Date: Mon, 1 Mar 1999 14:04:33 -0500 (EST)
From: "Christopher T. Lansdown" <lansdoct@screech.cs.alfred.edu>
To: alsa-devel@alsa.jcu.cz
Subject: Re: (SB Live) Free drivers or not? (fwd)
In-Reply-To: <3.0.32.19990301095540.0096cb20@mail.inprise.com>
Message-ID: <Pine.LNX.4.05.9903011333590.27296-100000@screech.cs.alfred.edu>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
Reply-To: alsa-devel@alsa.jcu.cz
Sender: alsa-devel-owner@alsa.jcu.cz
Precedence: list

> Ok..I do have to say something here. I am fully enjoying playing with
> Linux, learning it, and I do see its much more stable and powerful than NT
> any day of the week. However, there IS a problem that I believe is going to
> keep mainstream developers away from Linux. That is from what I have been
> reading, a developer needs to support MANY setups with one app. This is
> crazy for the most part. 
	It's also wrong unless it is specially understood.  The developer
of an application should make it work accross CPU platforms, i.e. on 32
bit and 64 bit platforms.  You should have binaries for: x86, PPC, SPARC,
AXP (alpha), etc.
	On the other hand, these huge incompatabilities are generally
bogus.  If you follow the rules (i.e. don't rely on things that you are
explicitly told not to rely on, such as kernel internals or libc
internals), you shouldn't have any problems.  Sure, if you release glibc
binaries only some libc people will complain.  If you release NT binaries
only some win95 and win 3.1 people will complain.  There are always people
who are far behind everyone else on every platform.  That doesn't
constitute any significant incompatability.  Recompile your app for libc.
There might be a problem or two (there are a few problems in the libs wrt.
compiling between libc and glibc, but they are very rare and I have only
really encountered one, and that was handled by an #ifdef), but it's a
hell of a lot less of a headache than NT 3.51 vs. 4.0, from what I've
heard.  Linux (as a sort of UNIX OS) really has the stability that most
other platforms want.

> I understand Linux is a liberating OS that has no
> ties to a standardization of any sort. 
	That's completely bogus.  Linux is almost completely POSIX
compliant, and there were talks about getting Linux UNIX 98 certified,
though I don't know where those talks went (money issues mostly, with a
few technical ones, I think).  The entire Linux model is about
compatability.  Everything has strict APIs that they conform to.  This
doesn't apply to development projects.  Gtk+ and gnome are examples.
Though Gtk+ is in version 1.2, it is still undergoing heavy development.
It will change.  Of course, you can always write for the older stable Gtk+
libraries and everything should be fine.  you won't get the latest and
greatest, but if you are worried that much about compatability, you
probably aren't worried about the latest and greatest.  Btw, are you
familiar with the library versioning scheme and how that relates to ld?

> However, one thing I firmly believe
> is that if Linux is trying to be targeted as the future OS, there will have
> to be some standards in place!  ALSA is one up and coming standard. As long
> as it works with ALL possible configurations, then it can become a
> standard. But you can have something be a standard that only works with one
> version of one library. 
	OSS is a standard right now.  If you write for OSS, you are
basically guaranteed to work on almost all platforms, unless you do it
wrong.  Of course, if you do it wrong, you'll always be screwed, so that's
not saying much.

> I may not understand the development process under Linux very well yet. Is
> it possible to write an app for X and know that 3 years down the road..it
> will still work with X? Or is that it is more likely it wont work in 6
> months due to some bug fixes, a patch, and a new version release that
> "changes" how X works? 
	It's very possible.  I've run X applications that were 6 years old
and worked fine in terms of the interface (they had some internal bugs).
The X protocol is very stable.  The one things is this: follow the APIs,
not the behaviors.  Open source people rarely make anything backwords bug
compatible.  If something was a bug, it will generally be fixed.  If you
didn't make a flexible work-around, but instead depended on the bug, you
will be screwed.  If you were writing an open source app, you'd get the
fix inside of a week.  If you are writing a closed source app, you will
get the people who paid you money complaining.  Of course, this is, to my
knowledge, rarely an issue.  X is very stable API-wise.  Most of Linux is
very stable API-wise, actually.  The only things that aren't are internals
(and you shouldn't rely on another programs internals) or development
projects.  Don't expect gnome to stay the same for a while, it needs to
mature first.  Expect X to stay the same for a long time, it is mature.

> The one thing MS Windows has going for it is
> backwards compatibility. Its nice to know when you buy software, it will
> always work on all new versions. Ofcourse..thats not to say MS  themselves
> dont add bugs to the OS which cause the program to crash. That happens all
> the time. 
	What's the point of this "compatability"?  It basically boils down
to, the APIs are mostly intact.  The behavior may change.  Odds are that
your program will work unless you did anything remotely out of the
ordinary in which case it will probably either crash more or not work at
all.  Win 3.1->95 had plenty of programs that wouldn't work.  NT 3.51->4.0
Had plenty of programs that didn't work on one or the other.  Hell, there
are plenty of programs that are service pack specific under both NTs.
Sure, most stuff will work.  Most.  The same goes for Linux stuff, except
that mature APIs and implementations very rarely change much, and they are
never broken to screw over competitors or drive up sales of more recent
versions.

> But, I am saying, while I dont want to see Linux ever so close
> ended as Windows is, it would be very nice to see some sort of
> standardization for specific areas of computing, such as multimedia, 
	This one is just vacuous.  Sound: OSS, Video: X, CDROM: it's a
plain old drive.  What else falls under the umbrella of multimedia?

> hard drives, 
	That is standardized.  mount/umount/fsck/mkfs.ext2.

> scanners, 
	The SANE project is working on that.  They have a decent number of
scanners support at the moment, IIANM

> printers, 
	lpd.  There are filters available for a decent number of printers,
though things can be sticky.  This area needs improvement, but lpd will
probably still be the standard, just an improved lpd.

> etc. The idea would be to make sure once these
> drivers are in place, new versions will not break apps using the old ones.
> Otherwise, if every few weeks, or months, a new version came out that did
> this, all apps using the old set would have to be recompiled and
> redistributed. While us hackers and developers have no problem downloading
> the latest fixes, updating, etc. That will NEVER fly with end users such as
> home users that just want to play some games, or run a financial program. A
> LOT of people LOVE hearing "the latest and greatest." I have so many
> friends that no nothing about computers, but because they got a "faster"
> one than I, or because they got more memory, etc..they brag about how great
> it is. I have seen this in the software industry too. People that no
> nothing love to tout about the latest Office suite they got, and what it
> does, etc. People LOVE new things, and are willing to pay to upgrade, have
> it, or for someone to do it for them. There are WAAAAY more followers than
> doers in this world, and the majority of end users are followers. They hear
> a new version is coming out and they just have to have it. In the Linux
> world, if it reaches a wide-spread desktop in the future, it cant be
> breaking old libraries and have all these people upgrade to the latest OS
> but find (usually after they upgraded and cant go back) that most of their
> software wont work anymore. That will definitely not allow Linux to
> infiltrate the MS windows desktop. 
	This is two issues:
*backword compatability.  This is generally better on Linux than on
windows, Linux people don't break their APIs to sell more copies of the
new ones.  I guess that you aren't familiar with the way that dynamic
library versioning goes and what that means.  If so, please tell me and I
will explain it.

*WINE progress.  The WINE (Windows Emulator) project is making great
strides.  You can run, fairly well, some versions of word now.  I don't
know what the future of wine holds, but it is probably pretty good.  I
know of a bunch of games that apparently run very well under wine, and
I've heard about a bunch of productivity programs that work well under
WINE.

*Actually, it just occured to me that you mean their Linux applications,
not their windows applications.  I'll put it this way: if they switch CPU
types, their binaries won't work.  If they switch kernels, everything
should work.  If they switch to new versions of the libs, everything
should work.  Overall, binary compatability is pretty good unless you were
doing some weird development stuff, which binary only people rarely do.

> Then again, I dont know if Linus and the Linux OS aims to do that or not. I
> would hope so..just to break the MS empire. But who knows.
	Actually, Linus has publically stated that he hopes that Linux
grows to around 30% of the market, but no more.  He wants interoprative
diversity, not really world domination.  As long as everyone works with
each other, diversity is definitely the way to go.
	-Chris

lansdoct@cs.alfred.edu
"If I had had more time I would have written you a shorter letter." - Pascal
Linux Programs: http://cs.alfred.edu/~lansdoct/linux/
Linux - Get there. Today.


