On 3/30/2010 5:17 PM, Graham Leggett wrote: > On 30 Mar 2010, at 3:34 AM, William A. Rowe Jr. wrote: > >> In what universe does the suggestion that path wildcards must correspond >> to at least one existing path diverge from the allowance that the path(s) >> need not contain one existing file? Two separate issues, one veto. > > In your universe, you were arguing for this very thing: > > "The gist of my objection is this illegitimate behavior; > > Include conf/extra/*.duh > > Include conf/extra/*/doh.conf > > Include conf/empty/* > > Include conf/*/whoops.conf > > The last one (based on an existing conf/empty directive) fails, alerting > the admin > to the fact that they made a typo, which is good. > > The others all fail-to-fail with this logic [based on the absence of any > matching > directories in the extra/ folder]. That's unacceptable." > > It was a perfectly valid objection, based on the principle of least > surprise. Then when it was discovered that options 1 and 3 currently > pass today and have done for a long time, you changed your mind and > decided that only options 2 and 4 should fail, and that it was suddenly > ok to be inconsistent, contradicting yourself. Please make up your mind.
On 2.2 branch, we are hamstrung by the stable shipping behavior, you are right that we cann only fail 2 and 4. On trunk, all of these can fail by default, unless a permissive directive is used to indicate the config author believes they know what they are doing, and accepts the consequences of chasing down their own typos if things just 'don't happen' when they change the mis-directed config. >> I'm sorry you don't support my -1, but am done with your handwaving about >> whether the the veto is valid, or not. It is, and your protestations >> don't >> invalidate it. > > Of course my protestations don't invalidate it, your inconsistent > technical justification invalidates it. Trunk may be inconsistent with 2.2 branch, it frequently is. > In theory, vetos are really cheap. They take zero effort to make, and > all they take to enforce are to to engage in a Monty Python style > yes-it-is-no-it-isn't argument until the other side gets fed up and > withdraws their contribution. The person with the veto wins, the project > loses the contribution. Yes, we've all seen vetoes thrown around without any explanation, without the author willing to revisit, refine and reclarify the objection, in light of additional information. You and I did refine and reclarify this veto, many times, in the process. In the end, we were able to refine a solution without having to go to the extreme of a F2F powwow. That's a positive. And yes, the project is more than willing to lose contributions which are not thought out; we do so frequently if the bugzilla 'PatchAvailable' tag is a measure of which patches are 'interesting'. The difference is the disagreement between an arbitrary contributor v.s. a committer. > In practice, vetos are very very expensive. > > They discourage end users from contributing to the project, because why > should they bother spending their free time and effort when there is a > very real risk that someone will arbitrarily object and then instead of > agreeing to disagree, will happily obstruct progress using a veto on the > issue to the detriment of end users. Your definition of progress isn't necessarily my definition, or Paul's or Jim's or Ruediger's. Each committer is here looking at the code from their own perspective, and I hold the greatest respect for the committers who clearly are looking out for the interests of several groups of users at once, not the committers who might be here to advance only their own agenda. In other words, TMTOWTDI, most of the time, and collaboration means moving forwards to let as many improvements in that don't disrupt other groups of users or developers. > They discourage reviewers from reviewing backports, because why should > they go to the effort of picking through patches, applying them, > compiling code, running test suites and code and editing documentation, > and then finally to promote the patch, only to have somebody eventually > wake up and yank it out again, forcing everyone to start the process all > over again. > > Vetos should be used *very* sparingly, and as an absolute last resort to > a problem, in recognition of the cost associated with them. It should be > far more common for members of a project to simply agree to disagree and > let consensus decide than it is for people to veto anything. And considering the raw volume of code I review at a glance and in depth, I certainly don't use them often, in fact the entire project doesn't use them often. The previous veto I saw was Lars' objection to allowing the ServerString to misrepresent Apache 'out off the box'. (Nobody objects to the user modifying the code and relabeling the program, of course). >> Then they are welcome to use a patched version of httpd; this is the >> advantage of open source. > > Months and months of work by various ASF members convincing people in > this particular organisation that it is a good idea to pass their > changes upstream to the original project instead of hiding their code in > silos, and now they're told "you can just do what you've been doing all > along, keep your changes to yourself". Thanks for the help Bill. You presume that all changes are suitable as-is? Horsepucky. The point to offering patches back is a convenience factor, of course. But the real reason to offer patches upstream is to improve them. Apache software is not about accepting all of the submissions offered, it is about collaborating to improve on the best of those submissions. Everyone wants to see their changes in 2.2.next, but that is unrealistic. It's enough that their changes hit trunk, to see the light of day in the next major release. The trick to manage users expectations is to deliver that next major version more than once every five years. >> Anyone can use whatever code they like whether >> they agree with the 'released' version, or not. There is a solution on >> the table which could satisfy everyone, allowing a missing explicit file, >> or file pattern, or directory pattern to match nothing - while making no >> change in 2.2 to the Include behavior of allowing file patterns to not >> match once the directory pattern has matched. > > No, there isn't a solution on the table, I should know, all the > solutions we're discussing were written by, tested by, and documented by > me. > > Now there is. Following my own advice I withdraw my veto over the > inconsistent Include behaviour that you want as it is better for end > users for us to agree to disagree. I've documented this behaviour > clearly for end users, and provided both an "Include optional path" and > "Include strict path" option for those users who require consistent > behaviour one way or the other. > > Your objection is now resolved in r929318. Include strict path is an improvement in 2.2, yes, although one that will go away in trunk (since all Include statements should find some file to Include, unless the clever/attentive adminstrator tags them 'optional'). I suspect that an IncludeOptional directive is more efficient, I'm happy to offer the patch to your patch after I svn revert my local code changes. The cost of another hashed directive is less expensive than parsing for multiple args.