From owner-freebsd-hackers Tue Sep 26 14:24:46 1995 Return-Path: owner-hackers Received: (from root@localhost) by freefall.freebsd.org (8.6.12/8.6.6) id OAA22944 for hackers-outgoing; Tue, 26 Sep 1995 14:24:46 -0700 Received: from phaeton.artisoft.com (phaeton.Artisoft.COM [198.17.250.211]) by freefall.freebsd.org (8.6.12/8.6.6) with ESMTP id OAA22935 for ; Tue, 26 Sep 1995 14:24:37 -0700 Received: (from terry@localhost) by phaeton.artisoft.com (8.6.11/8.6.9) id OAA08299; Tue, 26 Sep 1995 14:15:29 -0700 From: Terry Lambert Message-Id: <199509262115.OAA08299@phaeton.artisoft.com> Subject: Re: ports startup scripts To: jkh@time.cdrom.com (Jordan K. Hubbard) Date: Tue, 26 Sep 1995 14:15:29 -0700 (MST) Cc: terry@lambert.org, kelly@fsl.noaa.gov, gryphon@healer.com, freebsd-hackers@FreeBSD.ORG, freebsd-ports@freebs.org In-Reply-To: <21914.812109715@time.cdrom.com> from "Jordan K. Hubbard" at Sep 26, 95 03:01:55 am X-Mailer: ELM [version 2.4 PL24] MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Content-Length: 6229 Sender: owner-hackers@FreeBSD.ORG Precedence: bulk [ ... the UNIX destop "battle" ... ] > You know how I like to compare the UNIX world to the Three Stooges > trying to fix a leaky faucet? Nobody actually works on the faucet > throughout the entire episode - they're too wrapped up in seeing who > can poke the other the most times in the eye. Well, that's how the > UNIX world has looked from an ISV's perspective for a LONG time! Who > do you think *writes* the bloody desktop apps? The ISVs. Do you > think that we at Lotus, for example, were overjoyed at the prospect of > doing entirely separate and laborious ports of NOTES, 1-2-3 and AmiPro > to everthing from SunOS to HP/UX? No, we weren't. We were stuck > doing 6 different platforms, in fact, all of which were majorly > different from one another! It was the polar opposite of fun! And we > were the bloody UNIX *experts* of the company! You can only imagine > how it looked from everyone else's perspective. The occasional VP > would stroll through and see this workgroup filled with literally > several million dollars worth of top end HP, IBM and Sun hardware and > they'd look at this little engineering group full of very highly paid > engineers (we were rare!) and they'd sort of shake their heads and say > "you need ALL this stuff to service a market 1/10th the size of OS/2 > or Windows?" And we'd say "yup! pretty #%&@*! stupid, ain't it!" With respect, the porting time required is proportional to the portability of the code. The overhead is realtive to how clean the code base is in the first place. People have complained about obvious aspects of my coding style on points other than the inane "goto" argument. My coding style evolved from 1984 to the present, supporting compiler and system incompatabilities and bugs in C libraries. The point is, that code written in that style compiled and ran on 142 platforms, 121 of them UNIX systems of one bent or another. Without modification. Probably why our async communications software beat out UUCP (which came with UNIX for *free*) by 2:1 in a UNIX World survey. The point here is that it is possible to code portably without worrying about porting issues by adopting code and software architectural styles that are sensitive *by design* to architectural differences (or compiler vagries, like improper handling of bitfields or comma operators or parenthisis or brace placement or inferior preprocessors, etc.). As a small software house, Century Software was able to go in and "port" to a new "UNIX box" in about a day, including running validation suites on product components and cutting two masters with any minor source changes that were necessary for reintegration into the code base. Let me repeat that: one day. In general, this is because system dependencies were limited to reliably present library routines (like tgetent/tgetstr/tgetnum) or encapsulated in a single module common to system types of that derivation (there were 5 sio.c modules for doing serial I/O on BSD+Xenix, SVR3+SVR4, VMS, DOS, and Macintosh, and 4 for handling terminal I/O). The software in question was a terminal emulation package capable of emulating 12 different base terminal types on any UNIX terminal, such that you could hook into a remote system expecting, for instance, a block mode IBM 3101 with your Wyse-50 attached to your UNIX box. It was enough to let you use VMS EDT/LSE/TPU on a Televideo 910. The problems faced by an application program, whose only real system dependency issue is the ability to interact with a tty, are really nothing compared to what was, in effect, system level software (the SVR4 code had to have the capability of pushing and popping the cannonical processing module of the streams stack, and the issues in allocating and deallocating modems, patial open hacks, etc., are really, really complex). Now I agree that Lotus was probably architecturally handicapped because of its DOS origins. Wordperfect was similarly handicapped. The reality of the situation is that these handicaps are entrenched only if it's not possible to roll portability changes back into the mainline code tree. And that problem's political, not technical. But it doesn't take a genius to write portable software. The support issues really boil down to release synchronization, and little else, once you have the portability concerns addressed. That's why I always harp on portability to old compilers: a small shop must borrow machines. > Bitter? Oh, not us. We wanted MORE versions of UNIX. Binary > compatibility? Heck no! Crazy ideas like that only let us stay home > with our families on the weekends! Needless to say, this was not an > unusual attitude among the other ISVs who provided you with everything > from Framemaker to Adobe Photoshop and THAT is why UNIX lost, yes > lost, the desktop market. UNIX was a highly dysfunctional family that > fought so long and hard that the children were finally taken away by > social services. Little help, when social services idea of a functional family unit is 1.6 kids, so they start oiling up their chainsaws. Code developed with restraint on Altos Xenix would run on SCO Xenix, SCO UNIX, ISC UNIX, Cubix and Microport. Code developed with restraint on a DG Aviion would run on DG, ICO, Sanyo, and other 88'open boxes. Code developed with restrain on an NCR Tower XP would run on a Tower 16, a Tower 32, a Sperry 5040, 5050, and 5060 (OEM NCR hardware with a Sperry (later Unisys) UNIX port. Binary compatability isn't nearly as big an issue as other ISV's were complaining about. And it's less of one today, now that Intel is the common hardware platform. And Century Software's products aren't the only ones who followed this model successfully. BBX, a "Business Basic" did the same thing. So did a lot of other vendors. So did Lone Star Software. I have no patience for ISV's whose complaints boil down to a political inability to achieve the correct technical soloution. If they had their way, the common ABI would be Windows .EXE programs and they would never have to port anything anywhere. Terry Lambert terry@lambert.org --- Any opinions in this posting are my own and not those of my present or previous employers.