Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 12 Jul 2000 17:18:51 +0000 (GMT)
From:      Terry Lambert <tlambert@primenet.com>
To:        jcwells@nwlink.com (Jason C. Wells)
Cc:        brett@lariat.org (Brett Glass), chat@FreeBSD.ORG
Subject:   Re: No port of Opera? (Was: ((FreeBSD : Linux) :: (OS/2 :  Windows)))
Message-ID:  <200007121718.KAA20548@usr07.primenet.com>
In-Reply-To: <Pine.SOL.3.96.1000708134143.4431C-100000@utah> from "Jason C. Wells" at Jul 08, 2000 01:44:41 PM

next in thread | previous in thread | raw e-mail | index | archive | help
> The FreeBSD ABI was your idea, though I predict it was merely a
> rhetorical device. You develop it! 

It was my idea, from 1994.

The actual idea was called "FABIO", for "Free Applicabtion Binary
Interface Objective"; yes, I know that it's a stretch to fit the
acronym.

The intent of the idea was not necessarily to have the FreeBSD
ABI everywhere, but was to have the same x86 UNIX ABI everywhere.

The IBCS2, SVID III, POSIX, Spec 1170 (now Single UNIX Specification)
are all inadequate to this task, as evidenced by the fragmentation
of the UNIX market.

The main driving force behind this fragmentation is, IMO, the
fact that vendors all attempt to "add value", which is, to
translate from marketspeak into English, it "introduce binary
incompatability which will allow programs from other platforms
to run on theirs, but not vice versa".

Linux and FreeBSD have both been guilty of this sin, though
FreeBSD less so, since it is (compared to Linux) fairly stable.

To combat this would require, in my opinion, a commitment
similar to that outlined in my original FABIO posting to
usenet:

1)	One of the commercial UNIX systems, SCO, SVR4, or
	Solaris, will be chosen as the reference "Level 2
	compliant FABIO platform".

	This platform will dictate all manifest constants
	for signal handlers, ioctl() calls, etc..

	Since commercial platforms are relatively frozen in
	their ABI, these values are unlikely to change,
	unlike trying to track the various Linux and BSD
	moving targets.

2)	We accept the following definitions:

	Level 2 Compliant FABIO platform:

		A level 2 compliant platform implements all
		FABIO ABIs, dynamic linking, packaging and
		installation technologies, shared libraries,
		etc..  This guarantees that programs written
		to the FABIO standard _will_ run on _all_
		FABIO platforms.

	Level 1 Compliant FABIO platform:

		A level 1 compliant platform is level 2
		compliant.  In addition to level 2 compliance,
		a level 1 compliant platform _SHALL_ have the
		ability to _turn off_ acccess to all non-FABIO
		ABIs.  This guarantees that, if a developer
		utilizes a level 1 compliant platform, they
		will not accidently incorporate vendor private
		extensions to the OS as dependencies.

3)	Clearly, sane vendors will only choose level 1 compliant
	platforms, since it will guarantee the highest degree of
	portability for the resulting binary applications, for
	the lease amount of effort.

4)	Clearly, sane OS developers will fall in line with the
	standard.  This will commoditize x86 UNIX, for better or
	for worse, but that is rather the point of the exercise.

I believe this proposal is as valid today as when it was first
presented.


					Terry Lambert
					terry@lambert.org
---
Any opinions in this posting are my own and not those of my present
or previous employers.


To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-chat" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200007121718.KAA20548>