Next focus: PROCESS

foobar foo at bar.com
Mon Dec 17 14:02:44 PST 2012


On Monday, 17 December 2012 at 21:03:04 UTC, Rob T wrote:
> On Monday, 17 December 2012 at 18:14:54 UTC, foobar wrote:
>> At the moment we may use git commands but really we are still 
>> developing on mostly a subversion model. Walter used to accept 
>> patches and those were simply replaced by pull requests. There 
>> isn't any change in the mental model required to really 
>> benefit from a decentralized system such as git. This is what 
>> the process discussion is ultimately meant to fix.
>
> I think you've made a very good point. In order to make the 
> most out of the way decentralized systems work vs a centralized 
> one, will require an adjustment in the way people think. If we 
> choose to follow the centralized model nothing will be gained 
> when using a decentralized service, however centralization has 
> its place and there's an obvious need to merge decentralized 
> branches into a common centralize branch so that there's a 
> common branch to use for testing and performing releases (etc).
>
> I find it's great to debate ideas in here first, not the talk 
> page, but any conclusions or interesting points of view should 
> be posted into the wiki talk page so that it is not lost. IMO 
> this one should go in the wiki if only to remind people that we 
> have the flexibility of decentralized model to take advantage 
> of.
>
> --rt

DVCS is not about centralized vs. non centralized. This is a 
common misunderstanding which I too had when I started using git.
The actual difference is a client-server topology (CVS, SVN, etc) 
vs. P2P or perhaps "free-form" topology. By making all users 
equal with their own full copies of the repository, git and 
similar systems made the topology an aspect of the human 
work-flow instead of part of the technical design & 
implementation.

This gives you the freedom to have whatever topology you want - a 
star, a circle, whatever. For instance, Linux is developed with a 
"web of trust". the topology represents trust relationships. 
Thus, all the people Linus is pulling from directly are "core" 
developers he personally trust. They in turn trust other 
developers, and so on and so forth. Linus's version is the 
semi-official release of the Linux kernel but it is not the only 
release. For instance, Linux distributions can have their own 
repositories, and Google maintains their own repository for the 
android fork. So in fact, there are *multiple* repositories that 
represent graph roots in this "web of trust" topology.

What about D?
The current git-hub repository owned by Walter and the core devs 
(the github organization) is the official repository. *But*, we 
could also treat other compilers as roots. more over, there's no 
requirement for developers to go through the "main" github 
repository to share and sync. E.g Walter can pull directly from 
Don's repository *without* going through a formal branch on 
github. This in fact should be *the default workflow* for 
internal collaboration to reduce clutter and facilitate better 
organization.

This is why I'm arguing fiercely against having any sort of 
official alpha stage. There is no need standardizing this and it 
only mixes "private" developer only code and builds with builds 
aimed at end-users (those would be us, people writing D code and 
compiling with DMD). If you look on SVN servers, you often find 
an endless list of developer folders, "test" branches, 
"experimental" branches, etc, etc.

As a user, this is highly annoying to figure out what branches 
are meant for user consumption (releases, betas, preview for a 
new feature) and what isn't, dev X's private place to conduct 
experiments. This is only a result of the client-server topology 
imposed by svn architecture.

The official process should only standardize and focus on the 
points where integration is required. Everything else is much 
better served as being left alone. On the other hand, I think 
that we need to add more focus on pre/post stages of the actual 
coding. This means, the planning, setting priorities (aka 
roadmap, mile-stones, etc) as well as reducing regressions. I saw 
a post suggesting an automated build-bot that will run the test 
suit and build nightlies. What about DIPs, how do they integrate 
in the work-flow?
I think Andrei talked about the DIPs before but I don't thik it 
was discussed as part of this thread.


More information about the Digitalmars-d mailing list