Re: Git Worflow, branch creation.

2011-05-19 Thread Aaron J. Seigo
On Wednesday, May 18, 2011 22:08:00 Alexander Neundorf wrote:
 From my side, I would strongly prefer to have one policy which is used at
 least for all of KDE SC, (what was trunk/KDE/ before), if possible also for
 kdesupport.

agreed. and in working on this:

http://techbase.kde.org/Development/Tutorials/Git/Feature_Development_Workflow

that is our goal. to make something that we can propose to all of KDE. the 
above workflow documentation will change a lot before then as people offer 
input, we discuss at it face-to-face meetings (the above was the result of 
such a small gathering at Tokamak 5) and we actually try it out.

what we do need and are still lacking is a writte nlist of requirements that 
all our stakeholders have so that we can craft a solution that meets them. 
right now the requirements are being passed around orally and that's 
probably not good. to that end, i've added a (perhaps temporary) Requirements 
section to the above wiki page:

http://techbase.kde.org/Development/Tutorials/Git/Feature_Development_Workflow#Requirements

please feel free to add items to it that may be missing.

-- 
Aaron J. Seigo
humru othro a kohnu se
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA  EE75 D6B7 2EB1 A7F1 DB43

KDE core developer sponsored by Qt Development Frameworks


signature.asc
Description: This is a digitally signed message part.


Re: Git Worflow, branch creation.

2011-05-19 Thread Cornelius Schumacher
On Thursday 19 May 2011 Aaron J. Seigo wrote:
 
 http://techbase.kde.org/Development/Tutorials/Git/Feature_Development_Workf
 low

Wow. This is a pretty complex workflow, and it's breaking with quite some 
practices KDE used to use for a very long time. We have to make sure that we 
don't leave developers behind with such a drastic change.

The approach of having one central repository and all committers being equal 
has served us well. Maybe it's time to move forward to a different model, but 
I think this should be done with care, and without changing more than needed. 
A lot of this is about semantics and how to name things, not necessarily about 
technical processes. For example, if master is the stable branch or a release 
branch doesn't make a big difference technically, but it might affect our 
development culture quite a bit.

This needs to be discussed. I'm looking forward to the upcoming face-to-face 
meetings, but we should also have a wider discussion, as this is affecting 
many more people than those who will have the opportunity to be at these 
meetings.

-- 
Cornelius Schumacher schumac...@kde.org


Re: Git Worflow, branch creation.

2011-05-19 Thread Boudewijn Rempt
On Thursday 19 May 2011 May, Cornelius Schumacher wrote:
 On Thursday 19 May 2011 Aaron J. Seigo wrote:
  
  http://techbase.kde.org/Development/Tutorials/Git/Feature_Development_Workf
  low
 
 Wow. This is a pretty complex workflow, and it's breaking with quite some 
 practices KDE used to use for a very long time. We have to make sure that we 
 don't leave developers behind with such a drastic change.
 
 The approach of having one central repository and all committers being equal 
 has served us well. Maybe it's time to move forward to a different model, but 
 I think this should be done with care, and without changing more than needed. 
 A lot of this is about semantics and how to name things, not necessarily 
 about 
 technical processes. For example, if master is the stable branch or a release 
 branch doesn't make a big difference technically, but it might affect our 
 development culture quite a bit.
 
 This needs to be discussed. I'm looking forward to the upcoming face-to-face 
 meetings, but we should also have a wider discussion, as this is affecting 
 many more people than those who will have the opportunity to be at these 
 meetings.

In Calligra, we sort of discussed that we might call the staging branch where 
everyone can commit master, and that we'll try to get an automated system to 
copy commits that didn't break unittests to the release branch, which only the 
automated system can commit to. That keeps everyone in the loop on master, at 
the expense of having a release branch that nobody really runs. We're not there 
yet, obviously :-)

-- 
Boudewijn Rempt | http://www.valdyas.org, http://www.krita.org


Re: Git Worflow, branch creation.

2011-05-19 Thread Aaron J. Seigo
On Thursday, May 19, 2011 20:20:13 Ben Cooksley wrote:
 I see quite a few problems with that workflow:

thanks for the input; i've added some of the core issues you raise to the 
Requirements section of the wiki page. this will help us craft something 
that fits the actual needs of us all.

 Please reconsider your proposed workflow.

i'd like this to become our workflow rather than your workflow. we need to 
start somewhere, and here is as good a place as any. if nothing else, it ends 
the stalemate of nobody moves, nobody gets hurt around defining a git based 
workflow for our efforts. but it will only produce good results if we, as a 
community, take it on as ours. not yours, not mine, not theirs. 
ours. because then we'll participate with eagerness and expectation. :)

those of us involved thus far are doing so because no one has really stepped 
up yet. however, we are not interested in dictating anything. we want 
participation, we want discussion, we want to come up with something that 
Works(tm) which means being completely open to adjusting any parts that need 
adjusting until we have something that does work for us all (as much as that 
is possible, of course :)

-- 
Aaron J. Seigo
humru othro a kohnu se
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA  EE75 D6B7 2EB1 A7F1 DB43

KDE core developer sponsored by Qt Development Frameworks


signature.asc
Description: This is a digitally signed message part.


Re: Git Worflow, branch creation.

2011-05-19 Thread Aaron J. Seigo
On Thursday, May 19, 2011 10:05:27 Cornelius Schumacher wrote:
 On Thursday 19 May 2011 Aaron J. Seigo wrote:
  http://techbase.kde.org/Development/Tutorials/Git/Feature_Development_Wo
  rkf low
 
 Wow. This is a pretty complex workflow, and it's breaking with quite some
 practices KDE used to use for a very long time. We have to make sure that we
 don't leave developers behind with such a drastic change.

this is why we need to have work on it together. while a few of us have taken 
first steps in terms of drafting something, basically because someone has to 
otherwise we all stay in limbo with nothing being done, this is more of a 
provocative call to participate than anything even close to a final proposal.

if we don't participate as if we care about this, we will get a workflow that 
doesn't serve us very well. which is what we have now. ;) so consider this a 
process in creating our shared future workflow with everything on the table to 
be modified, changed and improved as we see fit.

note that there wasn't unanimous agreement on this workflow at Tokamak, but it 
at least gave us a starting point. we've openly documented it, brought the 
discussion to k-c-d and want input. there's a reason for that: we don't want 
to leave anyone behind and we want a workflow that, well, works. :) with a few 
iterations of this approach, i think we can have something pretty damn good 
put together.

 The approach of having one central repository and all committers being equal
 has served us well.

i don't think that will change much. what is likely to change is that we won't 
be developing in a one mainline branch that we expect to become stable. it's 
nearly magical thinking that this is possible, in fact. in the goal of 
increasing the predictability of master, we can (and should) all still be 
equal in our interactions.

 Maybe it's time to move forward to a different model,
 but I think this should be done with care, and without changing more than
 needed. 

yes, hopefully we change only what is needed and no more. :)

 A lot of this is about semantics and how to name things, not
 necessarily about technical processes. For example, if master is the stable
 branch or a release branch doesn't make a big difference technically, but
 it might affect our development culture quite a bit.

agreed; note that the suggestion is not to make master _the_ stable branch 
(release branches would still maintain that position) but to make master as 
stable as possible over any given period of time.

right now we have unpredictable levels of stability in master depending on the 
phase of the moon and where in the release cycle we are. this makes many 
things more difficult (including making time based releases) than it probably 
needs to be. at times it results in us shipping releases with more defects 
than we ought to.

increasing the day-to-day stability and predictability of master by using 
git's strength in merging could probably do wonders for our releases. not to 
mention it would be very welcome by people working on device targets for which 
the release date of a given KDE SC event is less important compared to always 
having a place to pull from that is reasonably safe and not feature-stale.

 This needs to be discussed. I'm looking forward to the upcoming face-to-face
 meetings, but we should also have a wider discussion, as this is affecting
 many more people than those who will have the opportunity to be at these
 meetings.

let's just be careful with the definition of wider. we need a representative 
sampling of people from across KDE's community in terms of skill levels, needs 
and perspectives (e.g. casual developer, core developer, sys admin, writers of 
the commit digest ..). we don't need every possible individual involved, 
however. as such, if we do these discussions at Platform 11 and then again at 
BDS, and document results as we go, we probably will reach that level of 
coverage.

we don't need everyone involved, we just need the various points of view and 
needs represented. as such, i do think the F2F meetings are likely to suffice.

-- 
Aaron J. Seigo
humru othro a kohnu se
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA  EE75 D6B7 2EB1 A7F1 DB43

KDE core developer sponsored by Qt Development Frameworks


signature.asc
Description: This is a digitally signed message part.


Re: Git Worflow, branch creation.

2011-05-19 Thread Thiago Macieira
On Thursday, 19 de May de 2011 11:44:59 Stephen Kelly wrote:
 Ben Cooksley wrote:
  Second you are heavily advocating rebasing. This shouldn't be done in
  public repositories as it:
  - Inflates the size of the repository.
 
 I thought git gc which runs periodically would mean that the repo size is
 not inflated?

Correct.

  - Requires some Git magic to recover if the branch you are currently
  using gets force pushed.
  - Is detected as new commits by the hooks, which if you were to
  operate in the main repository would cause re-notification of commits.
  
  If you were to continue with your current workflow, then you would
  likely need the assistance of Sysadmin everytime you wanted to merge a
  significant feature which comprises of more than 100 commits into the
  main repository.
 
 Do wee have any information about feature branches of 100 commits? When KDE
 developers push local branches how many commits are on them? Do we have
 numbers about that?

100-commit feature branches probably will do merges and thus cannot be 
rebased.

A rebasing branch is usually done by a single developer and should have in 
average up to 10 commits. 20 at the outset, then it starts to get really hard 
to maintain.

-- 
Thiago Macieira - thiago (AT) macieira.info - thiago (AT) kde.org
  Senior Product Manager - Nokia, Qt Development Frameworks
  PGP/GPG: 0x6EF45358; fingerprint:
  E067 918B B660 DBD1 105C  966C 33F5 F005 6EF4 5358


signature.asc
Description: This is a digitally signed message part.


Re: Git Worflow, branch creation.

2011-05-19 Thread Stephen Kelly
Ben Cooksley wrote:

 Doesn't apply to KDE repositories, as performing a rebase involves a
 force push, which initiates the damage prevention area of our hooks.
 This triggers creation of a backup ref protecting the contents of
 the old ref from being affected by a gc, and ensures they are always
 reachable.
 It is a protective measure to guard against malicious force pushes or
 branch deletions. (Note that git doesn't fetch backup refs normally)

This is interesting. Has this always been the case? I don't remember this 
coming up in previous discussions about rebases and force pushes. Can this 
feature be limited to release branches (master, x.y.z), just out of 
curiosity?



Re: Git Worflow, branch creation.

2011-05-19 Thread Ben Cooksley
On Fri, May 20, 2011 at 4:48 AM, Stephen Kelly steve...@gmail.com wrote:
 Ben Cooksley wrote:

 Doesn't apply to KDE repositories, as performing a rebase involves a
 force push, which initiates the damage prevention area of our hooks.
 This triggers creation of a backup ref protecting the contents of
 the old ref from being affected by a gc, and ensures they are always
 reachable.
 It is a protective measure to guard against malicious force pushes or
 branch deletions. (Note that git doesn't fetch backup refs normally)

 This is interesting. Has this always been the case? I don't remember this
 coming up in previous discussions about rebases and force pushes. Can this
 feature be limited to release branches (master, x.y.z), just out of
 curiosity?

Ever since we got the new hooks. The backups don't affect developers
as such, it only causes an increase of the repository size on the
server. Git doesn't retrieve the contents of backup refs by default.

It needs to run on all branches/tags/refs to ensure that abuse is prevented.

The more developer focused side of repo growth with rebasing usually
occurs when a branch is rebased on top of another branch - and the
original isn't deleted. Therefore everyone ends up downloading those
commits effectively twice.

Regards,
Ben


Re: Git Worflow, branch creation.

2011-05-18 Thread Aaron J. Seigo
On Tuesday, May 17, 2011 11:40:30 Alexis Ménard wrote:
 fact that you couldn't hack features in the official trunk, people had
 to use personal svn branches and now teams like plasma think about
 setup integration repos. That sounds weird, you usually use these

personally, i don't care whether there is a separate repository for
integration or its all done in branches in one repository. there are benefits,
and challenges, to doing it either way.

what we want to move away from, however, is a master branch that is open to
all and any changes at any point in time. we want a branch where things are
integrated and tested by the main group of people working on the software and
those who follow it closely. that branch will have feature branches merged
into it, bug fixes applied to it, etc. then, at regular intervals that allow
for stabilization, that branch will be merged into master.

we want the ability to use Feature A with Feature B without running that
experiment in master. we want master to be as stable as possible at all times
without removing the ability to run experiments and confirm that thing work
well together, which means moving what we do today in master to another
branch.

the ability for developers to delete branches would also be very helpful in
that regard.

but the real problem goes a lot deeper here, imho. the reason for a feature
freeze in master is that it assumes we're all working on features *in* master
(or, previously, in trunk). we may wish to rethink that approach in general.
if all new feature devel is done in branches, then a feature freeze would
mean no feature branches that haven't been merged by now can be merged. how
to manage that process, including translatation updates and multiple merges
over time from a given feature branch, is what needs planning.

i don't want to start this discussion here on this mailing list as i doubt it
will result in anything useful, given the constraints on bandwidth and
opportunity to easily diverge into a thousand sub-topics. let's ensure this
gets attention at up-coming face-to-face meetings and work out a solution
there. Platform 11 in a couple of weeks could look at this for kdelibs, and as
a broader community we could take it on at the Berlin Desktop Summit.

--
Aaron J. Seigo
humru othro a kohnu se
GPG Fingerprint: 8B8B 2209 0C6F 7C47 B1EA  EE75 D6B7 2EB1 A7F1 DB43

KDE core developer sponsored by Qt Development Frameworks


signature.asc
Description: This is a digitally signed message part.


Re: Git Worflow, branch creation.

2011-05-18 Thread John Layt
On Wednesday 18 May 2011 12:06:18 Aaron J. Seigo wrote:
 i don't want to start this discussion here on this mailing list as i doubt
 it will result in anything useful, given the constraints on bandwidth and
 opportunity to easily diverge into a thousand sub-topics. let's ensure
 this gets attention at up-coming face-to-face meetings and work out a
 solution there. Platform 11 in a couple of weeks could look at this for
 kdelibs, and as a broader community we could take it on at the Berlin
 Desktop Summit.

+1.  I've added it to the agenda for Randa.  I also want to shame people to 
use a spare couple of hours while there to help update TechBase.

John.


Re: Git Worflow, branch creation.

2011-05-18 Thread Alexander Neundorf
On Wednesday 18 May 2011, Aaron J. Seigo wrote:
...
 i don't want to start this discussion here on this mailing list as i doubt
 it will result in anything useful, given the constraints on bandwidth and
 opportunity to easily diverge into a thousand sub-topics. let's ensure
 this gets attention at up-coming face-to-face meetings and work out a
 solution there. Platform 11 in a couple of weeks could look at this for
 kdelibs, and as a broader community we could take it on at the Berlin
 Desktop Summit.

From my side, I would strongly prefer to have one policy which is used at 
least for all of KDE SC, (what was trunk/KDE/ before), if possible also for 
kdesupport.
For somebody who from time to time looks at all projects in that scope (at the 
cmake stuff) it would make things very complicated if different policies are 
used by different repositories/projects.

Alex






Git Worflow, branch creation.

2011-05-17 Thread Alexis Ménard
Hello,

Not sure this was discussed before but I'd like to bring the topic for
discussion.

Now that KDE moved to git it seems we still have old habits like
Freezing period on trunk (or should I say master branches of each
git repos). That sounds like weird to me when one of the main feature
of git is branch management. Unlike SVN it's easy for anyone to switch
from a branch to another one, making back-porting patches very easy,
checkouting being 10 times more easy.

I know it's a wider announcement so that people focus on bug fix
rather than feature (which is great). Now I don't understand why the
branching of let say 4.7 does not happen before on each repo (when the
freeze is decided) and we could make the policy on branches way more
clear and defined what could go on the branch and what can't go (just
using the procedure we have today). It has always been annoying the
fact that you couldn't hack features in the official trunk, people had
to use personal svn branches and now teams like plasma think about
setup integration repos. That sounds weird, you usually use these
extra branches for huge stuff you don't want to put in trunk right now
(like big refactoring, or research) not for every little features or
improvements projects want to push. To me the term trunk means it's
always open to features. I'm sure the Plasma need is not alone and we
will see these integration repos pop for not particular reason and
will mess up the history (with merge commit), make the checkout
complicated for people to use vanilla and make the KDE project
complicated to understand.

I looked around and all projects using git I've tried (and I'm not
saying I covered all :D) have a trunk always open to features. Ok it's
not as complicated/big as KDE but still.

Perhaps I miss a point here so if it's the case, could you please tell me?

I'm trying to see if our workflow could be improved.

Thanks.


Re: Git Worflow, branch creation.

2011-05-17 Thread Maksim Orlovich
Testing.

If everyone is working on branches on cool new stuff, the release will be crap.


On 5/17/11, Alexis Ménard men...@kde.org wrote:
 Hello,

 Not sure this was discussed before but I'd like to bring the topic for
 discussion.

 Now that KDE moved to git it seems we still have old habits like
 Freezing period on trunk (or should I say master branches of each
 git repos). That sounds like weird to me when one of the main feature
 of git is branch management. Unlike SVN it's easy for anyone to switch
 from a branch to another one, making back-porting patches very easy,
 checkouting being 10 times more easy.

 I know it's a wider announcement so that people focus on bug fix
 rather than feature (which is great). Now I don't understand why the
 branching of let say 4.7 does not happen before on each repo (when the
 freeze is decided) and we could make the policy on branches way more
 clear and defined what could go on the branch and what can't go (just
 using the procedure we have today). It has always been annoying the
 fact that you couldn't hack features in the official trunk, people had
 to use personal svn branches and now teams like plasma think about
 setup integration repos. That sounds weird, you usually use these
 extra branches for huge stuff you don't want to put in trunk right now
 (like big refactoring, or research) not for every little features or
 improvements projects want to push. To me the term trunk means it's
 always open to features. I'm sure the Plasma need is not alone and we
 will see these integration repos pop for not particular reason and
 will mess up the history (with merge commit), make the checkout
 complicated for people to use vanilla and make the KDE project
 complicated to understand.

 I looked around and all projects using git I've tried (and I'm not
 saying I covered all :D) have a trunk always open to features. Ok it's
 not as complicated/big as KDE but still.

 Perhaps I miss a point here so if it's the case, could you please tell me?

 I'm trying to see if our workflow could be improved.

 Thanks.



Re: Git Worflow, branch creation.

2011-05-17 Thread Ivan Cukic
On Tuesday, 17. May 2011. 11.42.41 Maksim Orlovich wrote:
 Testing.
 
 If everyone is working on branches on cool new stuff, the release will
 be crap.

I don't agree. Freezes just stop the development - it doesn't improve the 
bugfixing as much.

The best way (IMO) would be to have all done in parallel.

Cheerio,
Ivan



-- 
You don't stop laughing because you grow old. You grow old because you 
stop laughing.
  -- Michael Pritchard



Re: Git Worflow, branch creation.

2011-05-17 Thread Fredrik Höglund
On Tuesday 17 May 2011, Ivan Cukic wrote:
 On Tuesday, 17. May 2011. 11.42.41 Maksim Orlovich wrote:
  Testing.
  
  If everyone is working on branches on cool new stuff, the release will
  be crap.
 
 I don't agree. Freezes just stop the development - it doesn't improve the 
 bugfixing as much.

It's not just about keeping people focused on fixing bugs, it's about
developers actually running and testing the branch that we're about
to release.

Regards,
Fredrik



Re: Git Worflow, branch creation.

2011-05-17 Thread Ivan Cukic

 It's not just about keeping people focused on fixing bugs, it's about
 developers actually running and testing the branch that we're about
 to release.

With that I agree. The idea in plasma-world was to keep an always 
releasable branch. That is, things get in from the development branches 
only after they are finished and reviewed.

This way the things get tested, and there is no cooling period for the 
development.

Ch



-- 
Money can't buy happiness, but neither can poverty.
   -- Leo Rosten



Re: Git Worflow, branch creation.

2011-05-17 Thread Alexis Ménard
On Tue, May 17, 2011 at 1:16 PM, Fredrik Höglund fred...@kde.org wrote:
 On Tuesday 17 May 2011, Ivan Cukic wrote:
 On Tuesday, 17. May 2011. 11.42.41 Maksim Orlovich wrote:
  Testing.
 
  If everyone is working on branches on cool new stuff, the release will
  be crap.

 I don't agree. Freezes just stop the development - it doesn't improve the
 bugfixing as much.

 It's not just about keeping people focused on fixing bugs, it's about
 developers actually running and testing the branch that we're about
 to release.

Well it's the same you could run 4.7 branch (supposedly more
mature/tested than the trunk). And you could also point out that
branch to early adopters rather than trunk.
Also for distribution it's easier, they pick a branch (4.7) and make
nightly builds. It's more your responsibility as a KDE developer to
switch to that branch rather than sticking with trunk if you really
want to help to fix the stability when the release is about to happen.
I fail to see why 4.7 branch could be less tested than trunk if you
communicate it properly. Btw still on the old svn, you were sticking
with trunk or after the branching you were running the release branch?
To me it's the same but in the other hand you let the development to
continue (a bit like Firefox new approach/WebKit).


 Regards,
 Fredrik