NICE-ESG-Libs Digest Thu, 15 Feb 96 Volume 2 : Issue 1 Today's Topics: Two comments
NICE Eiffel Standards Group -- Library Committee Mailing List To post to list: NICE-ESG-Libs@atlanta.twr.com To send mail to the Chairman of the committee: NICE-ESG-Libs-chair@atlanta.twr.com Administrative matters (sign up, unsubscribe, mail problems, etc): NICE-ESG-Libs-request@atlanta.twr.com
Date: Thu, 15 Feb 96 15:23:15 PST From: bertrand@eiffel.com (Bertrand Meyer) Subject: Two comments To: nice.lib@eiffel.com Copy to: From: Bertrand Meyer Mailer: BOOM Two comments, one apparently specific and the other general, on the library committee. 1. Proposal RB-1 ---------------- I had some trouble understanding proposal RB-1, intended (I think) to be about HASHABLE. First, the initial message from Roger Browne bearing that indication in the subject header was about something totally different (exceptions), and contained no proposal (vol.1, no. 307, 25 Nov 95). I assume this is just a typo. The next message (25 Nov 95) does contain a proposal, ``Remove note from HASHABLE''. However it does not correspond to anything that I can find in the version of HASHABLE that is on the FTP server, whose text begins indexing description : "Values that may be hashed into an integer index, for use as keys in hash tables." deferred class interface HASHABLE feature -- Access hash_code: INTEGER -- Hash code value deferred ensure good_hash_value : Result >= 0 end Can anyone find fault with this? There may have been earlier versions with restrictions on hashing the default value etc., but certainly not in the current version. All the previous versions, and diffs etc. are present on the FTP server, so I can try to dig them up, but what's the point unless there is a disagreement of substance? 2. General mode of working -------------------------- I took a look at various proposals floated over the past couple of months. It turns out I disagree with all the proposals I have seen (make_from_array, whose text an invariant clause from ARRAY etc.), but that's not the main point. We can play mini-parliament by submitting lots of little proposals all over. Those who have the most patience (and a good eye for deadlines) win. Others lose. In some cases the losers will be furious, especially if they are implementers and are being forced to do something that either: (1) they fundamentally disagree with (2) their users hate (3) they cannot implement anyway. I think this approach is deeply flawed. It can only foster controversy and bad feelings. If we want to find flames on the NICE lines every morning, that's the way to go. This approach is bad not just politically but also technically, because a good design is unlikely to arise from all these little contributions. We may have the beads, but if the threads are missing there won't be a necklace. For the libraries the task is relatively easy to split up because the class (or in some cases a group of related classes) is the natural unit. We should as much as possible vote on classes, not on individual invariant clauses, argument types, comments or even features. Also we should also vote as a last resort; paradoxically perhaps, I think that there are only two cases for a vote: 1- When we know in advance that all votes will be YES. 2- When there are irreconcilable differences and we must go to battle. Clearly, I hope never to see a case of 2 but in a political body we should be prepared for it. The important strategy is 1: consensus. Combining this idea with the preceding observation, I think the library committee should work as follows. For each class (or small group of classes) that is thought to need changes or at least discussion, appoint a committee member - let's call him the advocate - whose task is to devise a proposal that will meet consensus. The advocate will go back and forth talking to people involved - sometimes through the official mailing list, but also through informal channels if he thinks that is more effective - until he feels that he has brought his proposal to a state in which everyone can vote for it. Then he submits the class as a whole for the committee to vote on. (Or he submits a sad report that he was unable to build such a consensus.) At that stage, someone may still find a flaw; so the advocate may again have to revise his proposal and resubmit it. This is not a new model. The above almost exactly describes what Jim McKim has been doing with ARRAY. He took the initiative himself but has almost succeeded. (This is also what I have been trying to do with the language committee. For example I would hope that on the `Precursor' proposal when and if the matter comes to a vote it will be unanimous. This is typical of an issue in which it was essential NOT to call votes early. We would have had competing proposals, none of which perhaps as good as the final one. Why were we able to get to something that we all seem to find decent? Simply because there was no deadline pending, no vote, so that we could all simply try to exert the best of our thinking to find a solution.) To continue in the direction set by Jim I would suggest that the chair appoint various people to be in charge of various classes or areas, with a clear mandate to seek consensus. Then the chair may exercise the position's most important privilege: when to call and not to call votes. (By the way I think Christine was right not to call votes on some of the recent submissions, precisely because they are too controversial.) I don't want to paint too rosy a picture. On some aspects true conflicts will emerge, and we will in the end have to call a vote on which each side will count its votes. But we should avoid those conflicts which are not necessary. On most issues, with the time to discuss arguments, and with the participation of an advocate for each topic - an advocate who should have only one issue on his hands at any time, and so will have the stamina and patience to push it through, going back to the drawing board a hundred times if need be - I think we can reach consensus. In some cases this will take a little more time. We should accept it and not be bullied by the Strelioffs of the outside world into making rushed decisions. In ETL I wrote about the moment when the right design dawns on you with the self-evidence of morning mist, or something to that effect. When there is a really good design we all recognize it. Until then, we shouldn't vote. A successful process is not measured by the number of times we vote. For every controversial vote there is a winner and a bitter loser. A successful process is measured by how much we produce that pleases EVERYONE involved, and solves the problem. I would very much be interested to know if the library committee members agree with this view. If so I would ask Christine, in respectful disagreement with Roger Browne, not to call votes on the latest proposals that have surfaced, but instead to confirm Jim's self-appointment as Amiable Array Advocate, and to issue a call for other volunteer advocates. With best regards, -- BM P.S. The second part grew bigger than what I intended; since it addresses general issues I will repost an abbreviated version on NICE-all.
|