From owner-freebsd-ports@FreeBSD.ORG Fri Apr 1 06:57:50 2011 Return-Path: Delivered-To: freebsd-ports@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id E4378106564A; Fri, 1 Apr 2011 06:57:50 +0000 (UTC) (envelope-from bf1783@googlemail.com) Received: from mail-pz0-f54.google.com (mail-pz0-f54.google.com [209.85.210.54]) by mx1.freebsd.org (Postfix) with ESMTP id 75AF88FC08; Fri, 1 Apr 2011 06:57:50 +0000 (UTC) Received: by pzk27 with SMTP id 27so724786pzk.13 for ; Thu, 31 Mar 2011 23:57:50 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=gamma; h=domainkey-signature:mime-version:reply-to:date:message-id:subject :from:to:content-type:content-transfer-encoding; bh=2oOKBSFTZjRA+j5yhLGi0WVUvL6J5xcilcV/EzXCgdQ=; b=UODyZlz73ZnzrQKsuZ8vJ+IpW95Q9I1kJqz4P/UYoigd1CL6NvV2I8IkTWrWeFg49K 2YCAPOyaj1TLOOP4AX+s9z5ZwSG8/EbOCWe3BveId+JOz2+j+XILrE2PwhuR4I/FlwnW VXniALRGHjPgEEJ/kE3bD1I6uMHIpcZX3sObY= DomainKey-Signature: a=rsa-sha1; c=nofws; d=googlemail.com; s=gamma; h=mime-version:reply-to:date:message-id:subject:from:to:content-type :content-transfer-encoding; b=p0QTIyNXlFd+c+6782dBfZB6x5f7QOz7eZ3h4BEG8Sk/Iq1wCWYgQc663pY26IMeht ivxCqDgBHMIsCDsUezDo7SuLmeq/dla9AZ8NGiHaL8ym455bgXaPSiYvy/UMMwmKjCbn lMtXl231W6rT/TX9NaFx2CCoC0aYLG2m6qW9g= MIME-Version: 1.0 Received: by 10.142.161.10 with SMTP id j10mr2744287wfe.250.1301641070155; Thu, 31 Mar 2011 23:57:50 -0700 (PDT) Received: by 10.68.49.4 with HTTP; Thu, 31 Mar 2011 23:57:49 -0700 (PDT) Date: Fri, 1 Apr 2011 06:57:49 +0000 Message-ID: From: "b. f." To: freebsd-ports@FreeBSD.org, Eitan Adler Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Cc: Subject: Re: Removing Cruft from the ports tree X-BeenThere: freebsd-ports@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: bf1783@gmail.com List-Id: Porting software to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 01 Apr 2011 06:57:51 -0000 > Hi, > > I=E2=80=99m been working recently on a series of PRs that called =E2= =80=9CReaper I'm glad to see that you're helping to clean up. > > One of the features that has given us the most trouble has been > the options framework for ports. We automatically test ports using the > default options, but we are unable to perform automated using every > combination of options. A port with just four options has sixteen > possible configurations, and some ports have more than that. Even > supporting one option might double the number of things to test. > > However some ports rely on specific configurations of options of > other ports. In order to deal with this mess we have come up with a > hack: slave ports. We have entire ports that are designed just to > change the default options for other ports. This requires a > non-trivial amount of code on the bsd.*.mk files to support. > > Automated configuration is not the only thing that has caused us > trouble in the past. We routinely have to do deal with questions from > inexperienced users on questions@ and ports@ details problems with > non-standard configurations. Many times the solution to a ports > related problem is flipping a bit in the options file. > > I propose removing the options systems entirely. While it does > serve a small purpose of allowing customization for some end users, I > believe the flaws outweigh the benefits. Removing the options > framework would enable us to remove over 500 lines of expensive code > from the ports system. Not only that but because maintainers would be > able to choose the best possible configuration for the their port > users would no longer have to mess around. > > While I understand there might some minor part of the community > that has a sentimental attachment to the blue-on-gray-on-blue > configuration, and still others want to prematurely optimize, a simple > workaround could be implemented. We can allow users to add their own > ./configure arguments to the makefile. This serves the needs of the > community while allowing us to deal with a simpler and more reliable > ports system. The ports system does not exist just to build packages with fixed configurations. The ability to configure ports offers an important degree of flexibility, and one that is not always "sentimental", "minor", or "premature". One size doesn't fit all. Your point that "many times the solution to a ports related problem is flipping a bit in the options file" cuts both ways. Flexibility requires more than just allowing user-specified arguments to a configure script. Yes, it adds some effort to maintenance and testing, and some judgement and discussion is needed when deciding what options to expose. (And no, the port maintainer is not always the best judge, or at least not the only judge, of port configuration.) Occasionally users may be confused by choices, but they are just as likely to complain about a lack of choices. Fixed configurations will probably lead to pressure for more slave ports in the form of ports with alternative fixed configurations, and not fewer. If you remove all flexibility from Ports, then many users will abandon Ports for something else, or be forced to maintain locally modified Ports trees that often won't be available for others to use, examine, and test. I think that we should encourage those users who would be best served by binary packages to use them, make an attempt to address the questions and problems of those that need non-default options, work on improving the OPTIONS framework, and provide a better way of dealing with alternative dependencies, like those in some other packaging systems. But I strongly oppose removing options altogether. > > Feel free to express your thoughts here. I would like to get this > hashed out now so the process could occur on a later date(1). > What process? I hope that you are asking for our opinions, and not just assuming that you going to carry out this proposal. b.