tech-toolchain archive

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

Re: fully supporting static linking in NetBSD (ar "zero" flag)



der mouse has already given very good answers to most of what you've said so I'll only address the few remaining issues:
On 15-Aug-08, at 1:49 AM, Jason Thorpe wrote:
Of course, you could also make the argument that it's no longer PAM,  
because it's not exactly plug-able if you can't actually load a plug- 
in.
It depends on what one means by "pluggable" I guess, but I'm perfectly  
happy with compile-time plugins and the ability to dynamically chose  
from a static set of plugins that was created at compile time.
After all, I'd bet 99% of users will only ever be using the "static"  
set of plugins that was created at compile time anyway, regardless of  
whether their systems dynamically load them at runtime or not.
So, the silly thing is that a vast majority of users will never ever  
make use of more than one fixed set of plugins during the lifetime of  
their systems anyway.  All of that plug-ability (and complexity and  
overhead) is for nothing.  Let's not just waste development and  
maintenance effort on it!  Let's waste everyone's resources all of the  
time!
The sad thing is that another, simpler, safer, and arguably more  
secure alternative is freely available and could have been used in  
place of PAM but it was dismissed for reasons that even binary-only  
vendors cannot fully justify without resorting to arguments based  
solely on marketing hype and propaganda.  So much for goal number one  
of the NetBSD project (as it is stated publicly on www.netbsd.org).

Well, it's true that part of the issue with the current implementation is that pthreads is in a separate library. Note, I have also advocated for pthreads to move directly into libc, and for all programs to behave as if they are "threaded".
I'm actually sort of 100% behind you on that one!  (depending on what  
you mean by "behave as if they are threaded")
I do believe that it has been shown categorically that user-level  
threading in single processes leads to a great deal of unnecessary  
complexity, however I'm willing to buy into the utility of having  
threading available in libc et al for those programs who's designers  
have chosen to use threading instead of some simpler and more robust  
design.  We can't get rid of threading as a design methodology despite  
its obvious problems in some (many) programming languages -- it seems  
to be built into the way some people think, and perhaps for good  
reasons.
Most APIs that need fixing to make threading usable in C etc. in a  
more robust manner are arguably in need of some level of improvement  
anyway.  I'd be more than happy enough to have to use a separate  
compatibility library for code that didn't yet make use of the  
improved APIs.  Doing so would also be a good reminder for those using  
threaded code that they are using APIs potentially dangerous to their  
chosen design.  It would also be nice though if there were a lean and  
trim build of all the system libraries which didn't include any of the  
internal code needed for any internal locking, etc. which only  
threaded programs would require.  The latter should be easy enough to  
maintain as it should only be a compile-time variant.
All this might fly in the face of current standards compliance though,  
at least to some level.

I'm not basing this on "the requirements of binary-only vendors". And my assertion that modern systems "require in some way the use of runtime dynamic link/loading of code" is based on what I have observed of user expectations ... certainly not all users (since you are obviously so biased against the notion of dynamic extensibility).
Say it any way you wish -- what you've said still argues primarily for  
the requirements of binary-only vendors (or user who wish to use  
binary-only systems).
The vast majority of those requirements evaporate if one allows for  
users who are willing and able to recompile their systems when changes  
(such as new PAM modules, or new I18N code sets, etc.) are desired in  
their runtime environment.
Of course you could try to argue that users don't expect to have to re- 
compile their systems when their runtime requirements change, and to  
some degree that's always true, but I think it's _almost_ untrue when  
one considers the expectations of those who do expect to have and to  
compile source code in the first place.  (It seems even linux users  
would choose to compile and recompile far more often if in fact they  
could compile their systems as easily as one can compile NetBSD.)

We already don't have full support for static linking. There are some things that don't work well/properly if you use static linking. I don't think it's a good use of NetBSD's development resources to fix all of those issues and continue to maintain it going forward.
Clearly NetBSD would have more development resources available if it  
were to accept fixes and maintenance help for the very few things that  
don't work well/properly yet in a static-only system.  The rest of  
your argument is therefore bogus.
--
                                        Greg A. Woods; Planix, Inc.
                                        <woods%planix.ca@localhost>



Home | Main Index | Thread Index | Old Index