suggestions for ports screening
Chuck Robey
chuckr at chuckr.org
Sat Nov 10 20:37:52 PST 2007
May as well get all my bright ideas out and over with, all at once. You
see, I've spent the last few years exploring other OSes, and finally
decided I was right, way bakc when I was running FreeBSD to begin with.
BUT I have to admit that I saw several good ideas while I was out and
about. I have never seen a better package system (at least, in my own
opinion, you understand) than FreeBSD ports, BUT the methodology for
qualifying dependencies isn't as good as some I've seen, so I wanted to
open a discussion about this. If, at the end of this, no one agrees,
all I ever ask is that folks give a listen, NOT that anyone actually
agrees, so I will happily fold up my tent and slink away.
Anyhow, here's the suggestion. The system we have, currently, is
basically dependent on people who write ports instrumenting options to
include or not include various options. A very large portion of those
options are written up in such a way as to make it nearly impossible for
a non-expert to figure out if a particular option is good for their use
of not.
An example? If a programmer asks you if you want the blotz program (I
make up great fake names, don't I?) hows the user going to know the the
blotz program is a particular sound program, when they have no sound card?
There are ways to fix this, you know. Read on.
OK, My suggestion is for a two level system (yes, some of you are going
to recognize some of this from other OSes. G'wan, brag about it). The
first part is a small list of keywords (well, not terribly small, maybe
100-200 of them, but most user's personal lists would be far shorter).
These words are descriptive of the sort of machine environment the user
wants, like, they might have the words SOUND, FMRADIO and TELEVISION to
show that they care to have those sort of dependencies built. All ports
would be required to export a list of words that they check for, before
they build. If a browser sees no SOUND word, it requires to sound
dependencies be built. Let me repeat this to get it clearly: the words
are used to qualify the dependcency lists, but if a particular port is
chosen, then it gets built, period. If a user asks for that sound
program explicitly, then it gets built, SOUND word or no SOUND word.
It's the dependency lists that have to check and modify themselves.
These dependencies can show up on the list in the form of KEYWORD=VALUE,
where value can be used to point towards a user's preference. A user
might set BROWSER=www/seamonkey,www/mozilla in the list, so this gives a
port all the info it would need to match dependencies nicely, without
having to get interactive about it.
OK, this is only the first part ... the second part is a list of the
names of ports. This REJECT list serves as a rejection filter: if a
port finds it's way upon that list, it can't get put on any dependency
list at all. I, personally, never like any Samba ports, so I could
stick all the Samba ports on the REJECT list, or I could just fail to
put SAMBA as a keyword. My choice, although if I stuck a particular set
of ports on that list, I'd have to watch new ports, so new Samba port
didn't sneak past me. Still, it would allow a user to really have all
the control anyone could ask for. or they could ignore it and still not
face disaster as long as they maintained the KEYWORD list.
3 stale to the first programmer who notices where I stole the idea from,
and a used mousetrap to him (or her?) who knows the correct name of the
KEYWORD list. If you hate the idea, just say so, believe me I will be
catching all responses, and I will report your overwhelming acceptance
or rejection, as the case may be. It shouldn't take a master's degree
to guess my own opinion.
More information about the freebsd-ports
mailing list