[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: ANN: One Step to GNUstep - pre-release version 0.9

From: Nicola Pero
Subject: Re: ANN: One Step to GNUstep - pre-release version 0.9
Date: Mon, 13 Jun 2011 00:54:05 +0100

> The latest release versions of clang and the GNUstep runtime provide feature 
> parity with the iPhone Objective-C stack, but lack GC support.  The current 
> trunk releases provide feature parity with OS X 10.6, including GC support.
> [...]

Well, if the system is targeted at new users who are not experienced with the 
platform, shipping the native compiler
of the platform is the best choice, because that means that compiler is very 
well integrated with the environment
and provides a smooth, native experience.  On GNU/Linux systems, that means 
GCC.  On newer versions of *BSD it may
mean clang, so in that case it may make technical sense to ship clang.  On 
GNU/Linux it definitely makes more technical
sense to ship GCC as the default compiler, so that users are guaranteed to get 
the "It just works" experience. ;-)

Then there is the point that, if all that matters is the technical "feature 
parity" with Apple, then buy an Apple; why bother
with GNUstep.

GNUstep is not just about technical feature parity; it's also and mostly about 
software freedom.  It's a GNU/FSF project,
and for many people in the project using a GNU/FSF compiler is important, more 
important than having some small
additional feature.

I *want* to use a GNU GPLv3 compiler, because the license is designed to 
protect small users and contributors (such as me)
from the rapacity and amorality of large corporations (such as Apple) - 
something that *BSD licenses (like the ones used by
clang/LLVM), with their "no rules", "far west capitalism" approach, don't.  If 
you consider the track record of Apple dealing with
open source projects, you'll clearly see the dangers.  Apple likes their 
version of "open source", where you can see the code,
send bug fixes and contribute improvements (so that they save money on 
development costs) but to actually use the result
you'll have to buy an Apple product; the Apple Objective-C runtime is a great 
example.  With clang they're pushing even further,
since clang on Linux is basically now the freeware trialware version of Apple 
XCode; of course to get the real thing you have to
buy an Apple product because the license allows them to have "open source" 
developers (ie, unpaid developers outside of Apple)
look at the compiler code, debug and improve it, but the actual final product 
(XCode where the compiler is deeply integrated
into the real IDE) can only be obtained by purchasing an Apple product.  And if 
something ever goes wrong with this model,
they can still announce that they're merging clang/LLVM into XCode and you'll 
never see a single line of source code of it again.
When they changed their strategy and suddenly stopped contributing changes from 
their GCC fork back into GCC mainline,
the GNU GPL license at least forced them to keep publishing the source code of 
their fork (they still managed to actively prevent
it being merged into GCC mainline by refusing to assign copyright to the FSF, 
which shows how little they care about the community);
with clang/LLVM they don't have to, so at the next change of strategy, the 
whole thing could suddenly disappear into Apple
and all you'll get from them will be your next binary-only, Apple Mac OS 
X-only, shipment of XCode.

Anyhow, the point of the rant is that I do prefer GCC to clang purely due to 
the different licensing.  And I do prefer the GNU runtime
to your runtime for exactly the same reasons.  And I expect that some (not all) 
of the people who try GNUstep may feel the same way
and may be trying GNUstep precisely because they don't like the Apple licenses, 
environments and corporate practices.  They
would be looking for a better alternative; an environment with higher moral 
standards and stronger rules to stop big corporations
from abusing the small guys.  In that case, giving them a GNU GPLv3 compiler 
(such as GCC 4.6.0) seems an excellent idea.

> Some people may wish to have GCC support as well.  I've recently stopped 
> testing everything with GCC, as the lack of features means that I can no 
> longer build significant portions of my code with it (anything that requires 
> the non-fragile ABI or blocks, and anything that needs to interoperate with 
> code using GC), although I still try to test code that only uses ObjC 1 
> features with GCC 4.2.1 (the last GPLv2 version - the license change means 
> that I will probably never see more recent GCC in the FreeBSD base system - 
> FreeBSD 9 is expected to ship with Clang and GCC, FreeBSD 10 with just Clang).

That's a pity, because it means your code won't be tested with the compiler 
that most of the GNUsteppers
are using by default, which is GCC.

> Étoilé requires the GNUstep Objective-C runtime for various features, most 
> significantly for LanguageKit, which depends on certain features of the 
> runtime which make it easier to target for languages like Smalltalk.  Various 
> modules require clang, although I think the core ones (EtoileFoundation and 
> friends) will still build with GCC.

Making everything depend on clang and your own runtime seems clearly a bad idea 
to me; certainly
not one that we want to recommend or present as an example.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]