<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Erik&#039;s Weblog &#187; Rants</title>
	<atom:link href="http://erik.labianca.org/blog/category/rants/feed/" rel="self" type="application/rss+xml" />
	<link>http://erik.labianca.org/blog</link>
	<description>A blog. About stuff.</description>
	<lastBuildDate>Tue, 28 Dec 2010 23:05:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Does it really have to be so hard?</title>
		<link>http://erik.labianca.org/blog/2006/10/does-it-really-have-to-be-so-complicated/</link>
		<comments>http://erik.labianca.org/blog/2006/10/does-it-really-have-to-be-so-complicated/#comments</comments>
		<pubDate>Wed, 18 Oct 2006 20:09:05 +0000</pubDate>
		<dc:creator>erik</dc:creator>
				<category><![CDATA[Rants]]></category>

		<guid isPermaLink="false">http://b.www.ilsw.com/blogs/erik/2006/10/18/does-it-really-have-to-be-so-complicated/</guid>
		<description><![CDATA[Fair warning, rant incoming. I&#8217;m working on a server development project, which will get deployed to CentOS 3 or possibly 4. Since I don&#8217;t currently have a spare machine that&#8217;s fast enough and able to blown away, I revived my &#8230; <a href="http://erik.labianca.org/blog/2006/10/does-it-really-have-to-be-so-complicated/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Fair warning, rant incoming. I&#8217;m working on a server development project, which will get deployed to CentOS 3 or possibly 4. Since I don&#8217;t currently have a spare machine that&#8217;s fast enough and able to blown away, I revived my linux dual boot on my main development workstation (2x opteron 242, tyan thunder k8w). I initially went with Fedora Core 5, since I figured I could easily enough rebuild using mock for centos4 and centos3. Except I&#8217;m getting my butt kicked by the &#8216;udev hangs&#8217; bug. No combination of kernel versions, acpi=off, noapic, udevtimout, selinux=disabled, apm=off or bios changes seems to make the machine boot consistently, let alone assign my ethernet cards consistently.</p>
<p>Since I have work to get done, I went ahead and installed CentOS 4.4, which luckily did install and with the addition of the Nvidia binary drivers is running my dual screens beautifully and stably. Now all I need in order to work happily is music! Unfortunately, most of said music is in mp3 format, and redhat doesn&#8217;t supply an mp3 decoding library, due to licensing issues. I understand the nature of the situation and don&#8217;t fault redhat for this, but nonetheless its really annoying. </p>
<p>There is no livna repository for rhel/centos, and trying to build the repos for fc3 or fc5 tends to introduce all sorts of dependency problems. And besides, I&#8217;m not getting paid to rebuild mp3 players, I have real work to do. I just want to listen to mp3s! Luckily for me theres a guy out there by the name of Dag Wieers who maintains a very nice set of RPMS for fedora AND rhel distributions, and his xmms package compiles cleanly with dependencies I&#8217;ve already got, saving me from working in misery for another few days.</p>
<p>However, all of this points to a major problem in the Linux world. As much as we love to hate it, Microsoft absolutely understands binary application compatibility. For a given version of windows, application developers know exactly what library versions are guaranteed to be available, and how to include the rest of their dependencies in a safe way.  Standard practice is to include the libraries that are needed inline with the application. Windows provides reasonably standard interfaces allowing the application register itself as a type handler and to add desktop shortcuts, quicklaunch icons or start menu entries. Every windows application developer writes one or perhaps two versions of application foo and makes up a nice little installer, and after a few iterations has an installer that works on windows, period. Sure it makes the average download kinda big, but honestly in the days of free after rebate spindles of CD-ROM&#8217;s, broadband for $15/mo, and 250gb hard drives for under $100, who cares? My time is worth a WHOLE lot more than a few extra megs used up on my drive.</p>
<p>Compare that to linux. Say I found out about this great new mp3 player. I go to their website, and see a source tarball. I try to build the source tarball and if I&#8217;m lucky the&#8217;ll have a competent ./configure script which will find out what dependencies I&#8217;m missing and tell me about them. At that point I&#8217;m looking at a significant period of time trying to find prebuilt versions of those build dependencies, or rebuilding my entire system from scratch. If I&#8217;m lucky, they&#8217;ll have an pre-built rpm package. However, 9/10 times that rpm is going to have a whole slew of unmet dependencies and I&#8217;ll have to spend several ours ferreting them out and downloading them. If I&#8217;m really unlucky, the application will depend on a whole slew of CPAN libraries, some of which will come with my OS, and some of which will require a perl version not included with my distro. I can understand needing to integrate directly with the OS when we&#8217;re talking about truly system level stuff, but 99% of the time thats not what I&#8217;m talking about. An mp3 player does NOT need to know what kernel version you have, nor does it generally need to know much of anything about your system. It doesn&#8217;t need to know what version of python, perl, or php is included with your distribution, nor what extensions those libraries include.</p>
<p>Linux distributions absolutely must get away from the &#8216;distribution contains every application&#8217; mentality. Right now, if an application doesn&#8217;t come integrated with an additional application, or have a version packaged specifically for that distribution, life sucks for the user. Life also sucks for the application developer, who would like to see his software able to be used by everybody, but can&#8217;t, because he uses debian and doesn&#8217;t know how to package for redhat.</p>
<p>The answer to this, of course, is the Linux Standards Base (LSB). It describes a set of ABI&#8217;s that the OS should guarantee, and defines how an application developer can package up the rest of their dependencies so their application can run on any system providing LSB support. Every major linux distro out there supports LSB applications, except I don&#8217;t see a single open source application providing LSB binary downloads!</p>
<p>Why? I&#8217;m not positive to be honest, but I&#8217;m willing to take a guess. It&#8217;s too dang hard to build for. I&#8217;ve not done a lot of research on it yet, but I just haven&#8217;t seen an easy to use buildroot for LSB on redhat. Nor have I seen an easy to follow howto for building LSB applications. In addition, it&#8217;s probably just sorta inconvienient for developers, who pick a disitribution they like and just run with it, following the dependencies.</p>
<p>In our zealotry for open source, we continue to paint ourselves into a binary incompatibility corner that is simply unsustainable. The OS (distribution) absolutely needs to be able to evolve, or not evolve, as it needs. Applications need to be able to evolve (or not evolve) independantly. If I want to listen to be able to mp3&#8242;s, I should be able to choose from a variety of mp3 players (the code is out there!) and use them easily. That means we need real binary application compatibility, just like consumer OS&#8217;s. If I want to run a bleeding edge browser on my otherwise stable machine, thats my prerogative, and it shouldn&#8217;t require me to invest a day resolving all the requisite dependencies and building the thing from scratch. Regardless of what Gentoo folk will try to convince you, rebuilding everything from scratch and customized is not a sustainable way to run an operating system. It takes too long, and is too complicated to ever allow mainsteam users to do it, or even people who just have better things to do! </p>
]]></content:encoded>
			<wfw:commentRss>http://erik.labianca.org/blog/2006/10/does-it-really-have-to-be-so-complicated/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

