From mboxrd@z Thu Jan 1 00:00:00 1970 Mime-Version: 1.0 (Apple Message framework v749.3) In-Reply-To: <2256501d5763ca7585ed7c8a52da5efd@quanstro.net> References: <2256501d5763ca7585ed7c8a52da5efd@quanstro.net> Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: <69296165-14FA-4F30-8923-F49C151B5778@orthanc.ca> Content-Transfer-Encoding: 7bit From: Lyndon Nerenberg Subject: Re: [9fans] impressive Date: Tue, 9 May 2006 19:09:46 -0700 To: Fans of the OS Plan 9 from Bell Labs <9fans@cse.psu.edu> Topicbox-Message-UUID: 4fc04e04-ead1-11e9-9d60-3106f5b1d025 > i think your problems miss the point. an explicit portability layer > is another name for a virtual os interface. breaking things > up on a call-by-call basis creates calls^2 virtual os interfacen. > good luck in testing. And in the case of things like the APR, it forces you to learn an entirely new set of interfaces. > the ironic bit about autoconf is that the vast majority of autoconf > garbage > is dedicated to features that don't make any difference. using the > lowest-common denomitor call would work just as well. (and why > not, you have to code this case anyway.) A case in point is some web-related stuff I'm dealing with at work. I'll use libxml2 as an example. A grep for HAVE_ at the top level of that source tree turns up: HAVE_ANSIDECL_H HAVE_ARPA_INET_H HAVE_ARPA_NAMESER_H HAVE_BEOS_THREADS HAVE_COMPILER_TLS HAVE_CTYPE_H HAVE_DIRENT_H HAVE_DLFCN_H HAVE_ERRNO_H HAVE_FCNTL_H HAVE_FINITE HAVE_FLOAT_H HAVE_FPRINTF HAVE_FSCANF HAVE_FTIME HAVE_GETADDRINFO HAVE_GETTIMEOFDAY HAVE_INTTYPES_H HAVE_ISINF HAVE_ISNAN HAVE_LIBHISTORY HAVE_LIBM HAVE_LIBPTHREAD HAVE_LIBREADLINE HAVE_LIBZ HAVE_LIMITS_H HAVE_LOCALTIME HAVE_MALLOC_H HAVE_MATH_H HAVE_MEMORY_H HAVE_NETDB_H HAVE_NETINET_IN_H HAVE_PRINTF HAVE_PTHREAD_H HAVE_RESOLV_H HAVE_SCANF HAVE_SIGNAL HAVE_SIGNAL_H HAVE_SNPRINTF HAVE_SPRINTF HAVE_SSCANF HAVE_STAT HAVE_STDARG_H HAVE_STDINT_H HAVE_STDLIB_H HAVE_STRDUP HAVE_STRERROR HAVE_STRFTIME HAVE_STRINGS_H HAVE_STRING_H HAVE_STRNDUP HAVE_SYS_MMAN_H HAVE_SYS_SELECT_H HAVE_SYS_SOCKET_H HAVE_SYS_STAT_H HAVE_SYS_TIMEB_H HAVE_SYS_TIME_H HAVE_SYS_TYPES_H HAVE_TIME_H HAVE_UNISTD_H HAVE_VFPRINTF HAVE_VFSCANF HAVE_VPRINTF HAVE_VSCANF HAVE_VSNPRINTF HAVE_VSPRINTF HAVE_VSSCANF HAVE_WIN32_THREADS HAVE_ZLIB_H If you weed out the bits that are already in Posix, you're left with a few legitimate feature tests (libz, libreadline, getaddrinfo), a test for the underlying threads implementation, workarounds for some obsolete variants of time handling (all of which can be accommodated by Posix), and some fancy printf variants, which the library has to provide compatibility routines for anyway. And why the configure script cares about what version of FORTRAN 77 compiler I have simply escapes me. It's endemic. The fact that it's not malicious is even worse. The people coding this stuff just don't know any better: they learn from what they see already deployed. Critical thinking doesn't exist any more :-( Another case in point ... this afternoon one of our product architects (!) informed us we needed to install a wiki on the production web blades. Why? Because they needed to serve up some 'nicely formatted' static web pages to a couple of customers, and all they knew how to generate was in a wiki syntax format. They didn't know how to turn that into pretty HTML, so this was the solution. They were stunned when we proposed a simpler alternative. (Call the documentation folks.) --lyndon