From owner-freebsd-questions@FreeBSD.ORG Tue Nov 13 01:24:59 2007 Return-Path: Delivered-To: freebsd-questions@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3D22916A417 for ; Tue, 13 Nov 2007 01:24:59 +0000 (UTC) (envelope-from chuckr@chuckr.org) Received: from mail2.sea5.speakeasy.net (mail2.sea5.speakeasy.net [69.17.117.4]) by mx1.freebsd.org (Postfix) with ESMTP id 1851B13C48E for ; Tue, 13 Nov 2007 01:24:59 +0000 (UTC) (envelope-from chuckr@chuckr.org) Received: (qmail 14707 invoked from network); 13 Nov 2007 01:24:51 -0000 Received: from april.chuckr.org (chuckr@[66.92.151.30]) (envelope-sender ) by mail2.sea5.speakeasy.net (qmail-ldap-1.03) with AES256-SHA encrypted SMTP for ; 13 Nov 2007 01:24:51 -0000 Message-ID: <4738FC8B.5000309@chuckr.org> Date: Mon, 12 Nov 2007 20:23:23 -0500 From: Chuck Robey User-Agent: Mozilla/5.0 (X11; U; FreeBSD i386; en-US; rv:1.8.1.9) Gecko/20071107 SeaMonkey/1.1.6 MIME-Version: 1.0 To: RW References: <2852884D-270A-4879-B960-C10A602E080E@ashleymoran.me.uk> <47387891.2060007@unsane.co.uk> <47387BCA.6080604@foster.cc> <20071112183502.438b44b8@gumby.homeunix.com.> <4738A71A.6060100@chuckr.org> <4738ACDD.50108@u.washington.edu> <4738ADC8.2060005@gmx.de> <4738AEBF.4010109@u.washington.edu> <4738C145.2050601@chuckr.org> <20071112214240.5d3b048a@gumby.homeunix.com.> In-Reply-To: <20071112214240.5d3b048a@gumby.homeunix.com.> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: freebsd-questions@freebsd.org Subject: Re: Ports with GUI configs X-BeenThere: freebsd-questions@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: User questions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 13 Nov 2007 01:24:59 -0000 RW wrote: > On Mon, 12 Nov 2007 16:10:29 -0500 > Chuck Robey 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.