Re: Proposal for an inbound2 branch

2013-05-05 Thread Ehsan Akhgari

On 2013-05-05 1:20 PM, Gregory Szorc wrote:

On 5/4/2013 9:59 PM, Justin Dolske wrote:

On 5/1/13 8:41 PM, Ehsan Akhgari wrote:

Another disadvantage of project branches in addition to the ones
mentioned before is that it limits/delays the amount of testing that you
can get on Nightly and from all of the developers who run things like
fuzzers on ours code.  Not everyone's project has enough manpower to get
that level of testing on a project branch before their stuff gets merged
to central/inbound.  I personally cannot imagine doing my development in
a project branch silo and deprive myself of the huge advantage that this
kind of testing brings about.


That all depends on how one uses a "project branch".

If you use a project branch as a traditional staging area for work
that is large/complex and merge it infrequently, then yes. Those are
absolutely real problems.

But if you use a project branch as just a frequently-merged
integration branch, then I don't see these things as being problems. I
think that's what gps is proposing -- not the old-school usage of
project branches (maybe we need a new term?). Such branches would be
almost exactly the same thing as mozilla-inbound, and we don't worry
about those problems on inbound. We did exactly this in the past with
JS and Services (and to a lesser extent with fx-team)... We'd just
call them inbound-js and inbound-services now.


Frequently-merged integration branches are exactly what I'm proposing.
Naming is hard.


What would be the benefit of that compared to Ryan's proposal?  The 
downsides are clear: more branches to be sheriffed, more merge pain, and 
worse usage of our infra capacity...



[AIUI, those teams stopped because inbound was working so well -- why
spend time running your own branch when m-i is just as good and
requires no effort? The twist now is that m-i is a victim of it's own
success, and so we should think about making the costs more directly
visible to project teams.]


I actually started reusing services-central as an inbound-like branch
because I was so frustrated dealing with inbound closures. It's merged
by not-the-sheriffs, does not get the normal starring love (I don't mind
starring my own pushes), and is merged less often. But, it works for our
needs.


I think Ryan's proposal addresses the inbound closure problem.  Do you 
see more problems that need to be addressed by using s-c as an 
integration branch?  I doubt that it is a scalable approach to ask every 
team to maintain their own branches this way.


Ehsan
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-05 Thread Gregory Szorc

On 5/4/2013 9:59 PM, Justin Dolske wrote:

On 5/1/13 8:41 PM, Ehsan Akhgari wrote:

Another disadvantage of project branches in addition to the ones
mentioned before is that it limits/delays the amount of testing that you
can get on Nightly and from all of the developers who run things like
fuzzers on ours code.  Not everyone's project has enough manpower to get
that level of testing on a project branch before their stuff gets merged
to central/inbound.  I personally cannot imagine doing my development in
a project branch silo and deprive myself of the huge advantage that this
kind of testing brings about.


That all depends on how one uses a "project branch".

If you use a project branch as a traditional staging area for work 
that is large/complex and merge it infrequently, then yes. Those are 
absolutely real problems.


But if you use a project branch as just a frequently-merged 
integration branch, then I don't see these things as being problems. I 
think that's what gps is proposing -- not the old-school usage of 
project branches (maybe we need a new term?). Such branches would be 
almost exactly the same thing as mozilla-inbound, and we don't worry 
about those problems on inbound. We did exactly this in the past with 
JS and Services (and to a lesser extent with fx-team)... We'd just 
call them inbound-js and inbound-services now.


Frequently-merged integration branches are exactly what I'm proposing. 
Naming is hard.




[AIUI, those teams stopped because inbound was working so well -- why 
spend time running your own branch when m-i is just as good and 
requires no effort? The twist now is that m-i is a victim of it's own 
success, and so we should think about making the costs more directly 
visible to project teams.]


I actually started reusing services-central as an inbound-like branch 
because I was so frustrated dealing with inbound closures. It's merged 
by not-the-sheriffs, does not get the normal starring love (I don't mind 
starring my own pushes), and is merged less often. But, it works for our 
needs.

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-04 Thread Justin Dolske

On 5/1/13 8:41 PM, Ehsan Akhgari wrote:

Another disadvantage of project branches in addition to the ones
mentioned before is that it limits/delays the amount of testing that you
can get on Nightly and from all of the developers who run things like
fuzzers on ours code.  Not everyone's project has enough manpower to get
that level of testing on a project branch before their stuff gets merged
to central/inbound.  I personally cannot imagine doing my development in
a project branch silo and deprive myself of the huge advantage that this
kind of testing brings about.


That all depends on how one uses a "project branch".

If you use a project branch as a traditional staging area for work that 
is large/complex and merge it infrequently, then yes. Those are 
absolutely real problems.


But if you use a project branch as just a frequently-merged integration 
branch, then I don't see these things as being problems. I think that's 
what gps is proposing -- not the old-school usage of project branches 
(maybe we need a new term?). Such branches would be almost exactly the 
same thing as mozilla-inbound, and we don't worry about those problems 
on inbound. We did exactly this in the past with JS and Services (and to 
a lesser extent with fx-team)... We'd just call them inbound-js and 
inbound-services now.


[AIUI, those teams stopped because inbound was working so well -- why 
spend time running your own branch when m-i is just as good and requires 
no effort? The twist now is that m-i is a victim of it's own success, 
and so we should think about making the costs more directly visible to 
project teams.]


Justin
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-03 Thread Brian Smith
L. David Baron wrote:
> On Saturday 2013-04-27 08:26 +1000, Nicholas Nethercote wrote:
> > If I have a patch ready to land when inbound closes, what would be
> > the sequence of steps that I need to do to land it on inbound2?
> > Would I need to have an up-to-date inbound2 clone and transplant
> > the patch across?  Or is it possible to push from an inbound clone?
> 
> For what it's worth, what I'd do is qpop the patch, pull the tip of
> inbound2 into my inbound clone and update to tip, qpush and qfin the
> patch, and then "hg out -rtip inbound2" (and after checking it's
> right), "hg push -rtip inbound2".

I would:

hg pull inbound2
hg update -c tip (not always correct, but usually)
hg graft 

The horrible thing about qpop and qpush is that they deal with conflicts very, 
very poorly, whereas hg graft, hg rebase, and hg pull --rebase allow me to use 
my three-way merge tool to resolve conflicts. That ends up being a big time 
saver and IMO it is also much less error-prone.

Also, I am not sure "-rtip" is the safest thing to use when you have a 
multi-headed local repo. I always use "-r ." myself.

Cheers,
Brian
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-03 Thread Justin Lebar
> Given the whole point of this thread is about how unreliable inbound is, why
> are people trying to develop against it?

You still need a copy of inbound to rebase your patches against when pushing.

Whatever your personal opinions about git happen to be, I don't think
a "git doesn't need a copy of inbound" approach is going to fly.
We're simply too invested in git at this point to be OK adding more
circumstances under which we have to say "well, if you want to do
/that/, you need to use hg."
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-03 Thread Neil

Ehsan Akhgari wrote:


On 2013-05-02 9:29 AM, Neil wrote:


Ehsan Akhgari wrote:

Multiheaded repos are evil.  They're very hard to deal with, and I 
don't think that buildbot can deal with them properly.  Also, they 
cannot be represented in git, which means that they will break the 
git mirror.


Why does mozilla-inbound need a git mirror?


Because a lot of our developers are using git locally, and the 
development of Firefox OS relies on working git mirrors of a number of 
branches, including inbound.


Given the whole point of this thread is about how unreliable inbound is, 
why are people trying to develop against it?


--
Warning: May contain traces of nuts.
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-03 Thread Gregory Szorc

On 5/3/2013 12:20 AM, Dirkjan Ochtman wrote:

On Fri, May 3, 2013 at 8:43 AM, Ehsan Akhgari  wrote:

In git, the only way to have something in your history is for it to be
reachable by a ref (for example, a branch name).  When you convert an hg
repo with a multi-headed branch to git, you can only choose to represent one
of those heads by a branch name, and the other head will be left stranded,
which means that it cannot be used normally (for example you cannot push it
when you push your branch somewhere) and git gc will remove it from your
repository since it thinks that it's an unneeded commit.

It seems like a hg bookmark could be used to keep a pointer to the
separate heads. This should create the refs you need when using
hg-git. (FWIW, I fully agree that keeping two anonymous heads is
probably a bad idea.)


I was about to say the same thing. Bookmarks are how this should be 
done. hg-git converts bookmarks to and from Git branches.


Also, if the hg-git tool isn't satisfying our needs, we can always 
modify hg-git.


http://mercurial.selenic.com/wiki/Bookmarks/
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-03 Thread Ehsan Akhgari

On 2013-05-03 3:19 AM, Mike Hommey wrote:

On Fri, May 03, 2013 at 02:59:21AM -0400, Ehsan Akhgari wrote:

On 2013-05-03 2:52 AM, Mike Hommey wrote:

On Fri, May 03, 2013 at 02:43:36AM -0400, Ehsan Akhgari wrote:

On 2013-05-02 9:40 AM, Mike Hommey wrote:

On Thu, May 02, 2013 at 09:21:57AM -0400, Ehsan Akhgari wrote:

Also, they cannot be represented in git


I doubt this is true. The bridging tools may well not support it, but
there's nothing structural about multiple-head repository that would
prevent them to be mirrored in git.


In git, the only way to have something in your history is for it to
be reachable by a ref (for example, a branch name).  When you
convert an hg repo with a multi-headed branch to git, you can only
choose to represent one of those heads by a branch name, and the
other head will be left stranded, which means that it cannot be used
normally (for example you cannot push it when you push your branch
somewhere) and git gc will remove it from your repository since it
thinks that it's an unneeded commit.


The hg/git bridge could keep refs with arbitrary names. Or whatever.
Really, there's no reason that should be a problem.


That is easier said than done.  hg-git supports bidirectioal
conversion, so such a solution should deal with going back from git
to hg some way.  And it should also delete the arbitrary name when
the extra head goes away somehow, and perhaps other problems that I
can't think of right now.  And doing any of that is entirely beyond
my abilities!  :-)

I don't understand why we need to switch to a solution which would
make maintaining the inbound branch in the git mirror impossible (at
least in the near future.)


IMHO, the multiplication of branches is not helping the mercurial server
performance. Each new branch takes disk space, which is not really a
problem, but most branches can't stay in memory caches since other
branches are going to throw them away from memory. Arguably, we're
already using too many branches.


That seems like a problem that can be solved by having a decent amount 
of memory on the hg server.  Or, use the share extension.  Or whatever. 
 Remember that this setup _is_ the "standard" way to do branches in 
Mercurial.  I agree that it's horrible, but that's something that 
Mercurial users have to deal with.



That's also why mercurial was a terrible choice for the long term.
Easy to say in retrospective, but the more we talk about mercurial
problems, the clearer it gets.


You're not going to hear an argument against that from me!  :-)

Ehsan

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-03 Thread Dirkjan Ochtman
On Fri, May 3, 2013 at 8:43 AM, Ehsan Akhgari  wrote:
> In git, the only way to have something in your history is for it to be
> reachable by a ref (for example, a branch name).  When you convert an hg
> repo with a multi-headed branch to git, you can only choose to represent one
> of those heads by a branch name, and the other head will be left stranded,
> which means that it cannot be used normally (for example you cannot push it
> when you push your branch somewhere) and git gc will remove it from your
> repository since it thinks that it's an unneeded commit.

It seems like a hg bookmark could be used to keep a pointer to the
separate heads. This should create the refs you need when using
hg-git. (FWIW, I fully agree that keeping two anonymous heads is
probably a bad idea.)

Cheers,

Dirkjan
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-03 Thread Mike Hommey
On Fri, May 03, 2013 at 02:59:21AM -0400, Ehsan Akhgari wrote:
> On 2013-05-03 2:52 AM, Mike Hommey wrote:
> >On Fri, May 03, 2013 at 02:43:36AM -0400, Ehsan Akhgari wrote:
> >>On 2013-05-02 9:40 AM, Mike Hommey wrote:
> >>>On Thu, May 02, 2013 at 09:21:57AM -0400, Ehsan Akhgari wrote:
> Also, they cannot be represented in git
> >>>
> >>>I doubt this is true. The bridging tools may well not support it, but
> >>>there's nothing structural about multiple-head repository that would
> >>>prevent them to be mirrored in git.
> >>
> >>In git, the only way to have something in your history is for it to
> >>be reachable by a ref (for example, a branch name).  When you
> >>convert an hg repo with a multi-headed branch to git, you can only
> >>choose to represent one of those heads by a branch name, and the
> >>other head will be left stranded, which means that it cannot be used
> >>normally (for example you cannot push it when you push your branch
> >>somewhere) and git gc will remove it from your repository since it
> >>thinks that it's an unneeded commit.
> >
> >The hg/git bridge could keep refs with arbitrary names. Or whatever.
> >Really, there's no reason that should be a problem.
> 
> That is easier said than done.  hg-git supports bidirectioal
> conversion, so such a solution should deal with going back from git
> to hg some way.  And it should also delete the arbitrary name when
> the extra head goes away somehow, and perhaps other problems that I
> can't think of right now.  And doing any of that is entirely beyond
> my abilities!  :-)
> 
> I don't understand why we need to switch to a solution which would
> make maintaining the inbound branch in the git mirror impossible (at
> least in the near future.)

IMHO, the multiplication of branches is not helping the mercurial server
performance. Each new branch takes disk space, which is not really a
problem, but most branches can't stay in memory caches since other
branches are going to throw them away from memory. Arguably, we're
already using too many branches.

That's also why mercurial was a terrible choice for the long term.
Easy to say in retrospective, but the more we talk about mercurial
problems, the clearer it gets.

Mike
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Ehsan Akhgari

On 2013-05-03 2:52 AM, Mike Hommey wrote:

On Fri, May 03, 2013 at 02:43:36AM -0400, Ehsan Akhgari wrote:

On 2013-05-02 9:40 AM, Mike Hommey wrote:

On Thu, May 02, 2013 at 09:21:57AM -0400, Ehsan Akhgari wrote:

Also, they cannot be represented in git


I doubt this is true. The bridging tools may well not support it, but
there's nothing structural about multiple-head repository that would
prevent them to be mirrored in git.


In git, the only way to have something in your history is for it to
be reachable by a ref (for example, a branch name).  When you
convert an hg repo with a multi-headed branch to git, you can only
choose to represent one of those heads by a branch name, and the
other head will be left stranded, which means that it cannot be used
normally (for example you cannot push it when you push your branch
somewhere) and git gc will remove it from your repository since it
thinks that it's an unneeded commit.


The hg/git bridge could keep refs with arbitrary names. Or whatever.
Really, there's no reason that should be a problem.


That is easier said than done.  hg-git supports bidirectioal conversion, 
so such a solution should deal with going back from git to hg some way. 
 And it should also delete the arbitrary name when the extra head goes 
away somehow, and perhaps other problems that I can't think of right 
now.  And doing any of that is entirely beyond my abilities!  :-)


I don't understand why we need to switch to a solution which would make 
maintaining the inbound branch in the git mirror impossible (at least in 
the near future.)


Ehsan

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Mike Hommey
On Fri, May 03, 2013 at 02:43:36AM -0400, Ehsan Akhgari wrote:
> On 2013-05-02 9:40 AM, Mike Hommey wrote:
> >On Thu, May 02, 2013 at 09:21:57AM -0400, Ehsan Akhgari wrote:
> >>Also, they cannot be represented in git
> >
> >I doubt this is true. The bridging tools may well not support it, but
> >there's nothing structural about multiple-head repository that would
> >prevent them to be mirrored in git.
> 
> In git, the only way to have something in your history is for it to
> be reachable by a ref (for example, a branch name).  When you
> convert an hg repo with a multi-headed branch to git, you can only
> choose to represent one of those heads by a branch name, and the
> other head will be left stranded, which means that it cannot be used
> normally (for example you cannot push it when you push your branch
> somewhere) and git gc will remove it from your repository since it
> thinks that it's an unneeded commit.

The hg/git bridge could keep refs with arbitrary names. Or whatever.
Really, there's no reason that should be a problem.

Mike
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Ehsan Akhgari

On 2013-05-02 10:58 AM, Boris Zbarsky wrote:

On 5/2/13 10:09 AM, Matt Brubeck wrote:

The suggested workflow
with inbound2 would lead to almost-identical multi-headed repos in
developers' local clones anyway.


Only temporary ones, until inbound and inbound2 merge.


Using multiple mozilla repositories in a single hg clone means that you 
already have to deal with multiple heads, so this won't change anything 
for those people.


Ehsan

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Ehsan Akhgari

On 2013-05-02 9:29 AM, Neil wrote:

Ehsan Akhgari wrote:


Multiheaded repos are evil.  They're very hard to deal with, and I
don't think that buildbot can deal with them properly.  Also, they
cannot be represented in git, which means that they will break the git
mirror.


Why does mozilla-inbound need a git mirror?


Because a lot of our developers are using git locally, and the 
development of Firefox OS relies on working git mirrors of a number of 
branches, including inbound.


Ehsan

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Ehsan Akhgari

On 2013-05-02 9:40 AM, Mike Hommey wrote:

On Thu, May 02, 2013 at 09:21:57AM -0400, Ehsan Akhgari wrote:

Also, they cannot be represented in git


I doubt this is true. The bridging tools may well not support it, but
there's nothing structural about multiple-head repository that would
prevent them to be mirrored in git.


In git, the only way to have something in your history is for it to be 
reachable by a ref (for example, a branch name).  When you convert an hg 
repo with a multi-headed branch to git, you can only choose to represent 
one of those heads by a branch name, and the other head will be left 
stranded, which means that it cannot be used normally (for example you 
cannot push it when you push your branch somewhere) and git gc will 
remove it from your repository since it thinks that it's an unneeded commit.


Ehsan

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Boris Zbarsky

On 5/2/13 10:09 AM, Matt Brubeck wrote:

The suggested workflow
with inbound2 would lead to almost-identical multi-headed repos in
developers' local clones anyway.


Only temporary ones, until inbound and inbound2 merge.

-Boris
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Matt Brubeck

On 5/2/2013 6:21 AM, Ehsan Akhgari wrote:

On 2013-05-02 5:46 AM, Neil wrote:

Why do we need a separate repo? Can we not simply close the broken head
and start again at the last green changeset?


Multiheaded repos are evil.  They're very hard to deal with, and I don't
think that buildbot can deal with them properly.


Buildbot can deal with a multi-headed Try, so it can probably be 
convinced to deal with a multi-headed inbound, even if it needs to be a 
special case like Try.


Individual developers might have more problems (they'll want to pull 
from inbound, unlike Try) but I think as long as the inactive heads are 
closed it won't freak out Mercurial too much...  The suggested workflow 
with inbound2 would lead to almost-identical multi-headed repos in 
developers' local clones anyway.

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Mike Hommey
On Thu, May 02, 2013 at 09:21:57AM -0400, Ehsan Akhgari wrote:
> Also, they cannot be represented in git

I doubt this is true. The bridging tools may well not support it, but
there's nothing structural about multiple-head repository that would
prevent them to be mirrored in git.

Mike
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Neil

Ehsan Akhgari wrote:

Multiheaded repos are evil.  They're very hard to deal with, and I 
don't think that buildbot can deal with them properly.  Also, they 
cannot be represented in git, which means that they will break the git 
mirror.


Why does mozilla-inbound need a git mirror?

--
Warning: May contain traces of nuts.
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Ehsan Akhgari

On 2013-05-02 5:46 AM, Neil wrote:

Ryan VanderMeulen wrote:


My proposal:
-Create an inbound2 branch identically configured to mozilla-inbound.
-Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
-In the event of a long tree closure, the last green changeset from
m-i will be merged to inbound2 and inbound2 will be opened for checkins.
---It will be a judgment call for sheriffs as to how long of a closure
will suffice for opening inbound2.
-When the bustage on m-i is resolved and it is again passing tests,
inbound2 will be closed again.
-When all pending jobs on inbound2 are completed, it will be merged to
m-i.


Why do we need a separate repo? Can we not simply close the broken head
and start again at the last green changeset?


Multiheaded repos are evil.  They're very hard to deal with, and I don't 
think that buildbot can deal with them properly.  Also, they cannot be 
represented in git, which means that they will break the git mirror.


Cheers,
Ehsan

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-02 Thread Neil

Ryan VanderMeulen wrote:


My proposal:
-Create an inbound2 branch identically configured to mozilla-inbound.
-Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
-In the event of a long tree closure, the last green changeset from 
m-i will be merged to inbound2 and inbound2 will be opened for checkins.
---It will be a judgment call for sheriffs as to how long of a closure 
will suffice for opening inbound2.
-When the bustage on m-i is resolved and it is again passing tests, 
inbound2 will be closed again.
-When all pending jobs on inbound2 are completed, it will be merged to 
m-i.


Why do we need a separate repo? Can we not simply close the broken head 
and start again at the last green changeset?


--
Warning: May contain traces of nuts.
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-01 Thread Ehsan Akhgari
Another disadvantage of project branches in addition to the ones 
mentioned before is that it limits/delays the amount of testing that you 
can get on Nightly and from all of the developers who run things like 
fuzzers on ours code.  Not everyone's project has enough manpower to get 
that level of testing on a project branch before their stuff gets merged 
to central/inbound.  I personally cannot imagine doing my development in 
a project branch silo and deprive myself of the huge advantage that this 
kind of testing brings about.


Cheers,
Ehsan

On 2013-04-30 2:46 AM, Gregory Szorc wrote:

On 4/26/2013 12:17 PM, Ryan VanderMeulen wrote:

Specific goals:
-Offer an alternative branch for developers to push to during extended
inbound closures
-Avoid patch pile-up after inbound re-opens from a long closure

Specific non-goals:
-Reducing infrastructure load
-Changing pushing strategies from the widely-accepted status quo (i.e.
multi-headed approach)
-Creating multiple integration branches that allow for simultaneous
pushing (i.e. inbound-b2g, inbound-gfx, etc)

My proposal:
-Create an inbound2 branch identically configured to mozilla-inbound.
-Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
-In the event of a long tree closure, the last green changeset from
m-i will be merged to inbound2 and inbound2 will be opened for checkins.
---It will be a judgment call for sheriffs as to how long of a closure
will suffice for opening inbound2.
-When the bustage on m-i is resolved and it is again passing tests,
inbound2 will be closed again.
-When all pending jobs on inbound2 are completed, it will be merged to
m-i.
-Except under extraordinary circumstances, all merges to
mozilla-central will continue to come from m-i ONLY.
-If bustage lands on inbound2, then both trees will be closed until
resolved. Tough. We apparently can't always have nice things.


If you consider that every repository is essentially a clone of
mozilla-central, what we have *now* is effectively equivalent to a
single repository with multiple heads/branches/bookmarks. However, the
different heads/branches/bookmarks differ in:

* How much attention sheriffs give them.
* The automation configuration (coalescing, priority, etc).
* Policies around landing.
* How developers use it.

These are all knobs in our control.

When we say "create an inbound2," we're essentially establishing a new
head/branch/bookmark that behaves much like "inbound1" with a slightly
different landing policy. If that's what we want to do, sure. I think
it's better than a single, frequently closed inbound.

Anyway, no matter how much I think about this proposal, I keep coming
back to the question of "why don't we use project branches more?"
Instead of everyone and her brother landing on inbound, what if more
landings were performed on {fx-team, services-central, , etc}? I /think/ the worst that can happen is merge conflicts and
bit rot. And, we can abate that through intelligent grouping of related
commits in the same repository, frequent merges, and maybe even better
communication (perhaps even automatically with tools that alert
developers to potential conflicts - wouldn't it be cool if you updated a
patch and Mercurial was like "o hai - Ehsan recently pushed a Try push
that conflicts with your change: you two should talk.").

As a counter-proposal, I propose that we start shifting landings to
project branches/twigs. We should aim for a small and well-defined set
of repositories (say 3 to 5) sharing similar automation configuration
and sheriff love. By keeping the number small, it's easy to figure out
where something should land and it's not too much of an extra burden on
sheriffs. We can still keep inbound, but it should only be reserved for
major, cross-repository landings with multi-module impact (e.g. build
system changes), merges from the main landing repositories (unless we
merge straight to central), and possibly as a backup in case one of the
landing repositories is closed.

We can test this today with very little effort: we figure out how to
bucket commits, re-purpose existing repositories/twigs, and see what
happens. If it works: great - we've just validated that distributed
version control works for Firefox development (as opposed to the
CVS/Subversion workflow we're currently using with inbound). If not, we
can try variations and/or the inbound2 idea.

Is there sanity to this proposal or am I still crazy?
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform



___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-01 Thread Gregory Szorc

On 5/1/2013 2:15 PM, L. David Baron wrote:

On Saturday 2013-04-27 08:26 +1000, Nicholas Nethercote wrote:

On Sat, Apr 27, 2013 at 5:17 AM, Ryan VanderMeulen  wrote:

-In the event of a long tree closure, the last green changeset from m-i will
be merged to inbound2 and inbound2 will be opened for checkins.

If I have a patch ready to land when inbound closes, what would be the
sequence of steps that I need to do to land it on inbound2?  Would I
need to have an up-to-date inbound2 clone and transplant the patch
across?  Or is it possible to push from an inbound clone?

For what it's worth, what I'd do is qpop the patch, pull the tip of
inbound2 into my inbound clone and update to tip, qpush and qfin the
patch, and then "hg out -rtip inbound2" (and after checking it's
right), "hg push -rtip inbound2".

I wouldn't do anything involving bookmarks; the way of checking that
I'm pushing the right thing is to run "hg out" before "hg push" (as
one should always do... and as I don't know how to do in git).


$ git log HEAD..origin/master

However, this will compare the differences based on what the local Git 
repository knows about. To ensure it is up to date, you'll need to fetch 
the remote first:


$ git fetch origin
$ git log HEAD..origin/master

Even then this isn't entirely the same as `hg out`: this just tells you 
which commits are between the local and remote ref. It's possible some 
of the {commits, trees, blobs} already exist on the remote. The actual 
details of which Git objects will be pushed is worked out at push time. 
There are low-level Git commands to get at this set. But, I'd argue the 
commit delta is what you care about, not which raw Git objects need to 
be sent over the wire.


Anyway, if you had a Mozilla Mercurial extension installed, you could 
just run |hg land| and magic would ensue.

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-05-01 Thread L. David Baron
On Saturday 2013-04-27 08:26 +1000, Nicholas Nethercote wrote:
> On Sat, Apr 27, 2013 at 5:17 AM, Ryan VanderMeulen  wrote:
> >
> > -In the event of a long tree closure, the last green changeset from m-i will
> > be merged to inbound2 and inbound2 will be opened for checkins.
> 
> If I have a patch ready to land when inbound closes, what would be the
> sequence of steps that I need to do to land it on inbound2?  Would I
> need to have an up-to-date inbound2 clone and transplant the patch
> across?  Or is it possible to push from an inbound clone?

For what it's worth, what I'd do is qpop the patch, pull the tip of
inbound2 into my inbound clone and update to tip, qpush and qfin the
patch, and then "hg out -rtip inbound2" (and after checking it's
right), "hg push -rtip inbound2".

I wouldn't do anything involving bookmarks; the way of checking that
I'm pushing the right thing is to run "hg out" before "hg push" (as
one should always do... and as I don't know how to do in git).

-David

-- 
𝄞   L. David Baron http://dbaron.org/   𝄂
𝄢   Mozilla   http://www.mozilla.org/   𝄂
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-30 Thread Ryan VanderMeulen

On 4/30/2013 11:19 AM, Chris AtLee wrote:

It seems like a tree used by a smaller, more focused group of people
could cope better with leaving some orange on the tree for short periods
of time. Instead of backing out suspect revisions, and closing the tree
to wait for the results of the backout to come back, could the tree
remain open to landings while the test failures are being investigated.
I think this is easier to coordinate with a smaller group of people, and
with a slower check-in cadence.


I've actually been doing that with birch.
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-30 Thread Chris AtLee

On 02:54, Tue, 30 Apr, Justin Lebar wrote:

Is there sanity to this proposal or am I still crazy?


If we had a lot more project branches, wouldn't that increase the load
on infra dramatically, because we'd have less coalescing?


Yes, it would decrease coalescing. I wonder how many tree closures and 
backouts we'd have though?


It seems like a tree used by a smaller, more focused group of people 
could cope better with leaving some orange on the tree for short periods 
of time. Instead of backing out suspect revisions, and closing the tree 
to wait for the results of the backout to come back, could the tree 
remain open to landings while the test failures are being investigated. 
I think this is easier to coordinate with a smaller group of people, and 
with a slower check-in cadence.


Cheers,
Chris


signature.asc
Description: Digital signature
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-30 Thread Ted Mielczarek
On 4/30/2013 2:46 AM, Gregory Szorc wrote:
> As a counter-proposal, I propose that we start shifting landings to
> project branches/twigs. We should aim for a small and well-defined set
> of repositories (say 3 to 5) sharing similar automation configuration
> and sheriff love. By keeping the number small, it's easy to figure out
> where something should land and it's not too much of an extra burden on
> sheriffs. We can still keep inbound, but it should only be reserved for
> major, cross-repository landings with multi-module impact (e.g. build
> system changes), merges from the main landing repositories (unless we
> merge straight to central), and possibly as a backup in case one of the
> landing repositories is closed.
>
> We can test this today with very little effort: we figure out how to
> bucket commits, re-purpose existing repositories/twigs, and see what
> happens. If it works: great - we've just validated that distributed
> version control works for Firefox development (as opposed to the
> CVS/Subversion workflow we're currently using with inbound). If not, we
> can try variations and/or the inbound2 idea.
>
> Is there sanity to this proposal or am I still crazy?
>
I think the key point you're missing here is that the appeal of inbound
is based on the fact that we have sheriffs willing to monitor it. Using
project branches assumes that you can either coerce the sheriffs to
monitor a bunch  more trees, or project members using those branches
will act as sheriffs. Neither of those seems particularly likely.
RyanVM's proposal is fairly tightly scoped so that it doesn't add a lot
of undue burden on sheriffs.

Given the discussion, I think this is probably the best short-term
project to try.

-Ted

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-30 Thread Axel Hecht

On 4/30/13 8:46 AM, Gregory Szorc wrote:

On 4/26/2013 12:17 PM, Ryan VanderMeulen wrote:

Specific goals:
-Offer an alternative branch for developers to push to during extended
inbound closures
-Avoid patch pile-up after inbound re-opens from a long closure

Specific non-goals:
-Reducing infrastructure load
-Changing pushing strategies from the widely-accepted status quo (i.e.
multi-headed approach)
-Creating multiple integration branches that allow for simultaneous
pushing (i.e. inbound-b2g, inbound-gfx, etc)

My proposal:
-Create an inbound2 branch identically configured to mozilla-inbound.
-Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
-In the event of a long tree closure, the last green changeset from
m-i will be merged to inbound2 and inbound2 will be opened for checkins.
---It will be a judgment call for sheriffs as to how long of a closure
will suffice for opening inbound2.
-When the bustage on m-i is resolved and it is again passing tests,
inbound2 will be closed again.
-When all pending jobs on inbound2 are completed, it will be merged to
m-i.
-Except under extraordinary circumstances, all merges to
mozilla-central will continue to come from m-i ONLY.
-If bustage lands on inbound2, then both trees will be closed until
resolved. Tough. We apparently can't always have nice things.


If you consider that every repository is essentially a clone of
mozilla-central, what we have *now* is effectively equivalent to a
single repository with multiple heads/branches/bookmarks. However, the
different heads/branches/bookmarks differ in:

* How much attention sheriffs give them.
* The automation configuration (coalescing, priority, etc).
* Policies around landing.
* How developers use it.

These are all knobs in our control.

When we say "create an inbound2," we're essentially establishing a new
head/branch/bookmark that behaves much like "inbound1" with a slightly
different landing policy. If that's what we want to do, sure. I think
it's better than a single, frequently closed inbound.

Anyway, no matter how much I think about this proposal, I keep coming
back to the question of "why don't we use project branches more?"
Instead of everyone and her brother landing on inbound, what if more
landings were performed on {fx-team, services-central, , etc}? I /think/ the worst that can happen is merge conflicts and
bit rot. And, we can abate that through intelligent grouping of related
commits in the same repository, frequent merges, and maybe even better
communication (perhaps even automatically with tools that alert
developers to potential conflicts - wouldn't it be cool if you updated a
patch and Mercurial was like "o hai - Ehsan recently pushed a Try push
that conflicts with your change: you two should talk.").

As a counter-proposal, I propose that we start shifting landings to
project branches/twigs. We should aim for a small and well-defined set
of repositories (say 3 to 5) sharing similar automation configuration
and sheriff love. By keeping the number small, it's easy to figure out
where something should land and it's not too much of an extra burden on
sheriffs. We can still keep inbound, but it should only be reserved for
major, cross-repository landings with multi-module impact (e.g. build
system changes), merges from the main landing repositories (unless we
merge straight to central), and possibly as a backup in case one of the
landing repositories is closed.

We can test this today with very little effort: we figure out how to
bucket commits, re-purpose existing repositories/twigs, and see what
happens. If it works: great - we've just validated that distributed
version control works for Firefox development (as opposed to the
CVS/Subversion workflow we're currently using with inbound). If not, we
can try variations and/or the inbound2 idea.

Is there sanity to this proposal or am I still crazy?



To me the caveat here is that merge conflicts aren't restricted to VC 
merge conflicts. Changes to APIs in one branch with a new customer in 
another is probably the most frequent. Naming conflicts between two jsms 
in different modules, conflicting contract ids, etc.


I think that the cost of getting to a single revision that works out of 
multiple independent branches in a piece of software as big and modular 
as firefox has to be significant.


Axel
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-29 Thread Justin Lebar
> Is there sanity to this proposal or am I still crazy?

If we had a lot more project branches, wouldn't that increase the load
on infra dramatically, because we'd have less coalescing?

This is of course a solvable problem, but the fact that the problem
exists suggests to me that your proposal here should be considered
separately from RyanVM's tightly-scoped proposal here.

On Tue, Apr 30, 2013 at 2:46 AM, Gregory Szorc  wrote:
> On 4/26/2013 12:17 PM, Ryan VanderMeulen wrote:
>> Specific goals:
>> -Offer an alternative branch for developers to push to during extended
>> inbound closures
>> -Avoid patch pile-up after inbound re-opens from a long closure
>>
>> Specific non-goals:
>> -Reducing infrastructure load
>> -Changing pushing strategies from the widely-accepted status quo (i.e.
>> multi-headed approach)
>> -Creating multiple integration branches that allow for simultaneous
>> pushing (i.e. inbound-b2g, inbound-gfx, etc)
>>
>> My proposal:
>> -Create an inbound2 branch identically configured to mozilla-inbound.
>> -Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
>> -In the event of a long tree closure, the last green changeset from
>> m-i will be merged to inbound2 and inbound2 will be opened for checkins.
>> ---It will be a judgment call for sheriffs as to how long of a closure
>> will suffice for opening inbound2.
>> -When the bustage on m-i is resolved and it is again passing tests,
>> inbound2 will be closed again.
>> -When all pending jobs on inbound2 are completed, it will be merged to
>> m-i.
>> -Except under extraordinary circumstances, all merges to
>> mozilla-central will continue to come from m-i ONLY.
>> -If bustage lands on inbound2, then both trees will be closed until
>> resolved. Tough. We apparently can't always have nice things.
>
> If you consider that every repository is essentially a clone of
> mozilla-central, what we have *now* is effectively equivalent to a
> single repository with multiple heads/branches/bookmarks. However, the
> different heads/branches/bookmarks differ in:
>
> * How much attention sheriffs give them.
> * The automation configuration (coalescing, priority, etc).
> * Policies around landing.
> * How developers use it.
>
> These are all knobs in our control.
>
> When we say "create an inbound2," we're essentially establishing a new
> head/branch/bookmark that behaves much like "inbound1" with a slightly
> different landing policy. If that's what we want to do, sure. I think
> it's better than a single, frequently closed inbound.
>
> Anyway, no matter how much I think about this proposal, I keep coming
> back to the question of "why don't we use project branches more?"
> Instead of everyone and her brother landing on inbound, what if more
> landings were performed on {fx-team, services-central,  twig>, etc}? I /think/ the worst that can happen is merge conflicts and
> bit rot. And, we can abate that through intelligent grouping of related
> commits in the same repository, frequent merges, and maybe even better
> communication (perhaps even automatically with tools that alert
> developers to potential conflicts - wouldn't it be cool if you updated a
> patch and Mercurial was like "o hai - Ehsan recently pushed a Try push
> that conflicts with your change: you two should talk.").
>
> As a counter-proposal, I propose that we start shifting landings to
> project branches/twigs. We should aim for a small and well-defined set
> of repositories (say 3 to 5) sharing similar automation configuration
> and sheriff love. By keeping the number small, it's easy to figure out
> where something should land and it's not too much of an extra burden on
> sheriffs. We can still keep inbound, but it should only be reserved for
> major, cross-repository landings with multi-module impact (e.g. build
> system changes), merges from the main landing repositories (unless we
> merge straight to central), and possibly as a backup in case one of the
> landing repositories is closed.
>
> We can test this today with very little effort: we figure out how to
> bucket commits, re-purpose existing repositories/twigs, and see what
> happens. If it works: great - we've just validated that distributed
> version control works for Firefox development (as opposed to the
> CVS/Subversion workflow we're currently using with inbound). If not, we
> can try variations and/or the inbound2 idea.
>
> Is there sanity to this proposal or am I still crazy?
> ___
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-29 Thread Gregory Szorc
On 4/26/2013 12:17 PM, Ryan VanderMeulen wrote:
> Specific goals:
> -Offer an alternative branch for developers to push to during extended
> inbound closures
> -Avoid patch pile-up after inbound re-opens from a long closure
>
> Specific non-goals:
> -Reducing infrastructure load
> -Changing pushing strategies from the widely-accepted status quo (i.e.
> multi-headed approach)
> -Creating multiple integration branches that allow for simultaneous
> pushing (i.e. inbound-b2g, inbound-gfx, etc)
>
> My proposal:
> -Create an inbound2 branch identically configured to mozilla-inbound.
> -Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
> -In the event of a long tree closure, the last green changeset from
> m-i will be merged to inbound2 and inbound2 will be opened for checkins.
> ---It will be a judgment call for sheriffs as to how long of a closure
> will suffice for opening inbound2.
> -When the bustage on m-i is resolved and it is again passing tests,
> inbound2 will be closed again.
> -When all pending jobs on inbound2 are completed, it will be merged to
> m-i.
> -Except under extraordinary circumstances, all merges to
> mozilla-central will continue to come from m-i ONLY.
> -If bustage lands on inbound2, then both trees will be closed until
> resolved. Tough. We apparently can't always have nice things.

If you consider that every repository is essentially a clone of
mozilla-central, what we have *now* is effectively equivalent to a
single repository with multiple heads/branches/bookmarks. However, the
different heads/branches/bookmarks differ in:

* How much attention sheriffs give them.
* The automation configuration (coalescing, priority, etc).
* Policies around landing.
* How developers use it.

These are all knobs in our control.

When we say "create an inbound2," we're essentially establishing a new
head/branch/bookmark that behaves much like "inbound1" with a slightly
different landing policy. If that's what we want to do, sure. I think
it's better than a single, frequently closed inbound.

Anyway, no matter how much I think about this proposal, I keep coming
back to the question of "why don't we use project branches more?"
Instead of everyone and her brother landing on inbound, what if more
landings were performed on {fx-team, services-central, , etc}? I /think/ the worst that can happen is merge conflicts and
bit rot. And, we can abate that through intelligent grouping of related
commits in the same repository, frequent merges, and maybe even better
communication (perhaps even automatically with tools that alert
developers to potential conflicts - wouldn't it be cool if you updated a
patch and Mercurial was like "o hai - Ehsan recently pushed a Try push
that conflicts with your change: you two should talk.").

As a counter-proposal, I propose that we start shifting landings to
project branches/twigs. We should aim for a small and well-defined set
of repositories (say 3 to 5) sharing similar automation configuration
and sheriff love. By keeping the number small, it's easy to figure out
where something should land and it's not too much of an extra burden on
sheriffs. We can still keep inbound, but it should only be reserved for
major, cross-repository landings with multi-module impact (e.g. build
system changes), merges from the main landing repositories (unless we
merge straight to central), and possibly as a backup in case one of the
landing repositories is closed.

We can test this today with very little effort: we figure out how to
bucket commits, re-purpose existing repositories/twigs, and see what
happens. If it works: great - we've just validated that distributed
version control works for Firefox development (as opposed to the
CVS/Subversion workflow we're currently using with inbound). If not, we
can try variations and/or the inbound2 idea.

Is there sanity to this proposal or am I still crazy?
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-29 Thread Ehsan Akhgari
Multiple inbounds are not a great idea for smarter usage of our infra 
capacity or for load balancing, but this proposal doesn't attempt to 
address the former and avoids the latter by making the availability of 
the two inbounds mutually exclusive, so, it looks good.


I also doubt that it's going to have a lot of bad impact on the infra 
load because of the mutual exclusion.  Hopefully we'll monitor the infra 
load after switching to this model to keep an eye on how we're doing there.


Cheers,
Ehsan

On 2013-04-26 3:17 PM, Ryan VanderMeulen wrote:

As has been discussed at length in the various infrastructure meetings,
one common point of frustration for developers is frequent tree closures
due to bustage on inbound. While there are other issues and ideas for
how to improve the inbound bustage situation, one problem I'm seeing is
that multiple different issues with different solutions are being lumped
together into one discussion, which makes it hard to gain traction on
getting anything done. For that reason, I would like to specifically
separate out the specific issue of inbound closures negatively affecting
developer productivity and offer a more fleshed-out solution that can be
implemented now independent of any other ideas on the table.

Specific goals:
-Offer an alternative branch for developers to push to during extended
inbound closures
-Avoid patch pile-up after inbound re-opens from a long closure

Specific non-goals:
-Reducing infrastructure load
-Changing pushing strategies from the widely-accepted status quo (i.e.
multi-headed approach)
-Creating multiple integration branches that allow for simultaneous
pushing (i.e. inbound-b2g, inbound-gfx, etc)

My proposal:
-Create an inbound2 branch identically configured to mozilla-inbound.
-Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
-In the event of a long tree closure, the last green changeset from m-i
will be merged to inbound2 and inbound2 will be opened for checkins.
---It will be a judgment call for sheriffs as to how long of a closure
will suffice for opening inbound2.
-When the bustage on m-i is resolved and it is again passing tests,
inbound2 will be closed again.
-When all pending jobs on inbound2 are completed, it will be merged to m-i.
-Except under extraordinary circumstances, all merges to mozilla-central
will continue to come from m-i ONLY.
-If bustage lands on inbound2, then both trees will be closed until
resolved. Tough. We apparently can't always have nice things.

As stated above, I believe that this will solve one of the biggest
painpoints of long tree closures without adding tons of extra complexity
to what we're already doing and what developers are used to. The affect
on infrastructure load should be close to neutral since at any given
time, patches will only be getting checked into one branch. This
proposal also has the advantage of being easy to implement since it's
simply a clone of an existing repo, with a little extra sheriff
overhead. It also helps to mitigate the pile-up of pushes we tend to see
after a long closure which increase the likelihood of another long
closure in the event of any bustage due to a high level of coalescing.

To be clear, this proposal is NOT intended to solve all of the various
problems that have been raised with respect to infrastructure load, good
coding practices, bustage minimization, good Try usage, etc. This is
only looking to reduce the impact such issues have on developer workflow
and make sheriffing easier after the tree reopens.

Feedback?
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-29 Thread Benjamin Smedberg

On 4/29/2013 9:32 AM, Boris Zbarsky wrote:

On 4/26/13 6:26 PM, Nicholas Nethercote wrote:

If I have a patch ready to land when inbound closes, what would be the
sequence of steps that I need to do to land it on inbound2?


The following steps assume that the default and default-push for your 
repo are both appropriate versions of inbound and that "i2" and 
"i2-push" are the appropriate versions of inbound2 (you can create 
such aliases in your .hgrc).  They also assume that since inbound just 
closed there is bustage on inbound that is not going to be present on 
inbound2 and that you have already pulled this bustage into your tree.


1)  Make sure your patch-to-land is tracked by mq
2)  hg qpop -a
3)  hg strip "roots(outgoing('i2'))"
4)  hg pull -u i2
5)  hg qpush your patches
6)  hg qfin -a && hg push i2-push
The strip really isn't necessary, as long as you're ok with your tree 
having multiple heads for a bit.


1) Make sure your patches are tracked by mq
2) hg qpop -a
3) hg pull inbound2
4) hg up -c tip # tip is what you just pulled from inbound2. The update 
crosses branches, but -c says that's ok

5) hg qpush # your patches
6) hg qfin -a && hg push -r. inbound2 # note -r. is necessary here so 
you're only pushing your inbound2 head, not your inbound head


I use a setup like this to push to the release branches, keeping all of 
aurora/beta/release as multiple heads of one tree.


--BDS

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-29 Thread Boris Zbarsky

On 4/26/13 6:26 PM, Nicholas Nethercote wrote:

If I have a patch ready to land when inbound closes, what would be the
sequence of steps that I need to do to land it on inbound2?


The following steps assume that the default and default-push for your 
repo are both appropriate versions of inbound and that "i2" and 
"i2-push" are the appropriate versions of inbound2 (you can create such 
aliases in your .hgrc).  They also assume that since inbound just closed 
there is bustage on inbound that is not going to be present on inbound2 
and that you have already pulled this bustage into your tree.


1)  Make sure your patch-to-land is tracked by mq
2)  hg qpop -a
3)  hg strip "roots(outgoing('i2'))"
4)  hg pull -u i2
5)  hg qpush your patches
6)  hg qfin -a && hg push i2-push

Step 3 is slightly annoying because you have to quote the parens from 
the shell


In any case, the upshot of the above steps is that after step 4 your 
tree is effectively a clone of inbound2, and then you just push to it 
normally.


If your patches are not tracked by mq and you don't want them to be thus 
tracked then things are more complicated: as far as I can tell you want 
to pull into the same tree from inbound2, transplant your patch on top 
of the tip of inbound2, strip out the bits of inbound that shouldn't be 
landing, then push.


-Boris
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-27 Thread Justin Lebar
> 3/ Being a git guy, I prefer having a try-like server where you don't get
> push contention or closed tree, because we are creating a new head
> every-time, and let the sheriffs cherry-pick the good changes which are not
> source of conflicts.  And ask developers to rebase their changes otherwise.

I prefer this too, and I've proposed trying this.

But kats convinced me that this isn't a decent option right now,
because this would disable a lot of coalescing, and we don't have the
capacity to handle this.  It's possible that we'd have enough
capacity, but end up shifting load to the time when the sun is over
the Pacific ocean, but even that isn't great, since it significantly
increases the turn-around time for landing patches.

Anyway, RyanVM wanted us to limit discussion here to a yes/no vote on
his proposal, and I think we should respect that.
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread Nicolas B. Pierron

On 04/26/2013 06:11 PM, Matt Brubeck wrote:

On 4/26/2013 4:14 PM, Justin Lebar wrote:

If I have a patch ready to land when inbound closes, what would be the
sequence of steps that I need to do to land it on inbound2?  Would I
need to have an up-to-date inbound2 clone and transplant the patch
across?


I think mbrubeck or someone knows how to maintain multiple hg branches
in one repo, but I've never figured that out...


Yes, having been a git user for years before I started with Mercurial, I
simply treat Mercurial as a slightly crippled version of git.  :)

[…]

I'm actually astounded that Mercurial doesn't have better support for this
built in; I see Mozilla developers doing crazy time-consuming things all the
time because of Mercurial's poor support for working with remote
repositories.  :(


Such as maintaining a bi-directional hg-git mirror of multiple branches to 
avoid having to deal with Mercurial at all?


When I discovered the poor resolution of conflicts offered my Mercurial 
queues, I switched back to git.  I have been pushing my patches to try & 
inbound & aurora and beta with git since December 2011.


Back on the original subject:

1/ Having to deal with yet another Inbound would be a pain for all 
automation testing such as Are We Fast Yet machines as we are making our own 
builds out of inbound.  This imply that our automation will have to switch 
repositories to follow the latest patches such as we can keep a minimal 
regression range.  In addition, AWFY is often ahead of tbpl in terms of 
build, which means that switching from inbound1 to inbound2 will mean going 
backward in time, as patches would be back-ported to inbound2 as soon as 
they are ok on inbound1.  This is definitely weird.


2/ What happens if A & B changes are exclusive?  A is pushed to inbound1, 
inbound1 is closed for another reason.  B is pushed to inbound2.  A finish 
building is cherry-picked from inbound1 and put on top of inbound2. 
inbound2 fails because A does not build on top of B.  Conclusion: both 
branches are closed, and A have to be backed out even if it came first.


3/ Being a git guy, I prefer having a try-like server where you don't get 
push contention or closed tree, because we are creating a new head 
every-time, and let the sheriffs cherry-pick the good changes which are not 
source of conflicts.  And ask developers to rebase their changes otherwise.


--
Nicolas B. Pierron
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread Matt Brubeck

On 4/26/2013 4:14 PM, Justin Lebar wrote:

If I have a patch ready to land when inbound closes, what would be the
sequence of steps that I need to do to land it on inbound2?  Would I
need to have an up-to-date inbound2 clone and transplant the patch
across?


I think mbrubeck or someone knows how to maintain multiple hg branches
in one repo, but I've never figured that out...


Yes, having been a git user for years before I started with Mercurial, I 
simply treat Mercurial as a slightly crippled version of git.  :)


hg clone https://hg.mozilla.org/mozilla-central/
cd mozilla-central
# hack on some stuff
# do some builds and tests
hg new my-patch

# time to push to inbound:
hg qpop
hg pull https://hg.mozilla.org/integration/mozilla-inbound/
hg up -c
hg qpush && hg qfin my-patch
hg push -r tip https://hg.mozilla.org/integration/mozilla-inbound/

# Now, let's backport something to Aurora!
hg pull https://hg.mozilla.org/releases/mozilla-aurora/
hg export -r a3c55bdbe37d | hg qimport -P -n patch-to-uplift
hg push -r tip https://hg.mozilla.org/releases/mozilla-aurora/

# After a good night's sleep, back to work!
# hg pull -u won't work across branches, so:
hg pull https://hg.mozilla.org/mozilla-central/
hg up -c
# do a build
# start hacking again!

This sort of workflow is of course much more natural in git, which makes 
it easy to track the state of the remote repo(s).  The bookmark workflow 
that gps added to MDN basically emulates part of the functionality of 
git remote tracking branches.


I'm actually astounded that Mercurial doesn't have better support for 
this built in; I see Mozilla developers doing crazy time-consuming 
things all the time because of Mercurial's poor support for working with 
remote repositories.  :(

___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread Gregory Szorc
On 4/26/2013 4:14 PM, Justin Lebar wrote:
>> If I have a patch ready to land when inbound closes, what would be the
>> sequence of steps that I need to do to land it on inbound2?  Would I
>> need to have an up-to-date inbound2 clone and transplant the patch
>> across?
> Yes, I think so.
>
> I think mbrubeck or someone knows how to maintain multiple hg branches
> in one repo, but I've never figured that out...

I just added a section to
https://developer.mozilla.org/en-US/docs/Developer_Guide/Source_Code/Mercurial
detailing how to use bookmarks to produce a unified Mercurial repository.

I just recently switched my workflow to this model. Honestly, I'm torn.
I really like having everything in one central repository. But, the
workflow is really awkward. I have to remember which bookmark is active.
And when pushing you have to limit the push to just the bookmark you
want pushed otherwise Mercurial will attempt to push everything (and the
push hooks should reject it because it would result in new heads).
Contrast this with Git, where you can control exactly what refs gets
pushed to different remotes. AFAICT, there is no built-in way to do this
with Mercurial. I guess you can always define aliases or write your own
extension.

Perhaps if we defined bookmarks on our repositories that tracked the
default branch head things would be easier?

I encourage people to experiment with this workflow. But, be warned it
may be a bit weird.
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread Justin Lebar
> If I have a patch ready to land when inbound closes, what would be the
> sequence of steps that I need to do to land it on inbound2?  Would I
> need to have an up-to-date inbound2 clone and transplant the patch
> across?

Yes, I think so.

I think mbrubeck or someone knows how to maintain multiple hg branches
in one repo, but I've never figured that out...
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread John O'Duinn
hi RyanVM;

I really like this proposal because it gives Mozilla a way for
developers to continue doing checkins even during a prolonged
mozilla-inbound closure. The experiment with birch as "b2g-inbound" has
been really successful so far, which is good.

To easily experiment to see if the proposal helps, I have reserved
"cypress" and filed bug#866314 to setup cypress running all the same
builds/tests as inbound. Once cypress is ready, lets use cypress as
"inbound2"... and try this proposal to see how it goes.

Unless anyone has any concerns/objections, lets try have sheriffs use
cypress-as-mozilla-inbound2 when we next hit a prolonged mozilla-inbound
closure.


(and yes, if we find this experiment helps, we can setup branches with
real names instead of using birch, cypress!)

tc
John.

On 4/26/13 12:17 PM, Ryan VanderMeulen wrote:
> As has been discussed at length in the various infrastructure meetings,
> one common point of frustration for developers is frequent tree closures
> due to bustage on inbound. While there are other issues and ideas for
> how to improve the inbound bustage situation, one problem I'm seeing is
> that multiple different issues with different solutions are being lumped
> together into one discussion, which makes it hard to gain traction on
> getting anything done. For that reason, I would like to specifically
> separate out the specific issue of inbound closures negatively affecting
> developer productivity and offer a more fleshed-out solution that can be
> implemented now independent of any other ideas on the table.
> 
> Specific goals:
> -Offer an alternative branch for developers to push to during extended
> inbound closures
> -Avoid patch pile-up after inbound re-opens from a long closure
> 
> Specific non-goals:
> -Reducing infrastructure load
> -Changing pushing strategies from the widely-accepted status quo (i.e.
> multi-headed approach)
> -Creating multiple integration branches that allow for simultaneous
> pushing (i.e. inbound-b2g, inbound-gfx, etc)
> 
> My proposal:
> -Create an inbound2 branch identically configured to mozilla-inbound.
> -Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
> -In the event of a long tree closure, the last green changeset from m-i
> will be merged to inbound2 and inbound2 will be opened for checkins.
> ---It will be a judgment call for sheriffs as to how long of a closure
> will suffice for opening inbound2.
> -When the bustage on m-i is resolved and it is again passing tests,
> inbound2 will be closed again.
> -When all pending jobs on inbound2 are completed, it will be merged to m-i.
> -Except under extraordinary circumstances, all merges to mozilla-central
> will continue to come from m-i ONLY.
> -If bustage lands on inbound2, then both trees will be closed until
> resolved. Tough. We apparently can't always have nice things.


> 
> As stated above, I believe that this will solve one of the biggest
> painpoints of long tree closures without adding tons of extra complexity
> to what we're already doing and what developers are used to. The affect
> on infrastructure load should be close to neutral since at any given
> time, patches will only be getting checked into one branch. This
> proposal also has the advantage of being easy to implement since it's
> simply a clone of an existing repo, with a little extra sheriff
> overhead. It also helps to mitigate the pile-up of pushes we tend to see
> after a long closure which increase the likelihood of another long
> closure in the event of any bustage due to a high level of coalescing.
> 
> To be clear, this proposal is NOT intended to solve all of the various
> problems that have been raised with respect to infrastructure load, good
> coding practices, bustage minimization, good Try usage, etc. This is
> only looking to reduce the impact such issues have on developer workflow
> and make sheriffing easier after the tree reopens.
> 
> Feedback?
> ___
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform



signature.asc
Description: OpenPGP digital signature
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread Nicholas Nethercote
On Sat, Apr 27, 2013 at 5:17 AM, Ryan VanderMeulen  wrote:
>
> -In the event of a long tree closure, the last green changeset from m-i will
> be merged to inbound2 and inbound2 will be opened for checkins.

If I have a patch ready to land when inbound closes, what would be the
sequence of steps that I need to do to land it on inbound2?  Would I
need to have an up-to-date inbound2 clone and transplant the patch
across?  Or is it possible to push from an inbound clone?

Nick
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread Gavin Sharp
On Fri, Apr 26, 2013 at 2:16 PM, Kartikaya Gupta  wrote:
> Lately I've run into this a few times, where I see regressions on
> areweslimyet.com and dig into it, only to find the regression happened on a
> "merge from m-c" changeset. Since the mobile AWSY only runs on m-i (on the
> theory that I get more granular data that way) this then means I have to
> manually bisect builds from other trees.

Can't you just use hg bisect --extend for most of these cases?

Gavin
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread Kartikaya Gupta
My only concern with this is that it increases the difficulty of 
bisecting regressions.


Lately I've run into this a few times, where I see regressions on 
areweslimyet.com and dig into it, only to find the regression happened 
on a "merge from m-c" changeset. Since the mobile AWSY only runs on m-i 
(on the theory that I get more granular data that way) this then means I 
have to manually bisect builds from other trees. Having things coming in 
from m-i2 would just aggravate the problem.


It may be that this problem is unique to AWSY since it only runs on m-i, 
whereas talos runs on both m-c and m-i (and presumably will run on m-i2 
as well). If it only affects me then whatever, go for it. If it is a 
pain for many other people then maybe we can try to come up with some 
variation. For example, instead of merging m-i2 back to m-i, we would 
close the busted head on m-i and just bring m-i2 back as the active head 
on m-i.


kats


On 13-04-26 15:17 , Ryan VanderMeulen wrote:

As has been discussed at length in the various infrastructure meetings,
one common point of frustration for developers is frequent tree closures
due to bustage on inbound. While there are other issues and ideas for
how to improve the inbound bustage situation, one problem I'm seeing is
that multiple different issues with different solutions are being lumped
together into one discussion, which makes it hard to gain traction on
getting anything done. For that reason, I would like to specifically
separate out the specific issue of inbound closures negatively affecting
developer productivity and offer a more fleshed-out solution that can be
implemented now independent of any other ideas on the table.

Specific goals:
-Offer an alternative branch for developers to push to during extended
inbound closures
-Avoid patch pile-up after inbound re-opens from a long closure

Specific non-goals:
-Reducing infrastructure load
-Changing pushing strategies from the widely-accepted status quo (i.e.
multi-headed approach)
-Creating multiple integration branches that allow for simultaneous
pushing (i.e. inbound-b2g, inbound-gfx, etc)

My proposal:
-Create an inbound2 branch identically configured to mozilla-inbound.
-Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
-In the event of a long tree closure, the last green changeset from m-i
will be merged to inbound2 and inbound2 will be opened for checkins.
---It will be a judgment call for sheriffs as to how long of a closure
will suffice for opening inbound2.
-When the bustage on m-i is resolved and it is again passing tests,
inbound2 will be closed again.
-When all pending jobs on inbound2 are completed, it will be merged to m-i.
-Except under extraordinary circumstances, all merges to mozilla-central
will continue to come from m-i ONLY.
-If bustage lands on inbound2, then both trees will be closed until
resolved. Tough. We apparently can't always have nice things.

As stated above, I believe that this will solve one of the biggest
painpoints of long tree closures without adding tons of extra complexity
to what we're already doing and what developers are used to. The affect
on infrastructure load should be close to neutral since at any given
time, patches will only be getting checked into one branch. This
proposal also has the advantage of being easy to implement since it's
simply a clone of an existing repo, with a little extra sheriff
overhead. It also helps to mitigate the pile-up of pushes we tend to see
after a long closure which increase the likelihood of another long
closure in the event of any bustage due to a high level of coalescing.

To be clear, this proposal is NOT intended to solve all of the various
problems that have been raised with respect to infrastructure load, good
coding practices, bustage minimization, good Try usage, etc. This is
only looking to reduce the impact such issues have on developer workflow
and make sheriffing easier after the tree reopens.

Feedback?


___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform


Re: Proposal for an inbound2 branch

2013-04-26 Thread Justin Lebar
I like that inbound2 would be open only when inbound is closed.  That
way you don't have to make a decision wrt which tree to push to.

sgtm.

On Fri, Apr 26, 2013 at 3:17 PM, Ryan VanderMeulen  wrote:
> As has been discussed at length in the various infrastructure meetings, one
> common point of frustration for developers is frequent tree closures due to
> bustage on inbound. While there are other issues and ideas for how to
> improve the inbound bustage situation, one problem I'm seeing is that
> multiple different issues with different solutions are being lumped together
> into one discussion, which makes it hard to gain traction on getting
> anything done. For that reason, I would like to specifically separate out
> the specific issue of inbound closures negatively affecting developer
> productivity and offer a more fleshed-out solution that can be implemented
> now independent of any other ideas on the table.
>
> Specific goals:
> -Offer an alternative branch for developers to push to during extended
> inbound closures
> -Avoid patch pile-up after inbound re-opens from a long closure
>
> Specific non-goals:
> -Reducing infrastructure load
> -Changing pushing strategies from the widely-accepted status quo (i.e.
> multi-headed approach)
> -Creating multiple integration branches that allow for simultaneous pushing
> (i.e. inbound-b2g, inbound-gfx, etc)
>
> My proposal:
> -Create an inbound2 branch identically configured to mozilla-inbound.
> -Under normal circumstances (i.e. m-i open), inbound2 will be CLOSED.
> -In the event of a long tree closure, the last green changeset from m-i will
> be merged to inbound2 and inbound2 will be opened for checkins.
> ---It will be a judgment call for sheriffs as to how long of a closure will
> suffice for opening inbound2.
> -When the bustage on m-i is resolved and it is again passing tests, inbound2
> will be closed again.
> -When all pending jobs on inbound2 are completed, it will be merged to m-i.
> -Except under extraordinary circumstances, all merges to mozilla-central
> will continue to come from m-i ONLY.
> -If bustage lands on inbound2, then both trees will be closed until
> resolved. Tough. We apparently can't always have nice things.
>
> As stated above, I believe that this will solve one of the biggest
> painpoints of long tree closures without adding tons of extra complexity to
> what we're already doing and what developers are used to. The affect on
> infrastructure load should be close to neutral since at any given time,
> patches will only be getting checked into one branch. This proposal also has
> the advantage of being easy to implement since it's simply a clone of an
> existing repo, with a little extra sheriff overhead. It also helps to
> mitigate the pile-up of pushes we tend to see after a long closure which
> increase the likelihood of another long closure in the event of any bustage
> due to a high level of coalescing.
>
> To be clear, this proposal is NOT intended to solve all of the various
> problems that have been raised with respect to infrastructure load, good
> coding practices, bustage minimization, good Try usage, etc. This is only
> looking to reduce the impact such issues have on developer workflow and make
> sheriffing easier after the tree reopens.
>
> Feedback?
> ___
> dev-platform mailing list
> dev-platform@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-platform
___
dev-platform mailing list
dev-platform@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-platform