Ports with GUI configs
Chuck Robey
chuckr at chuckr.org
Mon Nov 12 17:24:59 PST 2007
RW wrote:
> On Mon, 12 Nov 2007 16:10:29 -0500
> Chuck Robey <chuckr at chuckr.org> wrote:
>
>> I hope not. We really need to move this out of being a ports
>> buildtime thing. Currently, to build ports in batch either requires
>> someone to be chained to the computer, so as to intercept all those
>> screens, or to simply agree to install everything, with no inpput
>> whatever.
This discussion has unfortunately jumped out or ports (wjhere I believe
it should have been) to questions, so I have to re-state stuff I've
already said. Darn.
Well. I want to explain one of the most important features. First
thing, I have to stress I m talking about my writing a character-based
tool that carefully guides the user into making the best choice of a
limited set of words, to describe their chosen machine environment. I'm
NOT going to ask (as Gentoo does) the user to select their own set of
words. Gentoo expends damn little help on installation in general, and
more specifically, on the maintenance of their USE lists. Their concept
of the USE lists is what's important, not their implementation.
Let me give a real-life example. In doing a database of users, you
would normally include a file (or lookup table) of state names &
abbreviations. This isn't because you're confused about the spelling of
Ohio, it's so that, in sorting, you don't jhave to deal with 14
different ways to abbreviate Missouri. You want to be able to sort on
one spelling, and not lose half of your Missourian users because they
can't agree on a spelling, you want to limit what they use to define
their state. OK, you (as programmers) must understand that concept, and
the machine environment keyword descriptions (I need a good name for
them, and I don't want to use USE because Gentoo uses it, and I don't
want to be misunderstood as being the same thing as Gentoo).
If I make a nice database-like program that helps out a user in choosing
the best way to describe their system goals, using a limited set of
standard words, and set it up so this is done as part of installation.
This makes a little file of descriptor words, but it's not set so a
regular editor can manipulate it; the special ports program is needed to
set or reset this list. All ports query this list in making the
decision as to whether or whether not to include a particular port as a
dependency.
OK, the good things that accrue from this:
1) list items are always presented right alongside the verbal
definitions of what each word semantically means in context. People
could still get it screwed up, but that would certainly happen less often.
2) because the number of choices is limited to those on the list, and
new items must be filtered thru the ports-management, getting the names
wrong or confused is under far better control. There will no longer be
6 ways to define "Music program with mp3's only".Adding a particular
option to that music program, say, adding ability to play back AAC
songs, would just mean adding the correct keyword. This would allow,
some time in the future (not something I'm immediately considering) to
do a global scan, with adding some new keyword, to bring one's entire
system back up to date. This is not possible today.
2) Since choices are made one per each machine particular, the number of
choices is less that a tenth the size of a list of the peer-port
dependency choices, setting this up in advance becomes a task that is
quite reasonable todo in advance of building all ports. Currently, the
sheer idea of setting all options in advance is ridiculous.
3) Choices are made of items that can easily be performed by users
without extensive documentation. Trying to inform users of the actual
meaning of each and every one of the currently used dependency options
would be too complicated a task to expect all users to be able to do
this. Informing them of the setup for their particular machine is a far
smaller task, one that is small enough to contemplate performing.
Describing this in another way, the options will be defined by function,
and no longer by the name of the software.
4) Since dependencies are listed by machine environment, and not by
port, adding a new port with a correct optioned set of dependencies
becomes far more reasonable: merely grep out all ports with a particular
set of keywords, and then a ports-writer knows perfectly well what ports
they would need to consider as dependency choices. Doing it now, is
largely a matter of luck.
I left out one last point> there will be a reject list: a list of port
names or regular expression patters, of ports that can't be installed
under any circumstances.
More information about the freebsd-questions
mailing list