On Wed, 26 Jul 2017 22:36:53 +0000 Andrew Williams <a...@andywilliams.me> said:

> Hi,
> 
> I understand the reasoning behind the social convention of the master
> stabilisation period but what seems to be evolving as git standard is that
> master should always be stable / releasable - not stable, but something
> that can be relied upon. From where we are the equivalent is not to push
> stabilisation into a branch but to have it more release-ready by default.

if it's is trendy or not... it's not how we do things... (have a
always-read-to-release branch).

BUT i do believe master should be stable and usable at all times. don't make it
not so by explicit decision or design.

you could just have a "release" branch FROM which each stable release is
branched. i don't see why we need to move to a develop branch. then the release
manager can pull from master to release (as opposed from develop to master in
your model). but that's up to the release manager... if he finds this easier to
cut releases this way... then great. we don't need to redesign our workflow to
do THAT... unless you want everyone doing this pull to a release/stable branch
and then everyone has to change.

but it will lead to more problems. which features were and were not
cherry-picked from "develop" (if its called develop or it's master is
irrelevant EXCEPT in that master is what git shows the world as the DEFAULT). i
believe this is going to raise the workload for the release manager and./or for
developers as they have to both commit AND then remember to merge that commit
or series into "release". things will be forgotten. releases will end up
missing things and break as they get change A but miss change B which subtly
interacts with change A to make thins work right...

i smell a world of hurt with the model you propose. releases and what
developers work on/use will NOT be on the same page. and that is a recipe for
pain. getting as many people on the same page as possible is, IMHO and
experience, the best you can do. the rest can't be solved by branches,
processes or tools. it's just being careful. being there to fix your code when
it goes wrong. it's responsibility and communication.

> The concern about people not sharing what is being worked on and large
> changes coming out of nowhere are, in my opinion, a communications issue
> and not a source control issue. Having partially completed features on
> master or changes that are "temporary" awaiting the rest of the work is
> worse than having more branches. I don't mean to say that branches should
> be needed for every change - that is why the develop branch in GitFlow
> exists to allow the small features and fixes to work on the mainline
> without affecting the stability of master.
> 
> Developers may indeed switch everything to develop - but I don't see how

then why not just keep working in master? why does SWITCHING help at all? if
then all developers switch... the only thing you changed was what the DEFAULT
thing people see is when they do git clone without any extra effort. that's
all. and i think we want people to see the current state of development by
default. we have release tarballs (intended to be packages) to STABLE RELEASES.
for the few people like packagers who want to track a specific stable branch to
package from, we have branches. IMHO very few people want to or need to do
that. and if you want a "release" or "current-stable" or whatever branch (that
you propose should be master) then that can be created too. it doesn't involve
anyone changing any workflow from today except the release manager if that is
their responsibility to merge then from development (currently master) to that.

of course if only one person does this it's going to be a mess. it's going to
add a lot of work, tracking overhead etc. and it's going to slow us down,
increase our workload, etc. ... if every developer has to do it themselves it
adds this work and changes to workflow to everyone. as above... i smell
disaster here.

> that leads to confused newcomers. A standard tenet of git is that you don't
> commit directly to master and branching is part of the workflow unlike CVS
> or SVN. This allows easy tracking of 2 different targets: Latest stable
> version (master) and latest completed features (develop) and work in
> progress is elsewhere.

tenet or not... this actually sounds much more like a religious argument than a
practical one. people have done just this (see gustavo's mail). the vast
majority of the time it has lead to much more hell breaking loose. that's my
experience. :)

> Whilst I can't argue with the simplicity of our branching model I don't
> know that I completely agree that stopping for a month every release is
> indicative of a good process...

you can continue doing work in a branch of your own if you want. if your issue
really is with the stopping... let's talk about that. :) the point of the stop
is to push/encourage you to help to testing, debugging, cleaning, stabilization
and to help the release manager get the code into shape for a release.

like a kitchen in a restaurant. you try and clean as you go but it's only
partly effective. you will leave a bit of mess here and there. at the end of
the night when the cooking stops... the cleaning begins so the kitchen is clean
and ready the next day. we could just have all the cooks quite and go home then
1 poor janitor has to do it all. we're asking all the cooks to stay around and
help clean things up. many hands make light work. :) i use these periods to get
stuck into some of the more annoying background bugs that i have ignored during
development and code cleaning (coverity) and some tickets. everyone probably
tackles different bits, but i think it's a good thing.

if you WANT to you can "go home and not help clean the kitchen". sometimes
you're tired and want to... who knows. if you want to go home and cook some
more, you can... create a branch for that. merge it when we unfreeze. beware
that this may cause hell to break loose if you're not careful when the dump
happens :)

so summary: you present an alternate workflow. this is interesting. i don't see
why master HAS to be "stable and releasable". it's just a question of what the
default thing you show to the world is (you show master by default). if we just
change this... why does it have to be master that is stable. we could have
"release" for that. but then come in the questions of who merges to release. i
smell much more work here and things will fall through the gaps and that will
ultimately lead to a worse situation that we have today.

> Andy
> 
> On Sun, 23 Jul 2017 at 03:32 Carsten Haitzler <ras...@rasterman.com> wrote:
> 
> > On Sat, 22 Jul 2017 21:22:43 +0000 Andrew Williams <a...@andywilliams.me>
> > said:
> >
> > > Hi eflers :)
> > >
> > > So after thinking about issue management and planning milestones I
> > thought
> > > more about our source control. We currently have various different models
> > > used but the bottom line is that it all hits master all the time which
> > can
> > > lead to less stability than ideal and also makes stabilisation windows
> > > critical to enforce.
> > >
> > > As a suggestion I think we should consider agreeing on a singlet
> > branching
> > > model and I'd recommend GitFlow (described quite well here
> > >
> > https://www.atlassian.com/git/tutorials/comparing-workflows#gitflow-workflow
> > ).
> > > As well as being well organised there is a solid gitflow plugin that
> > helps
> > > to manage branches and workflows.
> > >
> > > Bottom line: main development moves from "master" to "develop" and master
> > > then remains the most recent release (always stable ;) ). Releases then
> > are
> > > created on a branch rather than being branched after release.
> > >
> > > This correlates well with the proposed phab task management - a release
> > > milestone branches off develop as we prepare to release like current
> > > stabilisation. Big feature tasks branch off develop as a feature branch
> > and
> > > the task describing it can be marked resolved when it merges in. Hotfixes
> > > merge into develop and master which makes it easier to ensure we don't
> > > forget to backport fixes :).
> > >
> > > Let me know what you think - it's worked quite well in previous groups
> > but
> > > I appreciate it may not for us and I expect there are a lot of
> > experiences
> > > here that could feed in :)
> >
> > this imho creates an unnecessary branch. if you want releases to branch off
> > they can just branch early BEFORE release from master, stabilized, then
> > tag at
> > release. there's no need for a develop branch.
> >
> > the point of stabilization in master is a social thing. it's trying to
> > force
> > people into helping with stability and bugfixing. telling them "stop all
> > your
> > feature work and help with this". it is MEANT to be an inconvenience to
> > try and
> > engineer this kind of behaviour. i know it doesn't 100% work, but it does
> > have
> > an effect. by just pushing all of that off into a branch, we'll basically
> > lose
> > almost all of any positives we get from that.
> >
> > developers have always been free to do major work in a branch. the
> > downside of
> > this is no one knows it's happening until suddenly it all lands and all
> > hell
> > breaks loose. sometimes it's necessary. sometimes it's not.
> >
> > what is going to likely happen is everyone just switches to develop branch
> > -
> > anyone wanting to track development is unaware of this and sees a stale
> > master
> > branch and can't find where development is happening and we have really
> > done
> > nothing positive - just added layers for hiding.
> >
> > i like the simplicity of our model and that it pushes our current state of
> > development right as the first thing into the public with no extra work,
> > and
> > that it tries to keep everyone on the same page as much as possible and
> > tries
> > to pull everyone together for releases.
> >
> > > Happy weekend,
> > > Andy
> > > --
> > > http://andywilliams.me
> > > http://ajwillia.ms
> > >
> > ------------------------------------------------------------------------------
> > > Check out the vibrant tech community on one of the world's most
> > > engaging tech sites, Slashdot.org! http://sdm.link/slashdot
> > > _______________________________________________
> > > enlightenment-devel mailing list
> > > enlightenment-devel@lists.sourceforge.net
> > > https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
> > >
> >
> >
> > --
> > ------------- Codito, ergo sum - "I code, therefore I am" --------------
> > The Rasterman (Carsten Haitzler)    ras...@rasterman.com
> >
> > --
> http://andywilliams.me
> http://ajwillia.ms


-- 
------------- Codito, ergo sum - "I code, therefore I am" --------------
The Rasterman (Carsten Haitzler)    ras...@rasterman.com


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to