[racket-dev] RFC: Coding Guidelines

From: John Clements (clements at brinckerhoff.org)
Date: Thu Aug 19 09:08:28 EDT 2010

On Aug 17, 2010, at 4:27 PM, Jay McCarthy wrote:

> On Tue, Aug 17, 2010 at 2:24 PM, John Clements
> <clements at brinckerhoff.org> wrote:
>> 
>> On Aug 17, 2010, at 3:57 PM, Jay McCarthy wrote:
>> 
>>> We're attempting to write down coding guidelines for the project.
>>> 
>>> Here is a first attempt:
>>> 
>>> http://faculty.cs.byu.edu/~jay/tmp/201008161509-guidelines.html
>>> 
>>> Please comment.
>> 
>> You write
>> 
>> "As long as your code fulfills its promises and meets each of these criteria, you can push incrementally.
>> 
>> For example, I may be working on adding an exhaustive queue library to Racket. I imagine supporting 30 different functions across 5 different queue implementations. I don't have to wait to push until all 150 function implementations are documented, tested, and stressed. I can push whenever I make progress on each of the required points."
>> 
>> Either this is contradictory, or I'm misunderstanding it.  The first paragraph suggests that the code must meet each of the criteria; the second suggests that as long as it's *closer* to meeting the required criteria, it's fine.
> 
> Maybe you can help me say it better. What I'm trying to get at is that
> 150 functions is perfect to me, but if I only promise 30 functions and
> meet the criteria for each of them, then I can commit even though it
> is not "perfect". Progress here is meeting the 4 points for each new
> function I push.

Okay, so every individual piece that's committed should meet the criteria.  I think that's the most sensible reading of what you wrote, but it also frightens me. I don't think that very much of our current code meets these criteria, and I'm worried that trying to enforce them is going to pull us into a sinkhole of no-new-functionality. I suppose that we should write down what we want before we figure out how to get there, though. 

As far as this piece text is concerned, I think I would replace that last sentence with essentially what you wrote in response:

>> For example, I may be working on adding an exhaustive queue library to Racket. I imagine supporting 30 different functions across 5 different queue implementations, for a total of 150 functions.  If I have just 30 of these documented, tested, and stressed, then it's fine for me to push.

 
John

-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4669 bytes
Desc: not available
URL: <http://lists.racket-lang.org/dev/archive/attachments/20100819/aa8da88d/attachment.p7s>

Posted on the dev mailing list.