Subject: Re: Installing and other projects
To: Thor Lancelot Simon <tls@cloud9.net>
From: Jordan K. Hubbard <jkh@time.cdrom.com>
List: port-i386
Date: 12/15/1995 08:35:35
> Problems:  It required ncurses, it used ridiculous highlight colors that
> created a nice 3D effect on syscons but looked terrible on pccons, it
> used a poorly-documented and poorly-written GPL'ed library ("libdialog"),
> and it was so i386-specific as to be essentially useless on any other port.

Well, you have to at least understand that I don't use pccons, as is
the case with most other FreeBSD users, so I was simply shooting for
what would give the best appearance for the default syscons-based
installation.  In point of fact, I've never run pccons and genuinely
have no idea *what* it looks like there.  Perhaps if the NetBSD folks
were more involved, these sorts of things would be caught and nipped
in the bud before they happened. :-)

Second, I agree that libdialog sucks.  Believe me, I probably know
more about it from an application developer's perspective than anyone
in the FreeBSD project, and I can cite chapter and verse the exact
nature and degree of suction it creates! :-)

But it was also available, and hence infinitely more desirable than
something that wasn't.  My desire and plans to replace it have
certainly been no secret.

> I decided it would really be easier to just write a small curses-based
> program to deal with the disk partitioning, get X to run from the CD,
> and eventually redo the whole thing in Tk.  Of course, I never got around
> to doing a great deal of this stuff.

Yep. :-)

That's what happens when you set your objectives too high, and a
classic mistake that I've made several times in redesigning both
sysinstall and the packaging tools.  We may all aspire to high ideals,
and it's enjoyable to do so, but we're also forced live in the real
world where it's usually just not down to the design choices or some
concept of architectural purity.  Why did my package tools become a
defacto NetBSD standard?  Because nobody wrote better ones.  Why did
nobody write better ones?  Because they spent too much time thinking
about ideals and not enough about the empty editor buffer in front of
them! :-)

I don't mean to come across as too snide here, but it seems that this
is an important point that most programmers are forced to re-learn
again and again.  Like the search for the ideal woman, it comes down
to a compromise between "Miss Right" and "Miss Right Now" ;-)

Don't get me wrong - I *love* architecturally clean models, and my
weakness for lovingly crafted APIs that could not be improved upon if
one tried is legendary (see some of my previous pie-in-the-sky
proposals for "the new package system" or "the new install"), but I
also have very fixed objectives to meet and those don't give a whig
for how pure my intentions are.  That's why I wrote the pkg_* stuff in
the first place, though I knew they sucked even as I was writing them.
*Something* was needed right away and I didn't have time to put into
doing an all-singing and all-dancing solution.

We sometimes have to be willing to put aside the bright and shining
picture and focus on effective compromise.  What will get us the most
bang for the least buck?  None of us are blessed with copious free
time, as we all know, yet the objectives remain.  Assuming that we
genuinely wish to achieve those objectives, and that's always been of
paramount importance to me, how can we best do so given full awareness
of our limited resources?

Oh, and to all those that suggested it, thanks for the pointer to Ctk.
I've actually been following Ctk more or less since its inception in
early '95 and, while I'm not exactly enamored with the trade-offs it
makes (Tk is actually a lousy "API" to try and track, given its degree
of X-centricity), I may indeed end up using it.

Ctk is, in fact, a classic example of something that offends my
sensibilities (this being more properly done one level higher, with Tk
and some curses equivalent sitting *underneath* a more generic view)
but has the advantage of being available right now.  If it comes down
to being stuck with libdialog again, come the next release, or banging
out something much nicer based on Ctk, which do you think I'll pick? :-)

					Jordan