Commentary

Serdar Yegulalp
 

One FatELF Binary To Run Them All

Even Linux's advocates are unthrilled at one of its sticking points: binaries built for one breed of Linux don't always run on another. And since unifying Linux into a common distribution is about as likely as herding a circus ring full of cats into a clown car, people who want to distribute prebuilt binaries for Linux have few choices. Here's a new choice: FatELF, or universal binaries for Linux.

Even Linux's advocates are unthrilled at one of its sticking points: binaries built for one breed of Linux don't always run on another. And since unifying Linux into a common distribution is about as likely as herding a circus ring full of cats into a clown car, people who want to distribute prebuilt binaries for Linux have few choices. Here's a new choice: FatELF, or universal binaries for Linux.


More Software Insights

White Papers

More >>

Reports

More >>

Webcasts

More >>

The idea's actually rather similar the universal binary concept as implemented on the Macintosh. There, a single file encapsulated executables for both the PowerPC and Intel versions of a given program -- a way to transition Apple's audiences gracefully from the old architecture to the new one.

The Linux issue is a bit different. Diversity of implementation is Linux's sine qua non: without it, Linux is that much less Linux. To that end, the vast majority of software for Linux is distributed in ways that take this in account:

  • Open source code, compile by the end user.
  • A package in the distribution's repository, typically also compiled from source by the distro maintainers.
  • As binaries built for each specific release of Linux (e.g., the Opera browser).

The first option is for experts only, and even many pros don't want to be bothered with the hassle of compiling from source. (After suffering through it a few times myself, I don't blame them at all.) The second is Linux's standard approach, but whether or not an app is included in a repository is entirely up to the whim of the people maintaining it. Approach #3 puts a great deal of burden on both the end user, who has to select the right edition for his distribution and hope it doesn't blow up in his face; and the software creator, who has to not go cuckoo while trying to support multiple builds of multiple distributions.

Things could clearly be better.

FatElf has one possible incremental solution. It's an infrastructure for packing into a single file multiple copies of a binary as built for different Linux revisions, CPU architectures, and so on. It's a bit like an archive format, but built specifically to package binaries and allow the right one to be selected and used.

The one clear drawback to doing this is it causes the binary files themselves to become that much bigger. As the author indicates, the binaries themselves are often only a small part of the overall size of an application. (A demo VM of Ubuntu 9.04 has been built as a proof-of-concept for the idea, and it demonstrates this side effect most explicitly--it's much larger than your stock copy of Ubuntu.)

It's an interesting idea, but it underscores something about Linux that will most likely remain synonymous with it: Linux is designed with the tacit assumption that all (or nearly all) software run on it will be open source. The majority of software makers aren't likely to adopt open source as a significant part of their development and marketing strategies anytime soon (if ever), so it's in Linux's best interest to find some way to allow closed binaries to run gracefully. This might not be it, but it's worth a try.

NewScale shined in our test of four service catalog offerings: portfolios of services that an IT organization offers its end users. But the competitors--CA, PMG, and Service-now.com--also have compelling strengths. Download our report here (registration required).

Twitter: Me | InformationWeek
Facebook: InformationWeek


Related Reading




Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

InformationWeek encourages readers to engage in spirited, healthy debate, including taking us to task. However, InformationWeek moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing/SPAM. InformationWeek further reserves the right to disable the profile of any commenter participating in said activities.

Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
T-Shirt Giveaway T-Shirt Giveaway: Each week we're selecting one great comment from our readers. The author of the comment will receive an InformaitonWeek Community t-shirt. So get posting!
Subscribe to RSS

Resource Links