Next focus: PROCESS

foobar foo at bar.com
Wed Dec 19 14:25:17 PST 2012


On Wednesday, 19 December 2012 at 21:58:12 UTC, foobar wrote:
> On Wednesday, 19 December 2012 at 21:30:44 UTC, Andrei 
> Alexandrescu wrote:
>> On 12/19/12 4:23 PM, foobar wrote:
>>> On Wednesday, 19 December 2012 at 20:51:57 UTC, deadalnix 
>>> wrote:
>>>> On Wednesday, 19 December 2012 at 19:56:47 UTC, Rob T wrote:
>>>>
>>>>> Do we all agree that we need a "stable" branch?
>>>>>
>>>>
>>>> No. Stable isn't a boolean criteria. You'll find different 
>>>> degree of
>>>> stability going from not so stable (dev version) to very 
>>>> stable (dead
>>>> project).
>>>>
>>>> The wiki already mention a process with a branch per version 
>>>> of the
>>>> software.
>>>
>>> Let's generalize this point for the sake of reaching 
>>> consensus - we need
>>> _at least one_ "stable" branch which is separate from 
>>> "staging". We are
>>> still conflicted as to what should be the maximum amount. For 
>>> the
>>> record, I'm with the camp advocating at most a fixed amount 
>>> countable on
>>> one hand. That's an O(1) with a very small constant as 
>>> opposed to the
>>> O(n) suggestion by Andrei. I hope Andrei appreciates the 
>>> order of
>>> efficiency here.
>>
>> I agree with one "stable" branch.
>>
>> Andrei
>
> That's great!
> What about the other high level points summarized eloquently by 
> H. S. Teoh?
> Any other high level points or goals the process should 
> incorporate?
>
> Personally, I think the whole pre-development stage needs to 
> get looks at -
> Specifically having some sort of at least high-level *binding* 
> planning - road map, mile stones, todo lists. This should give 
> more weight to DIPs.
> DIPs at the moment have no weight whatsoever. The attributes 
> showed all the major flows in the decision making process:
>
> 1. Feature idea comes up in discussion.
> 2. Feature was discussed heavily by the community reaching some 
> design consensus.
> 3. Plan is abandoned/forgotten due to Walter's objections - not 
> to the design but the idea itself.
> 4. Feature comes up again in discussion, thus returning to 
> point 1 above in infinite loop.
>
> ** 5. After many cycles spanning years, the community accepts 
> that the feature will never be added despite a consensus and 
> constant demand.
> 5.1 Feature is added by surprise with deviations from consensus 
> design, optionally integrates purely with other parts of the 
> language.
> 5.1.1 Feature is final!
>
> Another prime example is the auto-ref feature which we are 
> stuck with because Walter apparently understood differently 
> from what you intended.
>
> This is highly coupled with Walter, making it very hard to 
> agree on a high level design and delegate its implementation to 
> other developers. As far as I see, No major feature was ever 
> implemented by someone other than Walter and he has final say 
> on all design decisions.
>
> I agree with Walter's motives, he wants to stabilize the 
> language and by resisting to feature suggestions he sets a very 
> high bar for any major change. That is a good thing. The 
> problem is that it all happens in his head and not in plain 
> sight. The community has no idea what his plans are, I'm not 
> convinced that even you get all the details. That means no 
> planning ahead and no delegation. Had we known that Walter sign 
> off featureX but just doesn't have the time to implement it, 
> than it still would be on the official *binding* todo list and 
> someone else would be able to implement this feature. As the 
> situation now stands, no one will bother doing any significant 
> work if it has a high chance of being entirely dismissed by 
> Walter.

The high-level steps as I see them:
1. The community discusses the merits and costs of the suggested 
feature and a consensus must be reached regarding adding such a 
feature.
2. An initial design must be provided - also with consensus. 
including this parts:
2.a. Suggested semantics of the feature - describe as precisely 
as possible
2.b. All interactions with other language features must be 
carefully examined and listed.
2.c An initial syntax agreed upon by the community.
3. Feature is implemented and after reaching some agreed upon 
level of stability is than field tested by the public.
3.1 Based on public feedback, feature design can be refined and 
bugs are fixed until consensus is reached that feature is ready 
to be finalized and merged to the next stable release.

It's vague on purpose - the exact details of how each point above 
is approved is to be decided later. The main principle is that 
approved planned features should be listed on the road map and 
point to their DIP with description of their design. Rejected 
features are also listed as DIPs with the rationale for the 
rejection, this is to avoid wasting time on repeat discussing 
them and requesting them.
Ultimate goal for all this is making the planning process as 
transparent as possible for the community.


More information about the Digitalmars-d mailing list