Re: Our cumbersome mailing list workflow

2014-12-03 Thread Junio C Hamano
Jonathan Nieder jrnie...@gmail.com writes:

 I don't think there's any reason that newcomers should need more
 iterations than regulars to finish a patch.  Regulars are actually
 held to a higher standard, so they are likely to need more iterations.

 A common mistake for newcomers, that I haven't learned yet how to warn
 properly against, is to keep re-sending minor iterations on a patch
 too quickly.  Some ways to avoid that:

  * feel free to respond to review comments with something like how
about this? and a copy/pasted block of code that just addresses
that one comment.  That way, you can clear up ambiguity and avoid
the work of applying that change to the entire patch if it ends
up seeming like a bad idea.  This also avoids having to re-send a
larger patch or series multiple times to clear up a small ambiguity
from a review.

This can go both ways.  A trivial improvement can be suggested that
way by the reviewer.

  * be proactive.  Look for other examples of the same issue that a
reviewer pointed out once so they don't have to find it again
elsewhere in the next iteration
  * feel free to get more review out-of-band, too.  If you're still
playing with ideas and want someone to take a quick glance before
the patches are in reviewable form, you can do that and say so
(e.g., with 'RFC/' before 'PATCH' in the subject line).

Overall, good suggestions.

Thanks.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-12-03 Thread Torsten Bögershausen
On 2014-12-03 03.20, Stefan Beller wrote:
 On Sun, Nov 30, 2014 at 6:46 PM, Junio C Hamano gits...@pobox.com wrote:
 Michael Haggerty mhag...@alum.mit.edu writes:

 It seems like a few desirable features are being talked about here, and
 summarizing the discussion as centralized vs decentralized is too
 simplistic. What is really important?

 1. Convenient and efficient, including for newcomers
 2. Usable while offline
 3. Usable in pure-text mode
 4. Decentralized

 Something else?
 So when I started overtaking the ref log series by Ronnie,
 Ronnies main concern was missing reviewers time. So my idea was to
 make it as accessible as possible, so the reviewing party can use their
 time best. However here are a few points, I want to mention:

  * Having send emails as well as uploaded it to Gerrit, I either needed
a ChangeId (Gerrit strictly requires them to track inter-patch
 diffs), and the
mailing list here strictly avoids them, so I was told.
Ok, that's my problem as I wasn't following the actual procedure of the
Git development model (mailing list only).
  * That's why I stopped uploads to Gerrit, so I do not need to care about the
ChangeIds any more. I am not sure if that improved the quality of my 
 patches
though.
  * I seem to not have found the right workflow with the mailing list yet, as I
personally find copying around the inter-patch changelog very inconvenient.
Most of the regulars here just need fewer iterations, so I can understand,
that you find it less annoying. Hopefully I'll also get used to the
 nit-picky things
and will require less review iterations in the future.
How are non-regulars/newcomers, who supposingly need more iterations on
a patch,  supposed to handle the inter patch change log conveniently?
I tried to keep the inter patch changelog be part of the commit message and
then just before sending the email, I'd move it the non-permanent section 
 of
the email.
  * Editing patches as text files is hard/annoying.
Not sure if I understand. Editing text files isn't that hard, we do it all the 
time.
  I have setup git send-email,
and that works awesome, as I'd only need one command to send off a series.
Having a step in between makes it more error-prone. So I do git 
 format-patch
and then inject the inter patch change log, check to remove ChangeId and 
 then
use git send-email.
How do you inject the inter patch change log ? Is that manually, or is it a 
script ?
  And at that final manual step I realized I am
 far from being
perfect, so sometimes patches arrive on the mailing list, which are
 sub quality
in the sense, that there are leftovers, i.e. a ChangeId
  * A possible feature, which just comes to my mind:
Would it make sense for format-patch to not just show the diff
 stats, but also
include, on which branch it applies? In git.git this is usually the
 origin/master
branch, but dealing with patch series, building on top of each other that 
 may
be a good feature to have.


Thanks for the description (and everybody for the discussion)
In the hope that it may help, I can try to describe my work flow:
- Run a script to send the patch (this is a real example)
#

SRCCOMMIT=119efe90bffee688a3c37d4358667
DSTCOMMIT=$(git log --oneline -n1 | awk '{print $1}')
VERSION=-v 1

PATCHFILE=$( echo $0 | sed -e 's/\.sh$/.patch/')
GIT_TEST_LONG=t
export GIT_TEST_LONG
git am --abort || :
(  test -s $PATCHFILE || 
git format-patch $VERSION -s --to=git@vger.kernel.org  
--cc=tbo...@web.de  --cc=mhag...@alum.mit.edu --stdout $SRCCOMMIT..$DSTCOMMIT 
$PATCHFILE ) 
git checkout $SRCCOMMIT 
git am $PATCHFILE 
cd t  cd ..  make 
(cd t  ./t0001*.sh) 
git imap-send $PATCHFILE

#
The script formats a patch file (if that does not exist),
applies the patch on the source commit,
runs make and then the test cases to verify that the patch works.
(For bigger patches more tests or the whole test suite should be run,
for this very isolated work it OK to run a singe test)

Once everything is OK, the patch is stored both on disc and in the Drafts 
folder of the email program.
(In your case you can use grep to remove the ChangedId or to check that it had 
been removed)

Now it is time to tweak the patch file with an editor:
Add what has been changed  since V1
Save the patch file, run the script again to verify that the patch still 
applies and works and
put it into the Drafts folder of the mail program.

(That's why I abort the git imap-send in the first round
and press ^C when the password is asked)

Start the favorite email program
(Kmail works, or Thunderbird or 
 every other program that can send email in plain text)

Have a final look at the patch in the email prgram
(remove the V1 from the header, change PATCH into PATCH/RFC).

Let the spell checker look at it, re-read once more.
If everything is OK, press the send button.

If I send out a V2 version, make a copy of 

Re: Our cumbersome mailing list workflow

2014-12-03 Thread Philip Oakley

From: Michael Haggerty mhag...@alum.mit.edu
Sent: Tuesday, November 25, 2014 12:28 AM

On 11/21/2014 07:00 PM, Junio C Hamano wrote:

Michael Haggerty mhag...@alum.mit.edu writes:

I don't think that those iterations changed anything substantial 
that
overlaps with my version, but TBH it's such a pain in the ass 
working

with patches in email that I don't think I'll go to the effort of
checking for sure unless somebody shows interest in actually using 
my

version.

Sorry for being grumpy today :-(

[..]

Let me list the aspects of our mailing list workflow that I find
cumbersome as a contributor and reviewer:

* Submitting patches to the mailing list is an ordeal of configuring
format-patch and send-email and getting everything just right, using
instructions that depend on the local environment. We saw that hardly
any GSoC applicants were able to get it right on their first attempt.
Submitting a patch series should be as simple as git push.

* Once patches are submitted, there is no assurance that you (Junio)
will apply them to your tree at the same point that the submitter
developed and tested them.

* The branch name that you choose for a patch series is not easily
derivable from the patches as they appeared in the mailing list. 
Trying
to figure out whether/where the patches exist in your tree is a 
largely
manual task. The reverse mapping, from in-tree commit to the email 
where

it was proposed, is even more difficult to infer.

* Your tree has no indication of which version of a patch series (v1,
v2, etc) is currently applied.

The previous three points combine to make it awkward to get patches 
into
my local repository to review or test. There are two alternatives, 
both

cumbersome and imprecise:

 * I do git fetch gitster, then try to figure out whether the branch
I'm interested in is present, what its name is, and whether the 
version

in your tree is the latest version, then git checkout xy/foobar.



I had a thought about the issue of version labeling and of keeping the 
old patch series hanging about during development that I felt was worth 
recording.


My thought was that while the cover letter and series version number are 
currently stripped out from the start of the series, they could be added 
back as a supplemental commit at the end of the series (an --allow-empty 
commit). This could contain all of the patch subject lines and their 
post '---' notes as appropriate.


Thus the series branch would appear to have an extra commit (compared to 
the current process) after the original tip's possible merge into say 
pu.


When subsequent series are sent to the list, the new supplemental commit 
would be a 'merge', with its second parent being the old series, thus 
the old series is not lost until the branch is deleted, and the existing 
merge pattern is retained.


Clearly if this would need some additional coding as it's not suitable 
as a manual process, but it could be just as automatic as the current 
process while providing that little bit of additional visibility.


Below, I've tried to set out how the commit graph might look (oldest to 
the left). Hopefully my MUA won't ruin it.
The first patch series branches at A, and is merged at D, with the 
supplemental commit labeled with v1z.


When the new series arrives, and pu is rewound, we have the new series 
applied from G (which in reality may not be linked directly from A), and 
merged back at K. However the new v2z supplemental commit is now the 
po/patches

branch head, and is also a merge back to v1z.

patch series 1 (cover letter z)
- A - B - C - D - E - F   - pu
  \/
   v1a-v1b--v1z -po/patches

patch series 2
- A - G - H - I - J - K - pu (note re-wound)
 |\ /(merge D lost)
  \   v2a-v2b-v2c--v2z-po/patches
   \  /
   v1a-v1b--v1z - - -.

The key idea here is to use the existing branching model, but then to 
add the cover letter and other details at the end, rather than the 
beginning as might have been expected from the email transmit sequence.


Philip

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-12-03 Thread Stefan Beller
  Editing text files isn't that hard, we do it all the time.

It is not indeed. But doing it all over again and again is hard and error prone.
I did re-read the man page on git format-patch and found the --notes
option, which I am going to try
to use in my workflow. That way I only need to update the notes
instead of redoing them all the time.
By redoing it I mean copying the changelog from the last time I sent
the patch and adding new entries.

 My thought was that while the cover letter and series version number are 
 currently stripped out from the start of the series, they could be added back 
 as a supplemental commit at the end of the series (an --allow-empty commit). 
 This could contain all of the patch subject lines and their post '---' notes 
 as appropriate.

This sounds interesting. The only changes I can see here are the
referenced message ids, so it would be worthwhile to have the last
patch sent out first and all other patches 1..n-1 referencing the last
empty commit.
If additionally the numbering is corrected, the reader of the mailing
list would not notice any difference to the status quo, just the
sender would have the convenience to be able to track the cover letter
as an empty commit on top of a series.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-12-02 Thread Stefan Beller
On Sun, Nov 30, 2014 at 6:46 PM, Junio C Hamano gits...@pobox.com wrote:
 Michael Haggerty mhag...@alum.mit.edu writes:

 It seems like a few desirable features are being talked about here, and
 summarizing the discussion as centralized vs decentralized is too
 simplistic. What is really important?

 1. Convenient and efficient, including for newcomers
 2. Usable while offline
 3. Usable in pure-text mode
 4. Decentralized

 Something else?


So when I started overtaking the ref log series by Ronnie,
Ronnies main concern was missing reviewers time. So my idea was to
make it as accessible as possible, so the reviewing party can use their
time best. However here are a few points, I want to mention:

 * Having send emails as well as uploaded it to Gerrit, I either needed
   a ChangeId (Gerrit strictly requires them to track inter-patch
diffs), and the
   mailing list here strictly avoids them, so I was told.
   Ok, that's my problem as I wasn't following the actual procedure of the
   Git development model (mailing list only).
 * That's why I stopped uploads to Gerrit, so I do not need to care about the
   ChangeIds any more. I am not sure if that improved the quality of my patches
   though.
 * I seem to not have found the right workflow with the mailing list yet, as I
   personally find copying around the inter-patch changelog very inconvenient.
   Most of the regulars here just need fewer iterations, so I can understand,
   that you find it less annoying. Hopefully I'll also get used to the
nit-picky things
   and will require less review iterations in the future.
   How are non-regulars/newcomers, who supposingly need more iterations on
   a patch,  supposed to handle the inter patch change log conveniently?
   I tried to keep the inter patch changelog be part of the commit message and
   then just before sending the email, I'd move it the non-permanent section of
   the email.
 * Editing patches as text files is hard/annoying. I have setup git send-email,
   and that works awesome, as I'd only need one command to send off a series.
   Having a step in between makes it more error-prone. So I do git format-patch
   and then inject the inter patch change log, check to remove ChangeId and then
   use git send-email. And at that final manual step I realized I am
far from being
   perfect, so sometimes patches arrive on the mailing list, which are
sub quality
   in the sense, that there are leftovers, i.e. a ChangeId
 * A possible feature, which just comes to my mind:
   Would it make sense for format-patch to not just show the diff
stats, but also
   include, on which branch it applies? In git.git this is usually the
origin/master
   branch, but dealing with patch series, building on top of each other that may
   be a good feature to have.


 When I had to view a large-ish series by Ronnie on Gerrit, it was
 fairly painful.  The interaction on an individual patch might be
 more convenient and efficient using a system like Gerrit than via
 e-mailed patch with reply messages, but as a vehicle to review a
 large series and see how the whole thing fits together, I did not
 find pages that made it usable (I am avoiding to say I found it
 unusable, as that impression may be purely from that I couldn't
 find a more suitable pages that showed the same information in more
 usable form, i.e. user inexperience).

So you're liking the email workflow more. How do you do the final
formatting of an email, such as including the inter patch diff?



 Speaking of the whole picture, I am hesitant to see us pushed into
 the here is a central system (or here are federated systems) to
 handle only the patch reviews direction; our changes result after
 discussing unrelated features, wishes, or bugs that happen outside
 of any specific patches with enough frequency, and that is why I
 prefer everything in one place aspect of the development based on
 the mailing list.  That is not to say that the one place has
 forever to be the mailing list, though.  But the tooling around an
 e-mail based workflow (e.g. marking threads as worth revisiting
 for later inspection, saving chosen messages into a mailbox and
 running git am on it) is already something I am used to.  Whatever
 system we might end up migrating to, the convenience it offers has
 to beat the convenience of existing workflow to be worth switching
 to, at least to me as a reviewer/contributor.

I do like the way as well to just mark emails unread when I need
to work on them later.


 As the maintainer, I am not worried too much.  As long as the
 mechanism can (1) reach here is a series that is accepted by
 reviewers whose opinions are trusted efficiently, and (2) allow
 me to queue the result without mistakes, I can go along with
 anything reasonable.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-12-02 Thread Jonathan Nieder
Stefan Beller wrote:

 How are non-regulars/newcomers, who supposingly need more iterations on
 a patch, supposed to handle the inter patch change log conveniently?

I think this is one of the more important issues.

I don't think there's any reason that newcomers should need more
iterations than regulars to finish a patch.  Regulars are actually
held to a higher standard, so they are likely to need more iterations.

A common mistake for newcomers, that I haven't learned yet how to warn
properly against, is to keep re-sending minor iterations on a patch
too quickly.  Some ways to avoid that:

 * feel free to respond to review comments with something like how
   about this? and a copy/pasted block of code that just addresses
   that one comment.  That way, you can clear up ambiguity and avoid
   the work of applying that change to the entire patch if it ends
   up seeming like a bad idea.  This also avoids having to re-send a
   larger patch or series multiple times to clear up a small ambiguity
   from a review.

 * be proactive.  Look for other examples of the same issue that a
   reviewer pointed out once so they don't have to find it again
   elsewhere in the next iteration.  Run the testsuite.  Build with
   the flags from
   https://kernel.googlesource.com/pub/scm/git/git/+/todo/Make#106
   in CFLAGS in config.mak.  Proofread and try to read as though you
   knew nothing about the patch to anticipate what reviewers will
   find.

 * feel free to get more review out-of-band, too.  If you're still
   playing with ideas and want someone to take a quick glance before
   the patches are in reviewable form, you can do that and say so
   (e.g., with 'RFC/' before 'PATCH' in the subject line).

Jonathan
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-11-30 Thread Junio C Hamano
Michael Haggerty mhag...@alum.mit.edu writes:

 It seems like a few desirable features are being talked about here, and
 summarizing the discussion as centralized vs decentralized is too
 simplistic. What is really important?

 1. Convenient and efficient, including for newcomers
 2. Usable while offline
 3. Usable in pure-text mode
 4. Decentralized

 Something else?

As a reviewer / contributor (not speaking as the top maintainer), I
would say that everything in one place, and for that one place
mailbox is preferrable.

Somebody commented on (this instance of | the central) Gerrit, come
look at it is not usable; sending that comment out to those who
work in their MUA, and allowing them to respond via their MUA
probably adding their response as a new comment to Gerrit) would be
usable.

When I had to view a large-ish series by Ronnie on Gerrit, it was
fairly painful.  The interaction on an individual patch might be
more convenient and efficient using a system like Gerrit than via
e-mailed patch with reply messages, but as a vehicle to review a
large series and see how the whole thing fits together, I did not
find pages that made it usable (I am avoiding to say I found it
unusable, as that impression may be purely from that I couldn't
find a more suitable pages that showed the same information in more
usable form, i.e. user inexperience).

Speaking of the whole picture, I am hesitant to see us pushed into
the here is a central system (or here are federated systems) to
handle only the patch reviews direction; our changes result after
discussing unrelated features, wishes, or bugs that happen outside
of any specific patches with enough frequency, and that is why I
prefer everything in one place aspect of the development based on
the mailing list.  That is not to say that the one place has
forever to be the mailing list, though.  But the tooling around an
e-mail based workflow (e.g. marking threads as worth revisiting
for later inspection, saving chosen messages into a mailbox and
running git am on it) is already something I am used to.  Whatever
system we might end up migrating to, the convenience it offers has
to beat the convenience of existing workflow to be worth switching
to, at least to me as a reviewer/contributor.

As the maintainer, I am not worried too much.  As long as the
mechanism can (1) reach here is a series that is accepted by
reviewers whose opinions are trusted efficiently, and (2) allow
me to queue the result without mistakes, I can go along with
anything reasonable.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-11-28 Thread Philip Oakley

From: Matthieu Moy matthieu@grenoble-inp.fr

Torsten Bögershausen tbo...@web.de writes:


On 2014-11-25 01.28, Michael Haggerty wrote:
[]

Let me list the aspects of our mailing list workflow that I find
cumbersome as a contributor and reviewer:

* Submitting patches to the mailing list is an ordeal of configuring
format-patch and send-email and getting everything just right, using
instructions that depend on the local environment.

Typically everything fits into ~/.gitconfig,
which can be carried around on a USB-Stick.


I personnally submit all my Git patches from a machine whose
/usr/sbin/sendmail knows how to send emails, so for me configuration 
is

super simple. But I can imagine the pain of someone working on various
machines with various network configuration and normally using a 
webmail

to send emails. Sharing ~/.gitconfig does not always work because on
machine A you only can use one SMTP server, and on machine B only
another ...


The bit I find awkward for the send-email step is the creation of the 
to and cc lists. I tend to create the command line in a separate 
file so that I can re-use it for V2 etc. and even then I end up with all 
patches going to the full to/cc list.


Michael's original discussion email did feel to summarise the isses [1] 
well.


--
Philip
[1] System Problems are Wicked problems :
http://en.wikipedia.org/wiki/Wicked_problem
www.poppendieck.com/wicked.htm


--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-11-28 Thread Michael Haggerty
On 11/27/2014 06:46 PM, Torsten Bögershausen wrote:
 On 2014-11-25 01.28, Michael Haggerty wrote:
 []
 Let me list the aspects of our mailing list workflow that I find
 cumbersome as a contributor and reviewer:

 * Submitting patches to the mailing list is an ordeal of configuring
 format-patch and send-email and getting everything just right, using
 instructions that depend on the local environment.
 Typically everything fits into ~/.gitconfig,
 which can be carried around on a USB-Stick.
 Is there any details which I miss, or howtows we can improve ?

I used to need one setup at work and a different one at home (because of
how my email was configured), and sometimes had to switch back and forth
as I carried my notebook around.

 [...]
   * I do git fetch gitster, then try to figure out whether the branch
 I'm interested in is present, what its name is, and whether the version
 in your tree is the latest version, then git checkout xy/foobar.
 There are 12 branches from mh/, so it should be possible to find the name,
 und run git log gitster/xy/fix_this_bug or so.
 Even more important, this branch is the single point of truth, because
 this branch may be merged eventually, and nothing else.

I know it's *possible*. The question is whether it could be made easier.

 * Following patch series across iterations is also awkward. To compare
 two versions, I have to first get both patch series into my repo, which
 involves digging through the ML history to find older versions, followed
 by the git am steps. Often submitters are nice enough to put links to
 previous versions of their patch series in their cover letters, but the
 links are to a web-based email archive, from which it is even more
 awkward to grab and apply patches. So in practice I then go back to my
 email client and search my local archive for my copy of the same email
 that was referenced in the archive, and apply the patch from there.
 Finding comments about old versions of a patch series is nearly as much
 work.
 In short:
 We can ask every contributor, if the patch send to the mailing list
 is available on a public Git-repo, and what the branch name is,
 like _V2.. Does this makes sense ?

That would be helpful, but it would put yet *another* requirement on the
submitter (to send patch emails *and* push the branch to some accessible
repository). We regulars could script this pretty easily, but people who
only contribute occasionally or who are trying to get started will be
even more overwhelmed.

 As an alternative, you can save the branches locally, after running
 git-am once, just keep the branch.
 []

Yes, but it is even more unnecessary manual bookkeeping.

 [...]
 But there is another thing:
 Once a patch is send out, I would ask the sender to wait and collect comments
 at least 24 hours before sending a V2.
 We all living in different time zones, so please let the world spin once.

Yes, good idea.

 My feeling is that a patch  5 commits should have
 a waiting time  5 days, otherwise I start reviewing V1, then V2 comes,
 then V3 before I am finished with V1. That is not ideal.

One day per patch might be exaggerated, but I agree that long series
should be iterated more slowly than short ones.

 What does it cost to push your branch to a public repo and
 include that information in the email ?

One has to run an additional command and add some information to the
cover letter, every time a patch series is submitted. If it's scripted
then it's relatively painless. But for a newcomer these will be manual
steps that are easy to forget or to do incorrectly, making it more
likely that the newcomer's first contribution to Git will end in mild
embarrassment rather than success.

Michael

-- 
Michael Haggerty
mhag...@alum.mit.edu

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-11-28 Thread Michael Haggerty
On 11/27/2014 11:53 PM, Eric Wong wrote:
 Torsten Bögershausen tbo...@web.de wrote:
 On 2014-11-25 01.28, Michael Haggerty wrote:
 [...]
 In short:
 We can ask every contributor, if the patch send to the mailing list
 is available on a public Git-repo, and what the branch name is,
 like _V2.. Does this makes sense ?
 
 Not unreasonable.  I hope that won't give folks an excuse to refuse
 to mail patches, though.  Some folks read email offline and can't
 fetch repos until they're online again.

My ideal would be to invert the procedure. Let the patches in a public
Git repository somewhere be the primary artifact, and let the review
process be focused there. Let email be an alternative interface to the
central review site:

* Generate patch emails (similar to the current format) when pull
requests are submitted.

* Generate notification emails when people comment on the patches.

* Allow people to respond to the patch and notification emails via
email. The central review site should associate those comments with the
patches that they apply to, and present them along with other review
comments received via other interfaces.

 I like Gerrit as well.
 But it is less efficient to use, a WEB browser is slower (often), and
 you need to use the mouse...
 
 IMNSHO, development of non-graphical software should never depend on
 graphical software.  Also, I guess there is no way to comment on Gerrit
 via email (without registration/logins?).

The days of the vt52 are over. I'm an old neckbeard myself and have used
*real* vt52s. But these days even my *cellphone* is able to handle the
GitHub website [1]. Rejecting modern technology is not intrinsically
virtuous; it only makes sense if the old technology is really superior.
And it is not enough for it to be superior only for neckbeards; it
should be superior when averaged over all of the people whose
participation we would like to have in the Git project.

And by the way, there are text-only clients for interacting with GitHub [1].

 Lately, I've been trying to think of ways to make collaboration less
 centralized.  Moving to more centralized collaboration tools is a step
 back for decentralized VCS.

If an efficient decentralized collaboration system existed, then I'd
love to give it a chance. But as far as I know, the existing systems are
all embryonic.

Don't forget that even our current system is centralized to some extent.
There is a single mailing list through which all emails pass. There are
a few email archives that we de facto rely on (and it is a brittle
dependency--if Gmane were to disappear, we would have an awful lot of
broken URLs in our emails that would be impossible to fix).

It seems like a few desirable features are being talked about here, and
summarizing the discussion as centralized vs decentralized is too
simplistic. What is really important?

1. Convenient and efficient, including for newcomers
2. Usable while offline
3. Usable in pure-text mode
4. Decentralized

Something else?

In my opinion, a central system with good Git integration (helps with 1)
and both a straightforward web UI (also helps 1) and a good email
interface (which gives both 2 and 3) and the ability to export the
review history (which avoids lockin, the most important aspect of 4)
would be perfect. Is there such a thing?

Michael

[1] ...probably other websites too. I'm really not trying to flog GitHub
here; it's just the one I have the most experience with. In fact, I
kindof assume that the Git project would choose a service that is itself
based on open-source software.

-- 
Michael Haggerty
mhag...@alum.mit.edu

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-11-28 Thread Marc Branchaud
On 14-11-28 09:31 AM, Michael Haggerty wrote:
 On 11/27/2014 06:46 PM, Torsten Bögershausen wrote:
 On 2014-11-25 01.28, Michael Haggerty wrote:
 []
 Let me list the aspects of our mailing list workflow that I find
 cumbersome as a contributor and reviewer:

 * Submitting patches to the mailing list is an ordeal of configuring
 format-patch and send-email and getting everything just right, using
 instructions that depend on the local environment.
 Typically everything fits into ~/.gitconfig,
 which can be carried around on a USB-Stick.
 Is there any details which I miss, or howtows we can improve ?
 
 I used to need one setup at work and a different one at home (because of
 how my email was configured), and sometimes had to switch back and forth
 as I carried my notebook around.
 
 [...]
   * I do git fetch gitster, then try to figure out whether the branch
 I'm interested in is present, what its name is, and whether the version
 in your tree is the latest version, then git checkout xy/foobar.
 There are 12 branches from mh/, so it should be possible to find the name,
 und run git log gitster/xy/fix_this_bug or so.
 Even more important, this branch is the single point of truth, because
 this branch may be merged eventually, and nothing else.
 
 I know it's *possible*. The question is whether it could be made easier.
 
 * Following patch series across iterations is also awkward. To compare
 two versions, I have to first get both patch series into my repo, which
 involves digging through the ML history to find older versions, followed
 by the git am steps. Often submitters are nice enough to put links to
 previous versions of their patch series in their cover letters, but the
 links are to a web-based email archive, from which it is even more
 awkward to grab and apply patches. So in practice I then go back to my
 email client and search my local archive for my copy of the same email
 that was referenced in the archive, and apply the patch from there.
 Finding comments about old versions of a patch series is nearly as much
 work.
 In short:
 We can ask every contributor, if the patch send to the mailing list
 is available on a public Git-repo, and what the branch name is,
 like _V2.. Does this makes sense ?
 
 That would be helpful, but it would put yet *another* requirement on the
 submitter (to send patch emails *and* push the branch to some accessible
 repository). We regulars could script this pretty easily, but people who
 only contribute occasionally or who are trying to get started will be
 even more overwhelmed.

A bot could subscribe to the list and create branches in a public repo.
(This idea feels familiar -- didn't somebody attempt this already?)

Integrate the bot into the list manager, and every PATCH email sent through
the list could have the patch's URL (maybe in the footer, or as an X- header).

Could this make a decent GSoC project?

M.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-11-28 Thread brian m. carlson
On Fri, Nov 28, 2014 at 04:34:09PM +0100, Michael Haggerty wrote:
 My ideal would be to invert the procedure. Let the patches in a public
 Git repository somewhere be the primary artifact, and let the review
 process be focused there. Let email be an alternative interface to the
 central review site:
 
 * Generate patch emails (similar to the current format) when pull
 requests are submitted.
 
 * Generate notification emails when people comment on the patches.
 
 * Allow people to respond to the patch and notification emails via
 email. The central review site should associate those comments with the
 patches that they apply to, and present them along with other review
 comments received via other interfaces.

I think these are good goals.  Even as a semi-regular contributor, I
prefer to push branches around using Git rather than formatting patches
and mailing them.

Also, I think that being able to comment on a patch or report a bug
without a login (via email) is desirable.  I'm not a fan of having to
have an account on every Bugzilla on the planet.  That's why I like
debbugs.

 It seems like a few desirable features are being talked about here, and
 summarizing the discussion as centralized vs decentralized is too
 simplistic. What is really important?
 
 1. Convenient and efficient, including for newcomers
 2. Usable while offline
 3. Usable in pure-text mode
 4. Decentralized

I think 1 is definitely important.  For me personally, 2 isn't very
important, as all my email is via IMAP (so I have to be online).  I
think 3 is important for accessibility reasons.  There are a lot of
blind or low-sighted people for whom a GUI is infeasible or burdensome.

 Something else?

It might be useful to have a system that has a bug or issue tracker.  We
often have posts to the mailing list that don't get a response, even
though those may represent legitimate bugs (code or documentation).
-- 
brian m. carlson / brian with sandals: Houston, Texas, US
+1 832 623 2791 | http://www.crustytoothpaste.net/~bmc | My opinion only
OpenPGP: RSA v4 4096b: 88AC E9B2 9196 305B A994 7552 F1BA 225C 0223 B187


signature.asc
Description: Digital signature


Re: Our cumbersome mailing list workflow

2014-11-28 Thread Damien Robert
 A bot could subscribe to the list and create branches in a public repo.
 (This idea feels familiar -- didn't somebody attempt this already?)

Thomas Rast maintains git notes that link git commits to their gmane
discussion, you can get them with

[remote mailnotes]
  url = git://github.com/trast/git.git
  fetch = refs/heads/notes/*:refs/notes/*

There is gmane branch and a message-id branch, its pretty usefull.

--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-11-27 Thread Torsten Bögershausen
On 2014-11-25 01.28, Michael Haggerty wrote:
[]
 Let me list the aspects of our mailing list workflow that I find
 cumbersome as a contributor and reviewer:
 
 * Submitting patches to the mailing list is an ordeal of configuring
 format-patch and send-email and getting everything just right, using
 instructions that depend on the local environment.
Typically everything fits into ~/.gitconfig,
which can be carried around on a USB-Stick.
Is there any details which I miss, or howtows we can improve ?
 We saw that hardly
 any GSoC applicants were able to get it right on their first attempt.
 Submitting a patch series should be as simple as git push.
 
 * Once patches are submitted, there is no assurance that you (Junio)
 will apply them to your tree at the same point that the submitter
 developed and tested them.
 
 * The branch name that you choose for a patch series is not easily
 derivable from the patches as they appeared in the mailing list. Trying
 to figure out whether/where the patches exist in your tree is a largely
 manual task. The reverse mapping, from in-tree commit to the email where
 it was proposed, is even more difficult to infer.
 
 * Your tree has no indication of which version of a patch series (v1,
 v2, etc) is currently applied.

 
 The previous three points combine to make it awkward to get patches into
 my local repository to review or test. There are two alternatives, both
 cumbersome and imprecise:
 
   * I do git fetch gitster, then try to figure out whether the branch
 I'm interested in is present, what its name is, and whether the version
 in your tree is the latest version, then git checkout xy/foobar.
There are 12 branches from mh/, so it should be possible to find the name,
und run git log gitster/xy/fix_this_bug or so.
Even more important, this branch is the single point of truth, because
this branch may be merged eventually, and nothing else.
 
   * Or I save the emails to a temporary directory (awkward because, Oh
 Horror, I use Thunderbird and not mutt as email client), hope that I've
 guessed the right place to apply them, run git am, and later try to
 remember to clean up the temporary directory.
Is there a mutt howto somewhere?
 
 * Once I've done that, the supplemental comments from the emails (the
 cover letter and the text under the ---) are nowhere available in the
 Git repository. So if I want to see the changes in context plus the
 supplemental comments, I have to jump back and forth between email
 client and Git repo. Plus I have to jump around the rest of the email
 thread to see what comments other reviewers have already made about the
 series.
 
 * Following patch series across iterations is also awkward. To compare
 two versions, I have to first get both patch series into my repo, which
 involves digging through the ML history to find older versions, followed
 by the git am steps. Often submitters are nice enough to put links to
 previous versions of their patch series in their cover letters, but the
 links are to a web-based email archive, from which it is even more
 awkward to grab and apply patches. So in practice I then go back to my
 email client and search my local archive for my copy of the same email
 that was referenced in the archive, and apply the patch from there.
 Finding comments about old versions of a patch series is nearly as much
 work.
In short:
We can ask every contributor, if the patch send to the mailing list
is available on a public Git-repo, and what the branch name is,
like _V2.. Does this makes sense ?

As an alternative, you can save the branches locally, after running
git-am once, just keep the branch.
[]

 
 I did enjoy the variety of reviewing some patch series using Gerrit. It
 is nice that it tracks the evolution of a patch from version to version,
 and that the comments made on all versions of a patch are summarized in
 a single place. This makes it easier to avoid commenting on issues that
 other reviewers have already noted and easier to check that your own
 comments have been addressed by later versions of the patch. On the
 other hand, Gerrit seems strongly focused on individual patches rather
 than on patch series (which might not match our workflow so well), the
 UI is overwhelming (though I think one could get quite productive with
 it if one used it every day), and the notification emails come in blizzards.
 
 Michael
 
 [1] Disclaimer: I work for GitHub.
 
I like Gerrit as well.
But it is less efficient to use, a WEB browser is slower (often), and
you need to use the mouse...
However, if you put your patches on Gerrit, and add the link in your 
cover-letter,
it may be worth a trial.

But there is another thing:
Once a patch is send out, I would ask the sender to wait and collect comments
at least 24 hours before sending a V2.
We all living in different time zones, so please let the world spin once.

My feeling is that a patch  5 commits should have
a waiting time  5 days, otherwise I start reviewing V1, then V2 comes,

Re: Our cumbersome mailing list workflow

2014-11-27 Thread Matthieu Moy
Torsten Bögershausen tbo...@web.de writes:

 On 2014-11-25 01.28, Michael Haggerty wrote:
 []
 Let me list the aspects of our mailing list workflow that I find
 cumbersome as a contributor and reviewer:
 
 * Submitting patches to the mailing list is an ordeal of configuring
 format-patch and send-email and getting everything just right, using
 instructions that depend on the local environment.
 Typically everything fits into ~/.gitconfig,
 which can be carried around on a USB-Stick.

I personnally submit all my Git patches from a machine whose
/usr/sbin/sendmail knows how to send emails, so for me configuration is
super simple. But I can imagine the pain of someone working on various
machines with various network configuration and normally using a webmail
to send emails. Sharing ~/.gitconfig does not always work because on
machine A you only can use one SMTP server, and on machine B only
another ...

-- 
Matthieu Moy
http://www-verimag.imag.fr/~moy/
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: Our cumbersome mailing list workflow

2014-11-27 Thread Eric Wong
Torsten Bögershausen tbo...@web.de wrote:
 On 2014-11-25 01.28, Michael Haggerty wrote:
* Or I save the emails to a temporary directory (awkward because, Oh
  Horror, I use Thunderbird and not mutt as email client), hope that I've
  guessed the right place to apply them, run git am, and later try to
  remember to clean up the temporary directory.
 
 Is there a mutt howto somewhere?

Not that I'm aware of, but Documentation/email-clients.txt in
the Linux kernel has some short notes...

My muttrc has had the following since my early days as a git user:

  macro index A :unset pipe_decode\n|git am -3\n:set pipe_decode\n
  macro pager A :unset pipe_decode\n|git am -3\n:set pipe_decode\n

(Hit Shift-A while viewing/selecting a message to apply a patch,
 it requires you run mutt in your project working directory, though).

Perhaps there can be a similar document or reference to it in our
Documentation/

 In short:
 We can ask every contributor, if the patch send to the mailing list
 is available on a public Git-repo, and what the branch name is,
 like _V2.. Does this makes sense ?

Not unreasonable.  I hope that won't give folks an excuse to refuse
to mail patches, though.  Some folks read email offline and can't
fetch repos until they're online again.

 I like Gerrit as well.
 But it is less efficient to use, a WEB browser is slower (often), and
 you need to use the mouse...

IMNSHO, development of non-graphical software should never depend on
graphical software.  Also, I guess there is no way to comment on Gerrit
via email (without registration/logins?).

Lately, I've been trying to think of ways to make collaboration less
centralized.  Moving to more centralized collaboration tools is a step
back for decentralized VCS.

 But there is another thing:
 Once a patch is send out, I would ask the sender to wait and collect comments
 at least 24 hours before sending a V2.
 We all living in different time zones, so please let the world spin once.
 
 My feeling is that a patch  5 commits should have
 a waiting time  5 days, otherwise I start reviewing V1, then V2 comes,
 then V3 before I am finished with V1. That is not ideal.
 
 What does it cost to push your branch to a public repo and
 include that information in the email ?
 
 And how feasable/nice/useful is it to ask contributers for a wait
 time between re-rolling ?

All that sounds good.
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Our cumbersome mailing list workflow (was: Re: [PATCH 0/6] repack_without_refs(): convert to string_list)

2014-11-24 Thread Michael Haggerty
On 11/21/2014 07:00 PM, Junio C Hamano wrote:
 Michael Haggerty mhag...@alum.mit.edu writes:
 
 I don't think that those iterations changed anything substantial that
 overlaps with my version, but TBH it's such a pain in the ass working
 with patches in email that I don't think I'll go to the effort of
 checking for sure unless somebody shows interest in actually using my
 version.

 Sorry for being grumpy today :-(
 
 Is the above meant as a grumpy rant to be ignored, or as a
 discussion starter to improve the colaboration to allow people to
 work better together instead of stepping on each other's patches?

I think I know the sentiments of the mailing list regulars well enough
that it didn't seem worthwhile to open this topic again, so I was just
letting off steam without any hope of changing anything. But since you
asked...

Let me list the aspects of our mailing list workflow that I find
cumbersome as a contributor and reviewer:

* Submitting patches to the mailing list is an ordeal of configuring
format-patch and send-email and getting everything just right, using
instructions that depend on the local environment. We saw that hardly
any GSoC applicants were able to get it right on their first attempt.
Submitting a patch series should be as simple as git push.

* Once patches are submitted, there is no assurance that you (Junio)
will apply them to your tree at the same point that the submitter
developed and tested them.

* The branch name that you choose for a patch series is not easily
derivable from the patches as they appeared in the mailing list. Trying
to figure out whether/where the patches exist in your tree is a largely
manual task. The reverse mapping, from in-tree commit to the email where
it was proposed, is even more difficult to infer.

* Your tree has no indication of which version of a patch series (v1,
v2, etc) is currently applied.

The previous three points combine to make it awkward to get patches into
my local repository to review or test. There are two alternatives, both
cumbersome and imprecise:

  * I do git fetch gitster, then try to figure out whether the branch
I'm interested in is present, what its name is, and whether the version
in your tree is the latest version, then git checkout xy/foobar.

  * Or I save the emails to a temporary directory (awkward because, Oh
Horror, I use Thunderbird and not mutt as email client), hope that I've
guessed the right place to apply them, run git am, and later try to
remember to clean up the temporary directory.

* Once I've done that, the supplemental comments from the emails (the
cover letter and the text under the ---) are nowhere available in the
Git repository. So if I want to see the changes in context plus the
supplemental comments, I have to jump back and forth between email
client and Git repo. Plus I have to jump around the rest of the email
thread to see what comments other reviewers have already made about the
series.

* Following patch series across iterations is also awkward. To compare
two versions, I have to first get both patch series into my repo, which
involves digging through the ML history to find older versions, followed
by the git am steps. Often submitters are nice enough to put links to
previous versions of their patch series in their cover letters, but the
links are to a web-based email archive, from which it is even more
awkward to grab and apply patches. So in practice I then go back to my
email client and search my local archive for my copy of the same email
that was referenced in the archive, and apply the patch from there.
Finding comments about old versions of a patch series is nearly as much
work.

* Because of the indeterminate application point, accumulating
Signed-off-by lines, changed committer metadata, and maintainer tweaks,
the commits that make it to the official tree have different SHA-1s than
the commits in the submitter's tree, and both are different than the
commits in the tree of any reviewer who got the patches using git am.
This makes it hard to be sure that everybody is on the same page. It
also makes it awkward for people to exchange ideas for further changes
via Git protocols in the form of patches.

* Because of the crude serialization of patches through email, it is
only possible to submit linear patch series, not merge commits.

Hmmm, I think that covers most of the problems of handling patches and
review via a mailing list.


What are some alternatives?

I did enjoy the variety of reviewing some patch series using Gerrit. It
is nice that it tracks the evolution of a patch from version to version,
and that the comments made on all versions of a patch are summarized in
a single place. This makes it easier to avoid commenting on issues that
other reviewers have already noted and easier to check that your own
comments have been addressed by later versions of the patch. On the
other hand, Gerrit seems strongly focused on individual patches rather
than on patch series (which might not match