git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* GSOC idea: build in scripts and cleanups
@ 2011-03-26  0:41 Robert David
  2011-03-26  2:14 ` Jonathan Nieder
  0 siblings, 1 reply; 20+ messages in thread
From: Robert David @ 2011-03-26  0:41 UTC (permalink / raw)
  To: Git Mailing List

[-- Attachment #1: Type: text/plain, Size: 922 bytes --]

Hi, 

I'm IT student from Czech Republic.
I'm long time user of git and very interested in development participation. 
Having passing your GSOC ideas, keep my eyes on scripts building in and also 
git add -p cleanups. Because I like this kind of work. 

Because there are more thinks to do in the cleanup and rewrite task, I would 
like to ask if there is some priority in these tasks? To let me focus on the 
most important parts. 

I'm experienced in C and shell ( i did a lot of bug fixing in company I worked 
part-time ) and beginner in PERL ( I wrote some scripts but nothing big ). I 
like PERL much, so it is not a problem for me to learn that better.

I was also thinking if there isn't PERL a better choice in rewriting shell 
scripts, due to planed porting (android, etc). Better than C. But I don't know 
android and other platform so much, so thats why I'm asking.

Greets,
Robert David.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-03-26  0:41 GSOC idea: build in scripts and cleanups Robert David
@ 2011-03-26  2:14 ` Jonathan Nieder
  2011-03-26 13:39   ` Jeff King
  0 siblings, 1 reply; 20+ messages in thread
From: Jonathan Nieder @ 2011-03-26  2:14 UTC (permalink / raw)
  To: Robert David; +Cc: Git Mailing List, Jeff King, Thomas Rast, Matthieu Moy

(+cc: various relevant people for ideas)
Hi,

Robert David wrote:

> I'm long time user of git and very interested in development participation. 

Welcome!

> Having passing your GSOC ideas, keep my eyes on scripts building in and also 
> git add -p cleanups. Because I like this kind of work. 
>
> Because there are more thinks to do in the cleanup and rewrite task, I would 
> like to ask if there is some priority in these tasks? To let me focus on the 
> most important parts. 

Looking at the git-add--interactive.perl source, I see:

	process_args();
	refresh();
	if ($patch_mode) {
		patch_update_cmd();
	}
[...]

and patch_update_cmd looks like

	my @all_mods = list_modified($patch_mode_flavour{FILTER});
	my @mods = grep { !($_->{BINARY}) } @all_mods;
[...]
	if ($patch_mode) {
		@them = @mods;
	}
[...]
	for (@them) {
		return 0 if patch_update_file($_->{VALUE});
	}

patch_update_file loops over hunks in the diff for that file and acts
on them one at a time.  So a natural step might be to eliminate this
outer "for (@them)" loop, so the person at the keyboard could decide
to go back to a previous file or list all files and choose one.

Others may have more to say.  If there are things you wished "git
checkout --patch" was able to do, that can also help.

> I was also thinking if there isn't PERL a better choice in rewriting shell 
> scripts, due to planed porting (android, etc). Better than C. But I don't know 
> android and other platform so much, so thats why I'm asking.

So far (on Windows and various Unixen) it seems that C is much easier
to work with as far as porting goes.[2]

Jonathan

[1] Android is an odd example because the platform uses Java heavily
(so JGit might be a better fit for it).  Perhaps the wish for android
support should have been put on the Eclipse ideas page[2] and a link
added to git's; I dunno.
[2] http://wiki.eclipse.org/Google_Summer_of_Code_2011_Ideas#Ideas_submission

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-03-26  2:14 ` Jonathan Nieder
@ 2011-03-26 13:39   ` Jeff King
  2011-03-28  8:55     ` Robert David
  0 siblings, 1 reply; 20+ messages in thread
From: Jeff King @ 2011-03-26 13:39 UTC (permalink / raw)
  To: Jonathan Nieder; +Cc: Robert David, Git Mailing List, Thomas Rast, Matthieu Moy

On Fri, Mar 25, 2011 at 09:14:35PM -0500, Jonathan Nieder wrote:

> > I was also thinking if there isn't PERL a better choice in rewriting shell 
> > scripts, due to planed porting (android, etc). Better than C. But I don't know 
> > android and other platform so much, so thats why I'm asking.
> 
> So far (on Windows and various Unixen) it seems that C is much easier
> to work with as far as porting goes.[2]

If I were considering cleaning up and porting add--interactive to C, I
think I would probably start with just porting the "-p" patch loop
first. I think it's the part that most people use, and most callers
don't support a generic "-i" but just the "-p" interface (e.g., you can
do "git add -i" or "git add -p", but only "git checkout -p"). And that
cuts down the size of the task somewhat.

As far as cleanup versus features, I think Thomas would have to comment
on that. He is the one who did the most work on patch-mode, and
therefore the one who most thinks it needs cleaned up. :)

> [1] Android is an odd example because the platform uses Java heavily
> (so JGit might be a better fit for it).  Perhaps the wish for android
> support should have been put on the Eclipse ideas page[2] and a link
> added to git's; I dunno.

Yeah, I'm not sure what an Android port would quite look like. In theory
I could probably build stock git for my rooted N1 using a
cross-compiler. But I can't imagine what I would use it for. A native
app seems like it would be more useful, and that pretty much requires
Java.

-Peff

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-03-26 13:39   ` Jeff King
@ 2011-03-28  8:55     ` Robert David
  2011-03-28 14:21       ` Jeff King
  0 siblings, 1 reply; 20+ messages in thread
From: Robert David @ 2011-03-28  8:55 UTC (permalink / raw)
  To: Jeff King; +Cc: Jonathan Nieder, Git Mailing List, Thomas Rast, Matthieu Moy

[-- Attachment #1: Type: Text/Plain, Size: 2003 bytes --]

Dne sobota 26 března 2011 14:39:39 Jeff King napsal(a):
> On Fri, Mar 25, 2011 at 09:14:35PM -0500, Jonathan Nieder wrote:
> > > I was also thinking if there isn't PERL a better choice in rewriting
> > > shell scripts, due to planed porting (android, etc). Better than C.
> > > But I don't know android and other platform so much, so thats why I'm
> > > asking.
> > 
> > So far (on Windows and various Unixen) it seems that C is much easier
> > to work with as far as porting goes.[2]
> 
> If I were considering cleaning up and porting add--interactive to C, I
> think I would probably start with just porting the "-p" patch loop
> first. I think it's the part that most people use, and most callers
> don't support a generic "-i" but just the "-p" interface (e.g., you can
> do "git add -i" or "git add -p", but only "git checkout -p"). And that
> cuts down the size of the task somewhat.

I have read all the code in git-add--interactive. If I understand that 
correct, you mean to separate -i and -p int two different commands.
And make the -p option more like the -i (but just only for patching).

And consequently port them to C. 

> 
> As far as cleanup versus features, I think Thomas would have to comment
> on that. He is the one who did the most work on patch-mode, and
> therefore the one who most thinks it needs cleaned up. :)
> 

Is Thomas going to be a mentor in this task?

Robert David.


> > [1] Android is an odd example because the platform uses Java heavily
> > (so JGit might be a better fit for it).  Perhaps the wish for android
> > support should have been put on the Eclipse ideas page[2] and a link
> > added to git's; I dunno.
> 
> Yeah, I'm not sure what an Android port would quite look like. In theory
> I could probably build stock git for my rooted N1 using a
> cross-compiler. But I can't imagine what I would use it for. A native
> app seems like it would be more useful, and that pretty much requires
> Java.
> 
> -Peff

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-03-28  8:55     ` Robert David
@ 2011-03-28 14:21       ` Jeff King
  2011-03-30 15:39         ` Thomas Rast
  0 siblings, 1 reply; 20+ messages in thread
From: Jeff King @ 2011-03-28 14:21 UTC (permalink / raw)
  To: Robert David; +Cc: Jonathan Nieder, Git Mailing List, Thomas Rast, Matthieu Moy

On Mon, Mar 28, 2011 at 10:55:22AM +0200, Robert David wrote:

> > If I were considering cleaning up and porting add--interactive to C, I
> > think I would probably start with just porting the "-p" patch loop
> > first. I think it's the part that most people use, and most callers
> > don't support a generic "-i" but just the "-p" interface (e.g., you can
> > do "git add -i" or "git add -p", but only "git checkout -p"). And that
> > cuts down the size of the task somewhat.
> 
> I have read all the code in git-add--interactive. If I understand that 
> correct, you mean to separate -i and -p int two different commands.
> And make the -p option more like the -i (but just only for patching).
> 
> And consequently port them to C. 

Sort of. The approach I would take would be:

  1. write patch loop code in C (i.e., the code that is going to replace
     the --patch code path from git-add--interactive.perl), and make it
     call-able from within other C programs

  2. write a new command, "git-add--interactive-patch", that behaves
     like "git-add--interactive --patch", but is based on your new C
     code.

  3. Port C callers of "git-add--interactive --patch" to the new
     interface from (1). This should be "add -p", "checkout -p", and
     "reset -p".

  4. Port non-C callers of "git-add--interactive --patch" to the new
     command from (2). This should be git-add--interactive.perl and
     git-stash.sh.

  5. Remove the perl patch code in git-add--interactive.perl; you can
     replace it with a call to git-add--interactive-patch.

But that doesn't mean that's the way it has to be done. Just what I
would do. :)

> > As far as cleanup versus features, I think Thomas would have to comment
> > on that. He is the one who did the most work on patch-mode, and
> > therefore the one who most thinks it needs cleaned up. :)
> 
> Is Thomas going to be a mentor in this task?

I hope so. I can also co-mentor if it helps.

-Peff

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-03-28 14:21       ` Jeff King
@ 2011-03-30 15:39         ` Thomas Rast
  2011-03-30 21:17           ` Robert David
                             ` (2 more replies)
  0 siblings, 3 replies; 20+ messages in thread
From: Thomas Rast @ 2011-03-30 15:39 UTC (permalink / raw)
  To: Jeff King; +Cc: Robert David, Jonathan Nieder, Git Mailing List, Matthieu Moy

Jeff King wrote:
> On Mon, Mar 28, 2011 at 10:55:22AM +0200, Robert David wrote:
> 
> > > As far as cleanup versus features, I think Thomas would have to comment
> > > on that. He is the one who did the most work on patch-mode, and
> > > therefore the one who most thinks it needs cleaned up. :)
> > 
> > Is Thomas going to be a mentor in this task?
> 
> I hope so. I can also co-mentor if it helps.

I'm certainly ready; I didn't propose any projects that I would not
also mentor.  (However, I won't mentor more than one...)

Note that while it's certainly a bonus, porting it to C probably makes
the project more difficult and time-consuming.  We'll have to see in
the proposal timelines however.

As for cleanup, my gut feeling right now is that the Perl code can
probably cope with incremental cleanups as required for each feature.
On the other hand, the C port should start from a clean redesign so as
to not rewrite it twice.

-- 
Thomas Rast
trast@{inf,student}.ethz.ch

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-03-30 15:39         ` Thomas Rast
@ 2011-03-30 21:17           ` Robert David
  2011-04-03 21:17           ` Robert David
  2011-04-04  7:43           ` Robert David
  2 siblings, 0 replies; 20+ messages in thread
From: Robert David @ 2011-03-30 21:17 UTC (permalink / raw)
  To: Thomas Rast; +Cc: Jeff King, Jonathan Nieder, Git Mailing List, Matthieu Moy

[-- Attachment #1: Type: Text/Plain, Size: 1483 bytes --]

Dne středa 30 března 2011 17:39:12 Thomas Rast napsal(a):
> Jeff King wrote:
> > On Mon, Mar 28, 2011 at 10:55:22AM +0200, Robert David wrote:
> > > > As far as cleanup versus features, I think Thomas would have to
> > > > comment on that. He is the one who did the most work on patch-mode,
> > > > and therefore the one who most thinks it needs cleaned up. :)
> > > 
> > > Is Thomas going to be a mentor in this task?
> > 
> > I hope so. I can also co-mentor if it helps.
> 
> I'm certainly ready; I didn't propose any projects that I would not
> also mentor.  (However, I won't mentor more than one...)

Thank you for your attention.

> 
> Note that while it's certainly a bonus, porting it to C probably makes
> the project more difficult and time-consuming.  We'll have to see in
> the proposal timelines however.

It is not a big problem to me. I plan to begin full time work on this in half 
June.
Before that I plan some cleanups and fixes to simplify the upcoming porting.

> 
> As for cleanup, my gut feeling right now is that the Perl code can
> probably cope with incremental cleanups as required for each feature.
> On the other hand, the C port should start from a clean redesign so as
> to not rewrite it twice.

I agree that porting to C should be done from scratch. Thats why I would clean 
and extend the script first to make a "preview". Than when it will comply 
with requirements, I will port that from scratch to C.

Robert

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-03-30 15:39         ` Thomas Rast
  2011-03-30 21:17           ` Robert David
@ 2011-04-03 21:17           ` Robert David
  2011-04-04  7:43           ` Robert David
  2 siblings, 0 replies; 20+ messages in thread
From: Robert David @ 2011-04-03 21:17 UTC (permalink / raw)
  To: Thomas Rast; +Cc: Jeff King, Jonathan Nieder, Git Mailing List, Matthieu Moy

[-- Attachment #1: Type: Text/Plain, Size: 1446 bytes --]

Dne středa 30 března 2011 17:39:12 Thomas Rast napsal(a):
> Jeff King wrote:
> > On Mon, Mar 28, 2011 at 10:55:22AM +0200, Robert David wrote:
> > > > As far as cleanup versus features, I think Thomas would have to
> > > > comment on that. He is the one who did the most work on patch-mode,
> > > > and therefore the one who most thinks it needs cleaned up. :)
> > > 
> > > Is Thomas going to be a mentor in this task?
> > 
> > I hope so. I can also co-mentor if it helps.
> 
> I'm certainly ready; I didn't propose any projects that I would not
> also mentor.  (However, I won't mentor more than one...)
> 
> Note that while it's certainly a bonus, porting it to C probably makes
> the project more difficult and time-consuming.  We'll have to see in
> the proposal timelines however.
> 
> As for cleanup, my gut feeling right now is that the Perl code can
> probably cope with incremental cleanups as required for each feature.
> On the other hand, the C port should start from a clean redesign so as
> to not rewrite it twice.

Hi,

I have submitted the proposal on gsoc official site. I would like to ask for 
some comments on that. I don't know how you get access to student proposals to 
git. But I see that as proposal from "robertdavid" number 1.
I would like to focus myself only on this one proposal, so that is why I'm 
asking for comments, to extend the proposal as needed.

Thanks,
Robert David.


[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-03-30 15:39         ` Thomas Rast
  2011-03-30 21:17           ` Robert David
  2011-04-03 21:17           ` Robert David
@ 2011-04-04  7:43           ` Robert David
  2011-04-04 18:09             ` Junio C Hamano
                               ` (2 more replies)
  2 siblings, 3 replies; 20+ messages in thread
From: Robert David @ 2011-04-04  7:43 UTC (permalink / raw)
  To: Thomas Rast; +Cc: Jeff King, Jonathan Nieder, Git Mailing List, Matthieu Moy

[-- Attachment #1: Type: Text/Plain, Size: 4742 bytes --]

As a advice from Jonathan Nieder. I'm sending copy of my proposal to ml.

Robert.

####################################################
Abstract
Today git code consists of the base written in C and many helper shell or PERL 
scripts. While at a first time it is easier to write the script, final code is 
supposed to be in C. One of these scripts is git-add--interactive. 

Git-add--interactive is a helper script for git-add, which servers its options 
-i and -p. It definitely need to be integrated in git-add.
Which means, dividing the script in two parts: git-add -p and git-add -i. This 
involves usage of some code being written already in git.
Than writing some new functions common for both --patch and --interactive. And 
at last, fully integrating these options in git-add.

But before that, it is need to clean and extend the current git-add--
interactive, to serve user needs at the best. 
This means for example rewrite the main part of the way the patches are chosen 
by user, to let the user more flexibility.


Project goals
Main and final project goal is integrating fully git-add--interactive into 
current git-add code.
This task also include cleaning the functionality of this code, to make these 
functions more "standardized". 
This means consolidate the differences in these functions and make them more 
consistent in the user point of view.

How to consider this project has success? That is pretty easy, the already 
done functionality will be integrated in git-add and the user usage would be 
consistent.


Interfaces
As this is mainly part of git-add, that means that it will need to be changed 
at the most.
There are also another commands using this functionality now: git-am, git-
checkout, git-rebase. 
So there is possibility that there would be some changes needs to be done to 
adopt new interface.

I want to use as much code as possible from current git code-base, but this 
means further analysis to decide what exactly use and what not.


Time-line 
The official time-line consists of 12 coding week, starting 24th May. The mid-
evaluation is in the 8th week.
So the plan is written in week order beginning on the first coding week. 

1) Pre-coding time
I will read the documentation, analyze the git-add--interactive code and 
possibly change some small amount of code there. 
To clean thinks up for upcoming work. I will also seek the git code to find out 
where is what, for further rewriting analyze.

2) 1-3 week
Get the code of git-add--interactive cleaned and possibly written some of the 
consistency stuff.
Analyze the code with the focus on code already written in C.

3) 4-5 week
Get the cleaning and consistency stuff done. 
Collect the community feedback to the code, to get things improve where it is 
needed.

4) 6-7 week
Start the rewriting period, this will provide some architectonic basis to be 
included in git-add.

5) 8-11 week
Extend the C code to the state it should be.
Adopt other git commands to work with the new interface correctly.
Test extensively.
Update documentation where needed.

6) 12 week
Write more documentation, to document what was done and how.
Correct bugs and test.


About me
I'm a student of second year of bachelors study on Faculty of Information 
Technology, Czech Technical University in Prague, Czech Republic. 
I have some experience with C and script languages, because I did worked for 
company making client software for two years.

I have never contribute to open source projects, in the means of submitting 
patches (I did some bug-reporting in projects like midnight-commander, arch 
linux, debian linux). 
But as I love open source and use that for a long time, I realized I have to 
begin participating in development. Thus I see GSOC as a good startup for me.
My prior experience is doing shell and PERL scripts, because I do that as 
"every-week" work. I work also for Prague children free-time organization, 
learning children open source stuff and little bit programming, mainly some 
small scripts (www.ddmpraha.cz).

My git experience is purely user based. I use git for everyday work, 
administrating my computers and servers, keeping track of my school works, and 
my personal projects. In the past I wrote some scripts helping develop debian 
packages using purely git (as the software was not released yet I can't 
explain it further and I also don't work for that company any more. 
www.zonio.net). 
Because of GSOC start I wanted to find out more information about this proposal 
on git mailing list (http://article.gmane.org/gmane.comp.version-
control.git/170036)
####################################################

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-04  7:43           ` Robert David
@ 2011-04-04 18:09             ` Junio C Hamano
  2011-04-04 18:51               ` Robert David
  2011-04-05 17:07               ` Jeff King
  2011-04-05 16:52             ` Jeff King
  2011-04-11  6:34             ` Jonathan Nieder
  2 siblings, 2 replies; 20+ messages in thread
From: Junio C Hamano @ 2011-04-04 18:09 UTC (permalink / raw)
  To: Robert David
  Cc: Thomas Rast, Jeff King, Jonathan Nieder, Git Mailing List,
	Matthieu Moy, Shawn O. Pearce

Robert David <robert.david.public@gmail.com> writes:

> 1) Pre-coding time
> 2) 1-3 week
> 3) 4-5 week
> 4) 6-7 week
> 5) 8-11 week
> Extend the C code to the state it should be.
> Adopt other git commands to work with the new interface correctly.
> Test extensively.
> Update documentation where needed.
>
> 6) 12 week
> Write more documentation, to document what was done and how.
> Correct bugs and test.

I am afraid to say that the above schedule is too ambitious and does not
leave any time for reviews and re-rolls.  Please keep in mind that
historically patch series by more experienced contributors of substantial
size (comparable or even smaller scale than the topic you are proposing)
all typically took three or four review-reroll cycles, if not less, and we
don't automatically get extra review bandwidth just because GSoC is going
on.

I am starting to suspect that it might make sense to say "as far as GSoC
participation is concerned, we would call a topic "merged upstream" when
it hits 'next', even if it is not ready for 'master' at the end of the
term".

What do regular reviewers and potential mentors think?  Perhaps we have
more stringent quality requirements than other open source projects that
take "commit first, review and fix as necessary" cycle, and they may
declare success when "commit first" happens.  If that is the case, 'next',
whose definition is "without glaring design and implementation bugs and
fit enough for dogfooding, but needs extra polish", might be a better
success criteria to be fair for our students.

I am not in the mentor pool and I would rather not to be to stay neutral,
so I'll leave it up to the mentors.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-04 18:09             ` Junio C Hamano
@ 2011-04-04 18:51               ` Robert David
  2011-04-05 17:07               ` Jeff King
  1 sibling, 0 replies; 20+ messages in thread
From: Robert David @ 2011-04-04 18:51 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Thomas Rast, Jeff King, Jonathan Nieder, Git Mailing List,
	Matthieu Moy, Shawn O. Pearce

[-- Attachment #1: Type: Text/Plain, Size: 2329 bytes --]

Dne pondělí 04 dubna 2011 20:09:00 Junio C Hamano napsal(a):
> Robert David <robert.david.public@gmail.com> writes:
> > 1) Pre-coding time
> > 2) 1-3 week
> > 3) 4-5 week
> > 4) 6-7 week
> > 5) 8-11 week
> > Extend the C code to the state it should be.
> > Adopt other git commands to work with the new interface correctly.
> > Test extensively.
> > Update documentation where needed.
> > 
> > 6) 12 week
> > Write more documentation, to document what was done and how.
> > Correct bugs and test.
> 
> I am afraid to say that the above schedule is too ambitious and does not
> leave any time for reviews and re-rolls.  Please keep in mind that
> historically patch series by more experienced contributors of substantial
> size (comparable or even smaller scale than the topic you are proposing)
> all typically took three or four review-reroll cycles, if not less, and we
> don't automatically get extra review bandwidth just because GSoC is going
> on.

Thanks, this is what I wanted to hear. 
I wrote the proposal from my point of view. I'm prepared to change the size of 
the task and schedule on mentors and developers comments.
I'm also trying to understand your development cycle, to get that more 
precise. But I want also say that I'm prepared for a lot of work. I have the 
time in this period.

If I understand correctly, you mean to divide this task in more terms? And do 
less more precise. Test more, etc.

Robert 

> 
> I am starting to suspect that it might make sense to say "as far as GSoC
> participation is concerned, we would call a topic "merged upstream" when
> it hits 'next', even if it is not ready for 'master' at the end of the
> term".
> 
> What do regular reviewers and potential mentors think?  Perhaps we have
> more stringent quality requirements than other open source projects that
> take "commit first, review and fix as necessary" cycle, and they may
> declare success when "commit first" happens.  If that is the case, 'next',
> whose definition is "without glaring design and implementation bugs and
> fit enough for dogfooding, but needs extra polish", might be a better
> success criteria to be fair for our students.
> 
> I am not in the mentor pool and I would rather not to be to stay neutral,
> so I'll leave it up to the mentors.

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-04  7:43           ` Robert David
  2011-04-04 18:09             ` Junio C Hamano
@ 2011-04-05 16:52             ` Jeff King
  2011-04-05 23:27               ` Robert David
  2011-04-07 13:30               ` Robert David
  2011-04-11  6:34             ` Jonathan Nieder
  2 siblings, 2 replies; 20+ messages in thread
From: Jeff King @ 2011-04-05 16:52 UTC (permalink / raw)
  To: Robert David; +Cc: Thomas Rast, Jonathan Nieder, Git Mailing List, Matthieu Moy

On Mon, Apr 04, 2011 at 09:43:09AM +0200, Robert David wrote:

> Today git code consists of the base written in C and many helper shell or PERL 
> scripts. While at a first time it is easier to write the script, final code is 
> supposed to be in C. One of these scripts is git-add--interactive.
> 
> Git-add--interactive is a helper script for git-add, which servers its options 
> -i and -p. It definitely need to be integrated in git-add.

Can you expand on "definitely" here? I.e., what are the motivations for
this change? I know what some of the arguments are, and I know how _I_
would answer the question, but I want to hear what _you_ think.

And I am not just trying to be pedantic. Understanding the motivations
for a change will help us figure out the right way to go about it, and
how to figure out if we are successful at making it.

> Interfaces
> As this is mainly part of git-add, that means that it will need to be changed 
> at the most.
> There are also another commands using this functionality now: git-am, git-
> checkout, git-rebase. 

I don't think this is right. "am" and "rebase" have interactive modes,
but the code and functionality are not shared at all with
add--interactive. But you are missing some other commands that do have
patch modes built on add--interactive.

-Peff

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-04 18:09             ` Junio C Hamano
  2011-04-04 18:51               ` Robert David
@ 2011-04-05 17:07               ` Jeff King
  2011-04-05 18:18                 ` Junio C Hamano
  1 sibling, 1 reply; 20+ messages in thread
From: Jeff King @ 2011-04-05 17:07 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Robert David, Thomas Rast, Jonathan Nieder, Git Mailing List,
	Matthieu Moy, Shawn O. Pearce

On Mon, Apr 04, 2011 at 11:09:00AM -0700, Junio C Hamano wrote:

> Robert David <robert.david.public@gmail.com> writes:
> 
> > 1) Pre-coding time
> > 2) 1-3 week
> > 3) 4-5 week
> > 4) 6-7 week
> > 5) 8-11 week
> > Extend the C code to the state it should be.
> > Adopt other git commands to work with the new interface correctly.
> > Test extensively.
> > Update documentation where needed.
> >
> > 6) 12 week
> > Write more documentation, to document what was done and how.
> > Correct bugs and test.
> 
> I am afraid to say that the above schedule is too ambitious and does not
> leave any time for reviews and re-rolls.  Please keep in mind that
> historically patch series by more experienced contributors of substantial
> size (comparable or even smaller scale than the topic you are proposing)
> all typically took three or four review-reroll cycles, if not less, and we
> don't automatically get extra review bandwidth just because GSoC is going
> on.

I agree. I think it's important to take review-reroll cycles into
account. Not just in terms of allocating time, but also considering the
latency, and keeping the student's pipeline full of work while waiting
on review.

To that end, I think it's useful to break the problem up as much as
possible, and feed chunks to the list as quickly as possible. Even if
you end up with something like:

  Week 2: send refactoring of functionality X
  Week 3: build new functionality Y on top of X

Obviously "Y" is going to depend somewhat on the refactoring of "X". But
you can say in the RFC/PATCH for Y that X is still ongoing, and to
review with that in mind. And that keeps the student doing something
during week 3 while reviews for X flow in.

In the past, students haven't been very engaged with the list community,
and I think that has hurt us. The code gets dumped as a whole at the
end, and review is a lot harder, and GSoC is over, so the student ends
up busy with going back to school. And the student never really learns
the "normal" way that contributors interact with the community, which
makes them less likely to become long-time contributors.

So I'd really like to see this year's projects breaking contributions
into smaller, reviewable bits and submitting over the course of the
whole summer.

> I am starting to suspect that it might make sense to say "as far as GSoC
> participation is concerned, we would call a topic "merged upstream" when
> it hits 'next', even if it is not ready for 'master' at the end of the
> term".

Yeah, I think that is reasonable. Stuff that makes it into "next" is
usually of good quality, but just needs time to shake out bugs. Every
once in a while we find that something in next turns out be utter crap,
but usually it is obvious before it even gets merged there. Hopefully a
student will be available to fix minor bugs as the topic cooks in next,
but if not, it is probably something the mentor can do.

-Peff

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-05 17:07               ` Jeff King
@ 2011-04-05 18:18                 ` Junio C Hamano
  0 siblings, 0 replies; 20+ messages in thread
From: Junio C Hamano @ 2011-04-05 18:18 UTC (permalink / raw)
  To: Jeff King
  Cc: Robert David, Thomas Rast, Jonathan Nieder, Git Mailing List,
	Matthieu Moy, Shawn O. Pearce

Jeff King <peff@peff.net> writes:

> On Mon, Apr 04, 2011 at 11:09:00AM -0700, Junio C Hamano wrote:
>
>> I am afraid to say that the above schedule is too ambitious and does not
>> leave any time for reviews and re-rolls.  Please keep in mind that
>> historically patch series by more experienced contributors of substantial
>> size (comparable or even smaller scale than the topic you are proposing)
>> all typically took three or four review-reroll cycles, if not less, and we
>> don't automatically get extra review bandwidth just because GSoC is going
>> on.
>
> I agree. I think it's important to take review-reroll cycles into
> account. Not just in terms of allocating time, but also considering the
> latency, and keeping the student's pipeline full of work while waiting
> on review.

During the course of GSoC program, one will learn that other community
members do not have any obligation to keep one's pipeline full [*1*], and
learn how to cope with it.  Measuring the availability of others so that
one can make optimum use of others' time is a skill to be learned to be
successful in interacting with the open source community.

It takes people skills, not just "hacking" [*2*].

>   Week 3: build new functionality Y on top of X
>
> Obviously "Y" is going to depend somewhat on the refactoring of "X". But
> you can say in the RFC/PATCH for Y that X is still ongoing, and to
> review with that in mind. And that keeps the student doing something
> during week 3 while reviews for X flow in.

Yes.

> In the past, students haven't been very engaged with the list community,
> and I think that has hurt us. The code gets dumped as a whole at the
> end, and review is a lot harder, and GSoC is over, so the student ends
> up busy with going back to school.

While GSoC's "success" criteria (from stipend payment point of view) may
be to finish the defined task for the project, the program's larger
objective is to give an opportunity to students to learn how to work with
the open source community, so in that sense, I'd call that a total
failure.

I agree that we should help fixing that.

[Footnote]

*1* The mentor is special, has that obligation, and fulfils the obligation
by exercising his open source community skills and guiding the student to
break down the project into smaller subtasks to match the bandwidth of the
community.

*2* That incidentally is what I learned from working with Linus during the
early 2 months of git's life.  "People skill" is not just "being nice,
polite and diplomatic", none of which describes Linus ;-).

I think the most important skills include

 * being observant and know what others are doing, how busy they are, what
   patches are in flight that may have potential interactions with your
   work, and at what velocity these patches are progressing; and

 * clearly communicate what you are doing, in what order, for what reason,
   and where the boundaries of your goals are, and demonstrate that you
   are dedicated to the cause of the project.

The former would help you avoid duplicated work (if somebody is doing what
you can take advantage of and it is going at a reasonable pace, you can
spend your time on areas that do not depend on his work in the meantime
and wait) and unnecessary conflicts. The latter would make it more likely
that others would want to help you by correcting flaws in your design
assumptions and filling the gap that you are planning to punt, and help
these others to avoid duplicated work and unnecessary conflicts while
helping you.

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-05 16:52             ` Jeff King
@ 2011-04-05 23:27               ` Robert David
  2011-04-07 13:30               ` Robert David
  1 sibling, 0 replies; 20+ messages in thread
From: Robert David @ 2011-04-05 23:27 UTC (permalink / raw)
  To: Jeff King; +Cc: Thomas Rast, Jonathan Nieder, Git Mailing List, Matthieu Moy

[-- Attachment #1: Type: Text/Plain, Size: 2339 bytes --]

Dne úterý 05 dubna 2011 18:52:12 Jeff King napsal(a):
> On Mon, Apr 04, 2011 at 09:43:09AM +0200, Robert David wrote:
> > Today git code consists of the base written in C and many helper shell or
> > PERL scripts. While at a first time it is easier to write the script,
> > final code is supposed to be in C. One of these scripts is
> > git-add--interactive.
> > 
> > Git-add--interactive is a helper script for git-add, which servers its
> > options -i and -p. It definitely need to be integrated in git-add.
> 
> Can you expand on "definitely" here? I.e., what are the motivations for
> this change? I know what some of the arguments are, and I know how _I_
> would answer the question, but I want to hear what _you_ think.


From my point of view it means to keep the code consistent in the whole 
project. This further means better porting, avoid duplications and thus easier 
maintenance. And at last, I think it is my personality that takes me to 
project like this. I like to polish things up. 

Even I like the PERL, I would not like to maintain project consisted in more 
programming languages for a long term.


> 
> And I am not just trying to be pedantic. Understanding the motivations
> for a change will help us figure out the right way to go about it, and
> how to figure out if we are successful at making it.
> 
> > Interfaces
> > As this is mainly part of git-add, that means that it will need to be
> > changed at the most.
> > There are also another commands using this functionality now: git-am,
> > git- checkout, git-rebase.
> 
> I don't think this is right. "am" and "rebase" have interactive modes,
> but the code and functionality are not shared at all with
> add--interactive. But you are missing some other commands that do have
> patch modes built on add--interactive.

Thanks for the notice, I will dive more deeply into it.


I was also thinking about the timeline of this project. And maybe another 
solution is to constantly and slowly improve git-add--interactive, to make it 
accepted in next (maybe master) on end of the SoC period. And in parallel 
write the C code, which would be prepared for more longer term testing and 
bugfixing to get in next. This also means for me a clear way, how to continue 
contributing to git.

Robert 

> 
> -Peff

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-05 16:52             ` Jeff King
  2011-04-05 23:27               ` Robert David
@ 2011-04-07 13:30               ` Robert David
  2011-04-07 22:19                 ` Junio C Hamano
  1 sibling, 1 reply; 20+ messages in thread
From: Robert David @ 2011-04-07 13:30 UTC (permalink / raw)
  To: Jeff King; +Cc: Thomas Rast, Jonathan Nieder, Git Mailing List, Matthieu Moy

[-- Attachment #1: Type: Text/Plain, Size: 5248 bytes --]

I'm sending the updated proposal. 

I was thinking about that and realized to do the cleaning and update of git-
add--interactive during GSoC and try to get that upstream (master,next). 
And as second part, start rewriting it into the C as longer term project. 
Which will lead in reviews past the GSoC during the year.


Robert.

########################################################
Abstract

Today git code consists of the base written in C and many helper shell or PERL 
scripts. While at a first time it is easier to write the script, final code is 
supposed to be in C. One of these scripts is git-add--interactive. 

Git-add--interactive is a helper script for git-add, which servers its options 
-i and -p. It definitely need to be integrated in git-add.
Which means, dividing the script in two parts: git-add -p and git-add -i. This 
involves usage of some code being written already in git.
Than writing some new functions common for both --patch and --interactive. And 
at last, fully integrating these options in git-add.

But before that, it is need to clean and extend the current git-add--
interactive, to serve user needs at the best. 
This means for example rewrite the main part of the way the patches are chosen 
by use, to let the user more flexibility.


Project goals

Main and final project goal is integrating fully git-add--interactive into 
current git-add code.
This task also include cleaning the functionality of this code, to make these 
functions more "standardized". 
This means consolidate the differences in these functions and make them more 
consistent in the user point of view.
As this project is a bit longer term for GSoC period, 
the final from GSoC point of view will be doing the first part of the work 
completely (the script part) 
and prepare the C part as architectonic preview for ongoing review.

How to consider this project has success?
That is pretty easy, the cleaned and extended git-add--interactive script will 
be merged into the master branch.

Interfaces

As this is mainly part of git-add, that means that it will need to be changed 
at the most.
There are also another commands using this functionality now: git-stash. 
So there is possibility that there would be some changes needs to be done to 
adopt new interface.

I want to use as much code as possible from current git code-base, but this 
means further analysis to decide what exactly use and what not.


Time-line 

The official time-line consists of 12 coding week, starting 24th May. The mid-
evaluation is in the 8th week.
So the plan is written in week order beginning on the first coding week. 

1) Pre-coding time
I will read the documentation, analyze the git-add--interactive code and 
possibly change some small amount of code there. 
To clean thinks up for upcoming work. I will also seek the git code to find out 
where is what, for further rewriting analyze.

2) 1-3 week
Get the code of git-add--interactive cleaned and possibly written some of the 
consistency stuff.
Analyze the code with the focus on code already written in C.

3) 4-5 week
Get the cleaning and consistency stuff done. 
Collect the community feedback to the code, to get things improve where it is 
needed.

4) 6-8 week
Work on the extensions to the script. Test and repair bugs, that will occur. 
Start the rewriting period, this will provide some architectonic basis to be 
included in git-add.

5) 9-11 week
Collect reviews and solve bugs.
Continue with the rewriting work. 
Test extensively.
Update documentation where needed.

6) 12 week
Write more documentation, to document what was done and how.
Correct remaining bugs and test.


About me

I'm a student of second year of bachelors study on Faculty of Information 
Technology, Czech Technical University in Prague, Czech Republic. 
I have some experience with C and script languages, because I did worked for 
company making client software for two years.
I have never contribute to open source projects, in the means of submitting 
patches (I did some bug-reporting in projects like midnight-commander, arch 
linux, debian linux). 
But as I love open source and use that for a long time, I realized I have to 
begin participating in development. Thus I see GSOC as a good startup for me.
My prior experience is doing shell and PERL scripts, because I do that as 
"every-week" work. I work also for Prague children free-time organization, 
learning children open source stuff and little bit programming, mainly some 
small scripts (www.ddmpraha.cz).

My git experience is purely user based. I use git for everyday work, 
administrating my computers and servers, keeping track of my school works, and 
my personal projects. In the past I wrote some scripts helping develop debian 
packages using purely git (as the software was not released yet I cant explain 
it further and I also don't work for that company any more. www.zonio.net). 
Because of GSOC start I wanted to find out more information about this proposal 
on git mailing list (http://article.gmane.org/gmane.comp.version-
control.git/170036)
########################################################

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-07 13:30               ` Robert David
@ 2011-04-07 22:19                 ` Junio C Hamano
  2011-04-08  9:51                   ` Robert David
  0 siblings, 1 reply; 20+ messages in thread
From: Junio C Hamano @ 2011-04-07 22:19 UTC (permalink / raw)
  To: Robert David
  Cc: Jeff King, Thomas Rast, Jonathan Nieder, Git Mailing List,
	Matthieu Moy

Robert David <robert.david.public@gmail.com> writes:

> This task also include cleaning the functionality of this code, to make these 
> functions more "standardized". 
> This means consolidate the differences in these functions and make them more 
> consistent in the user point of view.

Standardized, consolidate, consistent are all pretty words but at the same
time they are highly subjective. Even though you may not have to have the
detailed description of everything in the proposal, you would need to at
least have a handful of examples of what are wrong with the current code
in mind when making such a sweeping statement, but I cannot sense that
from this proposal.

While reading the current add-i code recently, I noticed that over time
the code quality deteriorated compared to the reasonably clean design in
the original version, perhaps due to excessive copying and mimicing,
especially when "Edit patch" feature was added and then more recently when
new modes to apply patches in different directions are added to allow
other commands like "git reset" and "git checkout" to implement their
"--patch" options.

An example of a clean-up in the right direction may be a patch I posted a
few days ago:

  http://thread.gmane.org/gmane.comp.version-control.git/170685/focus=171017 

Is that the kind of "consolidation" you have in mind?

Also I am a bit puzzled by the inconsistency between the various stages of
your goals.  A clearly stated primary goal is:

> Main and final project goal is integrating fully git-add--interactive into 
> current git-add code.

but the success criteria is only about the above "This task also include"?

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-07 22:19                 ` Junio C Hamano
@ 2011-04-08  9:51                   ` Robert David
  0 siblings, 0 replies; 20+ messages in thread
From: Robert David @ 2011-04-08  9:51 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Jeff King, Thomas Rast, Jonathan Nieder, Git Mailing List,
	Matthieu Moy


[-- Attachment #1.1: Type: Text/Plain, Size: 4114 bytes --]

Dne pátek 08 dubna 2011 00:19:05 Junio C Hamano napsal(a):
> Robert David <robert.david.public@gmail.com> writes:
> > This task also include cleaning the functionality of this code, to make
> > these functions more "standardized".
> > This means consolidate the differences in these functions and make them
> > more consistent in the user point of view.
> 
> Standardized, consolidate, consistent are all pretty words but at the same
> time they are highly subjective. Even though you may not have to have the
> detailed description of everything in the proposal, you would need to at
> least have a handful of examples of what are wrong with the current code
> in mind when making such a sweeping statement, but I cannot sense that
> from this proposal.

While I have read the code, first thing I noticed is the inconsistence of 
general coding standarts used. Sometimes the code is pretty nice divided into 
subrutines to get the code understand fast, and sometimes it is a huge 
subrutine that does as much things as possible, and thus is no so good to read 
(also I don't speak here about comments missing in a lot of code, where 
sometimes there are some). With the lack of documentation in Documentation 
directory, that means that this code is something like black box. And hard to 
learn for newcomer. Tell me if Im wrong, but isnt the open-source demand also 
to let as many people ac possible to involve in development? 

The biggest example is the "patch_update_file". Which can be divided in few 
parts. For example the "if ($line) { ..... }" big big box.
This also mean for list_and_chose and list_modified (and maybe others).

Sometimes there are perl like statements:

"something if|for|while|etc something"
and common things are written next like 
"if (something) { something }"

Is there demand to write scripts (mainly perl) like in C to keep the code more 
readable for C people or just write it more in perl style (to keep the code 
cleaner and shorter)?

Another thing is parsing command line options, why not use Getopt::Long here?



> 
> While reading the current add-i code recently, I noticed that over time
> the code quality deteriorated compared to the reasonably clean design in
> the original version, perhaps due to excessive copying and mimicing,
> especially when "Edit patch" feature was added and then more recently when
> new modes to apply patches in different directions are added to allow
> other commands like "git reset" and "git checkout" to implement their
> "--patch" options.
> 
> An example of a clean-up in the right direction may be a patch I posted a
> few days ago:
> 
>  
> http://thread.gmane.org/gmane.comp.version-control.git/170685/focus=171017
> 
> Is that the kind of "consolidation" you have in mind?

I have read that conversation before. I also tried to reproduce that bug, but 
have no success (in version 1.7.4.3). But before I read the code and try to 
find something that this can occur, you send the patch. I'm not so fast as 
you:)


> 
> Also I am a bit puzzled by the inconsistency between the various stages of
> 
> your goals.  A clearly stated primary goal is:
> > Main and final project goal is integrating fully git-add--interactive
> > into current git-add code.
> 
> but the success criteria is only about the above "This task also include"?

I will try to clear that up today, to finalize that in the meaning of doing the 
cleanup and extension part as part of GSoC and prepare the rewriting part for 
further work. I still think I can handle that and rewrite that as part of 
GSoC, but I didn't do such a big open-source project before, so I'm going to 
adopt your style of coding standards and timings. 

I also attach a example perl code I'm now writing, it is a half done(40%) data 
-> animated graph converter (part of my seminar work). 

Robert.

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

[-- Attachment #1.2: semestralka.pl --]
[-- Type: application/x-perl, Size: 5138 bytes --]

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-04  7:43           ` Robert David
  2011-04-04 18:09             ` Junio C Hamano
  2011-04-05 16:52             ` Jeff King
@ 2011-04-11  6:34             ` Jonathan Nieder
  2011-04-17 18:50               ` Robert David
  2 siblings, 1 reply; 20+ messages in thread
From: Jonathan Nieder @ 2011-04-11  6:34 UTC (permalink / raw)
  To: Robert David; +Cc: Thomas Rast, Jeff King, Git Mailing List, Matthieu Moy

Hi,

Robert David wrote:

> I'm sending copy of my proposal to ml.

Thanks, and sorry for a slow response.

Full disclosure: I locally use a patch[1] to teach a --patience option
to add -p, checkout -p, etc (to use the "patience diff" algorithm).  I
never submitted it since it wasn't clear to me how to integrate it
(and other diff options) properly.  I will be very happy to see a
cleaner add--interactive.

So I'm a likely early consumer of your code, although I don't think
I'll have time to co-mentor.  Luckily there seems to be no shortage of
willing mentors.

Some quick impressions.  This is off-the-cuff; please feel free to let
me know if something sounds crazy.

> Today git code consists of the base written in C and many helper shell or PERL 
> scripts. While at a first time it is easier to write the script, final code is 
> supposed to be in C. One of these scripts is git-add--interactive. 
[...]
> But before that, it is need to clean and extend the current git-add--
> interactive, to serve user needs at the best. 

I see two goals in tension: (1) to integrate add--interactive as C
code, and (2) to clean it up and change its feature set.  Either one
could happen without the other, and for planning it would be useful to
know which is going to drive decisions (e.g., what if time is short
and something has to get cut?).

If (1) is the main goal, it might be easiest to first translate the
existing code, perhaps modulo small preparatory changes that make the
translation easier, into C and leave major changes for afterwards.
Tracking down bugs due to a major change (like switch in
implementation language) is a lot easier if the pre-change version is
well tested and well understood.

If (2) is the main goal, it might be easiest to rewrite small parts of
add--interactive in C where convenient rather than rewriting the whole
thing.  In that story, the result is a series of small patches without
any single world-changing patch. :)

[...]
> How to consider this project has success? That is pretty easy, the already 
> done functionality will be integrated in git-add and the user usage would be 
> consistent.

After each patch, the test suite should pass.  If some important
functionality is not exercised in the test suite, ideally it can be
added to the test suite.  (Though that's no replacement for trying the
changes in day-to-day use, of course.)

[...]
> The official time-line consists of 12 coding week, starting 24th May. The mid-
> evaluation is in the 8th week.
> So the plan is written in week order beginning on the first coding week. 

Jeff and Junio's advice seems sane to me.  More advice that might help
with writing a timeline: [2] and Christian's reply.

Because of the uncertainty I mentioned above, it's hard to give an
example, but an ideal proposal would include a timeline that gives a
technical plan for the summer.

Also during the bonding time or even earlier it would be nice to get
used to sending patches and reviewing them (as explained in
Documentation/SubmittingPatches) if you find time for it.

Thanks again, and hope that helps.
Jonathan

[1] http://bugs.debian.org/522361
[2] http://thread.gmane.org/gmane.comp.version-control.git/142623/focus=142877

^ permalink raw reply	[flat|nested] 20+ messages in thread

* Re: GSOC idea: build in scripts and cleanups
  2011-04-11  6:34             ` Jonathan Nieder
@ 2011-04-17 18:50               ` Robert David
  0 siblings, 0 replies; 20+ messages in thread
From: Robert David @ 2011-04-17 18:50 UTC (permalink / raw)
  To: Jonathan Nieder; +Cc: Thomas Rast, Jeff King, Git Mailing List, Matthieu Moy

[-- Attachment #1: Type: Text/Plain, Size: 4011 bytes --]

Dne pondělí 11 dubna 2011 08:34:44 Jonathan Nieder napsal(a):
> Hi,
> 
> Robert David wrote:
> > I'm sending copy of my proposal to ml.
> 
> Thanks, and sorry for a slow response.

I'm also sorry for the late response, I was off for holiday now.

> 
> Full disclosure: I locally use a patch[1] to teach a --patience option
> to add -p, checkout -p, etc (to use the "patience diff" algorithm).  I
> never submitted it since it wasn't clear to me how to integrate it
> (and other diff options) properly.  I will be very happy to see a
> cleaner add--interactive.
> 
> So I'm a likely early consumer of your code, although I don't think
> I'll have time to co-mentor.  Luckily there seems to be no shortage of
> willing mentors.
> 
> Some quick impressions.  This is off-the-cuff; please feel free to let
> me know if something sounds crazy.
> 
> > Today git code consists of the base written in C and many helper shell or
> > PERL scripts. While at a first time it is easier to write the script,
> > final code is supposed to be in C. One of these scripts is
> > git-add--interactive.
> 
> [...]
> 
> > But before that, it is need to clean and extend the current git-add--
> > interactive, to serve user needs at the best.
> 
> I see two goals in tension: (1) to integrate add--interactive as C
> code, and (2) to clean it up and change its feature set.  Either one
> could happen without the other, and for planning it would be useful to
> know which is going to drive decisions (e.g., what if time is short
> and something has to get cut?).
> 
> If (1) is the main goal, it might be easiest to first translate the
> existing code, perhaps modulo small preparatory changes that make the
> translation easier, into C and leave major changes for afterwards.
> Tracking down bugs due to a major change (like switch in
> implementation language) is a lot easier if the pre-change version is
> well tested and well understood.
> 
> If (2) is the main goal, it might be easiest to rewrite small parts of
> add--interactive in C where convenient rather than rewriting the whole
> thing.  In that story, the result is a series of small patches without
> any single world-changing patch. :)

As I updated the proposal, to focus mainly on the (2) way to go. I agree with 
your suggestions and I think it will be part of the second round, when the 
git-add--interactive will be done and tested enough.


> 
> [...]
> 
> > How to consider this project has success? That is pretty easy, the
> > already done functionality will be integrated in git-add and the user
> > usage would be consistent.
> 
> After each patch, the test suite should pass.  If some important
> functionality is not exercised in the test suite, ideally it can be
> added to the test suite.  (Though that's no replacement for trying the
> changes in day-to-day use, of course.)
> 
> [...]
> 
> > The official time-line consists of 12 coding week, starting 24th May. The
> > mid- evaluation is in the 8th week.
> > So the plan is written in week order beginning on the first coding week.
> 
> Jeff and Junio's advice seems sane to me.  More advice that might help
> with writing a timeline: [2] and Christian's reply.
> 
> Because of the uncertainty I mentioned above, it's hard to give an
> example, but an ideal proposal would include a timeline that gives a
> technical plan for the summer.
> 
> Also during the bonding time or even earlier it would be nice to get
> used to sending patches and reviewing them (as explained in
> Documentation/SubmittingPatches) if you find time for it.

I'm planing to submit some patches as soon as it will have more time to fully 
get in the code, I think it will be something like perl style cleanups.

Thanks for your attention,
Robert. 

> 
> Thanks again, and hope that helps.
> Jonathan
> 
> [1] http://bugs.debian.org/522361
> [2]
> http://thread.gmane.org/gmane.comp.version-control.git/142623/focus=142877

[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 230 bytes --]

^ permalink raw reply	[flat|nested] 20+ messages in thread

end of thread, other threads:[~2011-04-17 18:50 UTC | newest]

Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-03-26  0:41 GSOC idea: build in scripts and cleanups Robert David
2011-03-26  2:14 ` Jonathan Nieder
2011-03-26 13:39   ` Jeff King
2011-03-28  8:55     ` Robert David
2011-03-28 14:21       ` Jeff King
2011-03-30 15:39         ` Thomas Rast
2011-03-30 21:17           ` Robert David
2011-04-03 21:17           ` Robert David
2011-04-04  7:43           ` Robert David
2011-04-04 18:09             ` Junio C Hamano
2011-04-04 18:51               ` Robert David
2011-04-05 17:07               ` Jeff King
2011-04-05 18:18                 ` Junio C Hamano
2011-04-05 16:52             ` Jeff King
2011-04-05 23:27               ` Robert David
2011-04-07 13:30               ` Robert David
2011-04-07 22:19                 ` Junio C Hamano
2011-04-08  9:51                   ` Robert David
2011-04-11  6:34             ` Jonathan Nieder
2011-04-17 18:50               ` Robert David

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).