Just say no to +universal
Jordan K. Hubbard
jkh at brierdr.com
Sat Mar 3 13:39:37 PST 2007
On Mar 3, 2007, at 12:49 PM, James Berry wrote:
> I'm quite distressed by the concept of too much work (and too much
> ugly code) going into building +universal variants of ports.
>
> I'd like to see people refrain from completely bastardizing
> portfiles in order to support universal builds. Let's be
> reasonable: the case for universal builds is fringe. We don't have
> easy ways to transport binary ports between systems, and it's not
> in general a safe thing to do.
I understand what you're saying with respect to "lack of easy
transport", but I can't agree that "the case for universal builds is
fringe.". Perhaps you're talking about "fringe" purely with respect
to MacPorts itself, but let's zoom out for a moment and look at the
bigger picture again.
First, universal binaries are here to stay and, once you start
running Leopard, you will begin to look at anything which is NOT
universal on your system with annoyance and disdain. The reason for
this is something I've already covered - the Macintosh community is
becoming increasingly heterogeneous in nature as more and more Intel
machines join the PPC installed base, and the best thing we can do
for this community ("we" being both Apple and its associated
developers) is make it increasingly irrelevant just which
architecture they're using, be it PPC, PPC64, x86_32 or x86_64.
Stuff they download off the net or run off of a CD, network or
firewire volume should Just Work™ and work in a highly performant way
- Rosetta is really a technology of last resort so please don't
imagine that "ppc everywhere" is a good idea.
We're already seeing the user community put a lot of pressure on
folks like Adobe to get their stuff universal since things like plug-
ins and extensions make a non-Universal world really a nightmare
(particularly when you need a PPC-only plug-in and an x86-only plug-
in running in a web browser - you end up having to run two
browsers). So, bigger picture, Universal is the way to go and it's
the message we're sending to everyone, both because it's the right
thing to do from an advanced-technology perspective and because we
want to present a united front on this issue to the commercial ISVs
who might otherwise be tempted to let this one slide for awhile
longer and continue to impact the overall Macintosh user experience
in negative ways.
So, enter MacPorts. Does MacPorts absolutely need to do this or
nobody will ever use it again? Of course not. There is, however,
still a lot of confusion and ignorance in the OSS community about how
to build things universal (particularly in the presence of configure
scripts, which definitely need to evolve). A build-framework like
MacPorts has the ability to substantially lead the way here and, by
example, demonstrate to literally thousands of open source developers
just how to do it. Just as importantly, by grasping the nettle at
the build stage, MacPorts is not setting itself up for more work at
the packaging stage it (I hope) eventually wants to get to. Nobody
is seriously suggesting (I HOPE) having parallel collections of many
thousands of packages, one for x86 and one for ppc (and, at some
point, one full of experimental 64-bit capable stuff), when it's
perfectly possible and encouraged to have just ONE package collection
that works for everything. By not figuring out how to build
universal, MacPorts would merely be stealing resources from the
future in order to be lazy in the present. There would be no net
gain and definitely a net loss as the ability to share a single /opt
among multiple machines on a network went out the window too.
I also think MacPorts will increasingly find itself to be the odd man
out if it doesn't go down the universal road. People ARE figuring
out how to do it and it's become something of a badge of honor to get
your application and frameworks building n-way universal so that your
users don't have to think about anything more than which version of
your product or project they want. People who are using xcode have
an easier time of it - they just click the universal checkbox and,
unless they've written something egregious into their code, it just
works. I hope you're not saying that the Unix command-line driven
community can't possibly build its stuff as well as xcode can since
them's fightin' words. :-)
Now, if you're saying that the initial efforts to get there have been
clunky and inelegant then I'm not going to dispute that since you're
probably right. That doesn't mean you throw the baby out with the
bathwater, however, it means you figure out how to do a better job of
it by learning from your early mistakes!
- Jordan
More information about the macports-dev
mailing list