* GSoC questions
@ 2011-03-27 9:20 Alexandru Sutii
2011-03-28 0:11 ` Jonathan Nieder
0 siblings, 1 reply; 12+ messages in thread
From: Alexandru Sutii @ 2011-03-27 9:20 UTC (permalink / raw)
To: git
Hello!
My name is Alexandru Sutii and I would like to participate as a student at GSoc.
I am interested in two projects from your list:
- Build a minimal Git client based on libgit2
- Port Git to Android
My questions are:
- How important are these projects for the community?
- Should I provide a patch in order to prove that I am suited for one of these
projects?
If so, what specifically should I implement?
Thank you,
Alexandru.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-27 9:20 GSoC questions Alexandru Sutii
@ 2011-03-28 0:11 ` Jonathan Nieder
2011-03-28 14:35 ` Jeff King
2011-03-28 20:26 ` Alexandru Sutii
0 siblings, 2 replies; 12+ messages in thread
From: Jonathan Nieder @ 2011-03-28 0:11 UTC (permalink / raw)
To: Alexandru Sutii; +Cc: git, libgit2, Jeff King
Hi,
Alexandru Sutii wrote:
> I am interested in two projects from your list:
> - Build a minimal Git client based on libgit2
> - Port Git to Android
> My questions are:
> - How important are these projects for the community?
> - Should I provide a patch in order to prove that I am suited for one of these
> projects?
> If so, what specifically should I implement?
Thanks for writing. The "minimal Git client" task seems like a
popular one. Luckily that is not a fatal problem --- git has many
subcommands, so even if every proposal is about that, it could be
possible to subdivide the work and produce something interesting.
Some reading matter:
http://thread.gmane.org/gmane.comp.version-control.git/99608/focus=99682
http://thread.gmane.org/gmane.comp.version-control.git/169498/focus=169517
http://thread.gmane.org/gmane.comp.version-control.git/169498/focus=169762
http://thread.gmane.org/gmane.comp.version-control.git/170032/focus=170076
Is there some particular part of git functionality you would like to
focus on (history creation, history mining, object store maintenance,
configuration, transport)? The list of low-level commands (plumbing)
in the git manual might be a good place to get an idea of the scope.
The ideas page mentions areas in which libgit2 functionality is
incomplete --- depending on your interest, you might want to focus on
one of these (so the project would be to add functionality to libgit2
as well as using it) or to steer clear of them (to focus on
functionality libgit2 already has).
So, to make a long story short: there is something sneaky about us
presenting this idea, since there is so much room for choice. As your
project becomes more precise it should be possible for people on the
list to give more detailed advice.
Cc-ing the libgit2 list and Jeff King for more hints.
As for porting git to Android: that idea is less concrete to me. A
native Android app would presumably be in Java, so most likely your
best bet is to talk to someone involved in the JGit project[1].
Another note. Please feel free to venture beyond projects listed on
the ideas page. For example the 2010 ideas page contains some gems:
https://git.wiki.kernel.org/index.php/SoC2010Ideas#Several_small_projects_improving_msysGit
as does the 2008 page if you can get Nicolas Pitre on board :)
https://git.wiki.kernel.org/index.php/SoC2008Ideas#Implement_pack_v4.2Fv5_for_higher_compression
Really, if you name any git-related topic you're interested in,
chances are we can come up together with something valuable and
interesting to work on in that area.
Lastly, as far as patches go: yes, it would be excellent (and it would
show initiative) to offer an experience of what it is like to work
with you (if you end up finding time for this).
Git may misbehave; or while getting up to speed on some aspect of its
behavior you may find some documentation confusing; or you may wonder,
"why is this code doing such a slow/unreliable/otherwise insane
thing?" When the moment comes, look straight to
Documentation/SubmittingPatches and it will tell what to do. :)
Good luck with whatever project you decide,
Jonathan
[1] http://wiki.eclipse.org/Google_Summer_of_Code_2011_Ideas#Ideas_submission
http://eclipse.org/jgit/developers/
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-28 0:11 ` Jonathan Nieder
@ 2011-03-28 14:35 ` Jeff King
2011-03-28 20:26 ` Alexandru Sutii
1 sibling, 0 replies; 12+ messages in thread
From: Jeff King @ 2011-03-28 14:35 UTC (permalink / raw)
To: Jonathan Nieder; +Cc: Alexandru Sutii, git, libgit2
On Sun, Mar 27, 2011 at 07:11:53PM -0500, Jonathan Nieder wrote:
> The ideas page mentions areas in which libgit2 functionality is
> incomplete --- depending on your interest, you might want to focus on
> one of these (so the project would be to add functionality to libgit2
> as well as using it) or to steer clear of them (to focus on
> functionality libgit2 already has).
>
> So, to make a long story short: there is something sneaky about us
> presenting this idea, since there is so much room for choice. As your
> project becomes more precise it should be possible for people on the
> list to give more detailed advice.
Yes. I didn't write those ideas on the idea page, but I do like their
sneakiness. On the ideas I put up, I also tried to be a little bit
vague.
Because I'd really rather see a student not do a proposal based on one
of our ideas as a checklist of things to code. I'd much rather give them
a _problem_, then come up with and implement their own solution,
figuring out the requirements and the best way to go about it
themselves (with hints from the community, of course; none of us works
in a vacuum, and certainly somebody new to the project isn't going to
always know the best way to go about things).
But GSoC (IMHO) is not just about getting code written. It's also about
showing students what it's like to take part in open source projects,
and to see a problem in need of solving and scratch that itch. And from
the project's perspective, hopefully that gets the student addicted to
scratching itches and they keep doing it.
> Another note. Please feel free to venture beyond projects listed on
> the ideas page. For example the 2010 ideas page contains some gems:
I very much agree with this. Though I would caution students to talk to
the community a bit before doing a proposal for something out of the
blue. Because often people have tried and failed at something similar
before, and knowing the context helps. So post to the list and say "I am
thinking of doing X. Has anybody done something like it before? What
would be the best way to go about?"
-Peff
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-28 0:11 ` Jonathan Nieder
2011-03-28 14:35 ` Jeff King
@ 2011-03-28 20:26 ` Alexandru Sutii
2011-03-28 20:52 ` Vicent Marti
1 sibling, 1 reply; 12+ messages in thread
From: Alexandru Sutii @ 2011-03-28 20:26 UTC (permalink / raw)
To: Jonathan Nieder; +Cc: git, libgit2, Jeff King
> Is there some particular part of git functionality you would like to
> focus on (history creation, history mining, object store maintenance,
> configuration, transport)? The list of low-level commands (plumbing)
> in the git manual might be a good place to get an idea of the scope.
>
> The ideas page mentions areas in which libgit2 functionality is
> incomplete --- depending on your interest, you might want to focus on
> one of these (so the project would be to add functionality to libgit2
> as well as using it) or to steer clear of them (to focus on
> functionality libgit2 already has).
Hello again! Thanks for your and Jeff's reply.
I have decided on "minimal Git client based on libgit2" project. I have looked
over the git manual page and I would like to work on manipulation commands
functionality. I am also open for adding functionality to libgit2 as
well as using it.
I have read the references from your mail and I am currently trying to
understand project's architecture, as I am totally new to git's source code.
Hope I will manage to identify the source code parts that interest me in
a short time and maybe realize to implement something.
In the meantime I would greatly appreciate some guidelines where to look.
--Alex.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-28 20:26 ` Alexandru Sutii
@ 2011-03-28 20:52 ` Vicent Marti
2011-03-31 9:36 ` Alexandru Sutii
0 siblings, 1 reply; 12+ messages in thread
From: Vicent Marti @ 2011-03-28 20:52 UTC (permalink / raw)
To: Alexandru Sutii; +Cc: Jonathan Nieder, git, libgit2, Jeff King
Hey Alex,
I'm glad to see you're interested on the minimal git client task.
Here are some places to get you started on writing your proposal:
http://libgit2.github.com/libgit2/index.html (the full API
documentation -- priceless)
http://libgit2.github.com/api.html (the usage guide, with examples)
https://github.com/libgit2 (the list of language bindings, so you can
see real-life usage samples)
Also, I have to agree with Jeff once again: Start researching and
impress us with an awesome application that shows how are you planning
to solve the problem you are facing -- in this case writing a minimal
git client.
Remember that the sooner your application gets on Melange, the more
feedback it will receive!
Cheers,
Vicent
On Mon, Mar 28, 2011 at 11:26 PM, Alexandru Sutii <sutii.alex@gmail.com> wrote:
>> Is there some particular part of git functionality you would like to
>> focus on (history creation, history mining, object store maintenance,
>> configuration, transport)? The list of low-level commands (plumbing)
>> in the git manual might be a good place to get an idea of the scope.
>>
>> The ideas page mentions areas in which libgit2 functionality is
>> incomplete --- depending on your interest, you might want to focus on
>> one of these (so the project would be to add functionality to libgit2
>> as well as using it) or to steer clear of them (to focus on
>> functionality libgit2 already has).
>
> Hello again! Thanks for your and Jeff's reply.
>
> I have decided on "minimal Git client based on libgit2" project. I have looked
> over the git manual page and I would like to work on manipulation commands
> functionality. I am also open for adding functionality to libgit2 as
> well as using it.
>
> I have read the references from your mail and I am currently trying to
> understand project's architecture, as I am totally new to git's source code.
> Hope I will manage to identify the source code parts that interest me in
> a short time and maybe realize to implement something.
>
> In the meantime I would greatly appreciate some guidelines where to look.
>
> --Alex.
> --
> 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
>
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-28 20:52 ` Vicent Marti
@ 2011-03-31 9:36 ` Alexandru Sutii
2011-03-31 11:06 ` Motiejus Jakštys
2011-03-31 11:58 ` Vincent van Ravesteijn
0 siblings, 2 replies; 12+ messages in thread
From: Alexandru Sutii @ 2011-03-31 9:36 UTC (permalink / raw)
To: Vicent Marti; +Cc: Jonathan Nieder, git, libgit2, Jeff King
> Here are some places to get you started on writing your proposal:
>
> http://libgit2.github.com/libgit2/index.html (the full API
> documentation -- priceless)
> http://libgit2.github.com/api.html (the usage guide, with examples)
> https://github.com/libgit2 (the list of language bindings, so you can
> see real-life usage samples)
Hello again!
First of all thanks a lot for the references. You have helped me a lot.
> Also, I have to agree with Jeff once again: Start researching and
> impress us with an awesome application that shows how are you planning
> to solve the problem you are facing -- in this case writing a minimal
> git client.
>
> Remember that the sooner your application gets on Melange, the more
> feedback it will receive!
I began implementing the minimal git client[1]. I have implemented the
"git-mktag" command. For this I have modified the "mktag.c" file from
the "builtin" directory in order to make it run with libgit2. Basically the
input file verification code is the same with the original one. I have just
extracted the sha1, the object type, the tag name, the tagger, the
comment and created a tag with git_tag_create.
I have also used the original "usage.c" and "git-compat-util.h" for
error handling.
Is there a problem if the git2 client will reuse non-gitcore code, such
as string parsing code, parameter parsing code, etc?
Can someone look on my code and give me some feedback?
Just before ending the implementation of the mktag command I have
started thinking that maybe there was no need to reimplement this
command, as it can be considered that libgit2 already has this feature.
Even if it is so I am not sorry I did this, because by reimplementig it I
had the chance to get used with git code and with libgit2 API.
--Alex
[1] https://github.com/sutiialex/Git2
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-31 9:36 ` Alexandru Sutii
@ 2011-03-31 11:06 ` Motiejus Jakštys
2011-03-31 11:58 ` Vincent van Ravesteijn
1 sibling, 0 replies; 12+ messages in thread
From: Motiejus Jakštys @ 2011-03-31 11:06 UTC (permalink / raw)
To: Alexandru Sutii; +Cc: Vicent Marti, Jonathan Nieder, git, libgit2, Jeff King
On Thu, Mar 31, 2011 at 12:36:15PM +0300, Alexandru Sutii wrote:
> I began implementing the minimal git client[1]. I have implemented the
> "git-mktag" command. For this I have modified the "mktag.c" file from
> the "builtin" directory in order to make it run with libgit2. Basically the
> input file verification code is the same with the original one. I have just
> extracted the sha1, the object type, the tag name, the tagger, the
> comment and created a tag with git_tag_create.
Hi there,
I started git2 client a couple of days ago and implemented a rough
version of rev-list.c (which shows rev-list of HEAD. It is here:
https://github.com/Motiejus/git2/
Vincent van Ravesteijn forked and made some modifications:
https://github.com/vfr-nl/git2/
Thanks to him for CMakeLists.txt.
>
> I have also used the original "usage.c" and "git-compat-util.h" for
> error handling. Is there a problem if the git2 client will reuse
> non-gitcore code, such as string parsing code, parameter parsing code,
> etc?
I think this is what it has to be like. Provided it adds no
requirements and license issues.
>
> Can someone look on my code and give me some feedback?
You have done a good job in creating handlers and hooking up the
repository. Thank you.
>
> Just before ending the implementation of the mktag command I have
> started thinking that maybe there was no need to reimplement this
> command, as it can be considered that libgit2 already has this
> feature. Even if it is so I am not sorry I did this, because by
> reimplementig it I had the chance to get used with git code and with
> libgit2 API.
Don't know about the actual tag implementation, but in any case, the
wrapper (glue) code around the tag very helpful.
Best,
Motiejus
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-31 9:36 ` Alexandru Sutii
2011-03-31 11:06 ` Motiejus Jakštys
@ 2011-03-31 11:58 ` Vincent van Ravesteijn
2011-03-31 18:34 ` Alexandru Sutii
2011-03-31 19:27 ` Jeff King
1 sibling, 2 replies; 12+ messages in thread
From: Vincent van Ravesteijn @ 2011-03-31 11:58 UTC (permalink / raw)
To: Alexandru Sutii; +Cc: Vicent Marti, Jonathan Nieder, git, libgit2, Jeff King
On Thu, Mar 31, 2011 at 11:36 AM, Alexandru Sutii <sutii.alex@gmail.com> wrote:
> I have also used the original "usage.c" and "git-compat-util.h" for
> error handling.
> Is there a problem if the git2 client will reuse non-gitcore code, such
> as string parsing code, parameter parsing code, etc?
I guess the git2 client will consist solely of non-gitcore code, as
all the gitcore code will be part of libgit2 eventually.
I expect the transition to be not so difficult for many commands, but
the challenge I see is to do it not by 'reusing' git code, but by
'sharing' the code. Otherwise we end up with a second Git and someone
should spend a lifetime to keep the reused code in synchronisation
with the git repo.
This might, however, require some (major) refactorization to the Git
code. I don't know whether that will be supported by everyone.
On the other hand, we will get the bonus that using libgit2 in the
upstream git code is then becoming more trivial.
Maybe I'm aiming at too much here. It could well be that it is worth
writing the minimal git client to just be able to test libgit2 using
the git tests. Does anyone want to comment ?
Vincent
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-31 11:58 ` Vincent van Ravesteijn
@ 2011-03-31 18:34 ` Alexandru Sutii
2011-03-31 19:31 ` Jeff King
2011-03-31 19:27 ` Jeff King
1 sibling, 1 reply; 12+ messages in thread
From: Alexandru Sutii @ 2011-03-31 18:34 UTC (permalink / raw)
To: Vincent van Ravesteijn
Cc: Vicent Marti, Jonathan Nieder, git, libgit2, Jeff King
> I guess the git2 client will consist solely of non-gitcore code, as
> all the gitcore code will be part of libgit2 eventually.
>
> I expect the transition to be not so difficult for many commands, but
> the challenge I see is to do it not by 'reusing' git code, but by
> 'sharing' the code. Otherwise we end up with a second Git and someone
> should spend a lifetime to keep the reused code in synchronisation
> with the git repo.
>
> This might, however, require some (major) refactorization to the Git
> code. I don't know whether that will be supported by everyone.
>
> On the other hand, we will get the bonus that using libgit2 in the
> upstream git code is then becoming more trivial.
>
> Maybe I'm aiming at too much here. It could well be that it is worth
> writing the minimal git client to just be able to test libgit2 using
> the git tests. Does anyone want to comment ?
Hello!
There have been a lot on discussions on the mailing list regarding
on what this client should look like and I understand that we are
expected to come with a specific approach. Also I understand there is
no interest for this project to become large.
Considering this circumstances I think we should implement the client
with the basic commands by reusing git's high level code. I am for building
it independently of the git's mainstream.
Anyway I am open to any proposals. Comments are still welcome.
--Alex
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-31 11:58 ` Vincent van Ravesteijn
2011-03-31 18:34 ` Alexandru Sutii
@ 2011-03-31 19:27 ` Jeff King
2011-04-01 21:05 ` Vincent van Ravesteijn
1 sibling, 1 reply; 12+ messages in thread
From: Jeff King @ 2011-03-31 19:27 UTC (permalink / raw)
To: Vincent van Ravesteijn
Cc: Alexandru Sutii, Vicent Marti, Jonathan Nieder, git, libgit2
On Thu, Mar 31, 2011 at 01:58:23PM +0200, Vincent van Ravesteijn wrote:
> On Thu, Mar 31, 2011 at 11:36 AM, Alexandru Sutii <sutii.alex@gmail.com> wrote:
> > I have also used the original "usage.c" and "git-compat-util.h" for
> > error handling.
> > Is there a problem if the git2 client will reuse non-gitcore code, such
> > as string parsing code, parameter parsing code, etc?
>
> I guess the git2 client will consist solely of non-gitcore code, as
> all the gitcore code will be part of libgit2 eventually.
>
> I expect the transition to be not so difficult for many commands, but
> the challenge I see is to do it not by 'reusing' git code, but by
> 'sharing' the code. Otherwise we end up with a second Git and someone
> should spend a lifetime to keep the reused code in synchronisation
> with the git repo.
>
> This might, however, require some (major) refactorization to the Git
> code. I don't know whether that will be supported by everyone.
I had sort of assumed that git-core code would be taken as inspiration,
but that it would be an entirely new implementation, based around the
error handling and build infrastructure provided by libgit2.
And obviously libgit2 isn't going to provide everything you need. For
example, in the mktag implementation that Alex posted, there's still a
big verify_and_create_tag() function. I would prefer to see that code
broken into library-sized chunks and added to libgit2 itself, with the
eventual goal that mktag.c could consist of a very short main() function
that just parses options calls into the library (and yeah, I realize
that things are not always so simple, but it is a goal to work towards).
So when starting with a command, rather than trying to port code from
git.git, look at what it does and say "how would I do this in libgit2?
What else needs to be implemented in the library before I can do it?".
And then write the bulk of your code for libgit2, filling in those gaps
in functionality, and as a final step make the actual executable
command.
In this case, one of the things that is lacking is the die() error
handling. In general, that is not something libgit2 wants, because its
goal is to pass errors back up the call chain. Another thing that is
missing is option-parsing (though mktag doesn't need it). Again, not
something that libgit2 wants to use.
But maybe those are things that libgit2 should be providing to callers.
Or maybe they should be spun off into their own separate utility
library. But in either case, they should probably be pulled out of core
git, cleaned up to make them fit for library use, and then made part of
libgit2.
-Peff
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-31 18:34 ` Alexandru Sutii
@ 2011-03-31 19:31 ` Jeff King
0 siblings, 0 replies; 12+ messages in thread
From: Jeff King @ 2011-03-31 19:31 UTC (permalink / raw)
To: Alexandru Sutii
Cc: Vincent van Ravesteijn, Vicent Marti, Jonathan Nieder, git,
libgit2
On Thu, Mar 31, 2011 at 09:34:15PM +0300, Alexandru Sutii wrote:
> > Maybe I'm aiming at too much here. It could well be that it is worth
> > writing the minimal git client to just be able to test libgit2 using
> > the git tests. Does anyone want to comment ?
>
> Hello!
>
> There have been a lot on discussions on the mailing list regarding
> on what this client should look like and I understand that we are
> expected to come with a specific approach. Also I understand there is
> no interest for this project to become large.
It's OK if the project is large; it's inherently a big thing. But it's
important to bite off a small enough, useful chunk of it and work on
that. One, because you want something small enough to finish in the GSoC
time-frame. But two, because a small, solid start on a larger project is
much more useful to the community as a whole than a larger chunk that is
not-so-solid. Because people in the community (and you, if you want to
keep working on it!) may pick up the project from its state at the end
of the summer.
> Considering this circumstances I think we should implement the client
> with the basic commands by reusing git's high level code. I am for building
> it independently of the git's mainstream.
Yeah, I had always assumed it would build independent of git's
mainstream.
-Peff
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: GSoC questions
2011-03-31 19:27 ` Jeff King
@ 2011-04-01 21:05 ` Vincent van Ravesteijn
0 siblings, 0 replies; 12+ messages in thread
From: Vincent van Ravesteijn @ 2011-04-01 21:05 UTC (permalink / raw)
To: Jeff King; +Cc: Alexandru Sutii, Vicent Marti, Jonathan Nieder, git, libgit2
>> I guess the git2 client will consist solely of non-gitcore code, as
>> all the gitcore code will be part of libgit2 eventually.
>>
> I had sort of assumed that git-core code would be taken as inspiration,
> but that it would be an entirely new implementation, based around the
> error handling and build infrastructure provided by libgit2.
Looking at the above, I think we completely agree. When I wrote that the
gitcore code will get into libgit2, I indeed meant that it should be
rewritten in the libgit2 style and then be added to libgit2.
There was also temporarily the idea for GSoC to let Git use the
libgit2-library, or maybe to libify git on the road. That's why I
thought it might be useful if we were not going to rewrite the boring
administration code.
Thanks for thinking along,
Vincent
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2011-04-01 21:05 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-03-27 9:20 GSoC questions Alexandru Sutii
2011-03-28 0:11 ` Jonathan Nieder
2011-03-28 14:35 ` Jeff King
2011-03-28 20:26 ` Alexandru Sutii
2011-03-28 20:52 ` Vicent Marti
2011-03-31 9:36 ` Alexandru Sutii
2011-03-31 11:06 ` Motiejus Jakštys
2011-03-31 11:58 ` Vincent van Ravesteijn
2011-03-31 18:34 ` Alexandru Sutii
2011-03-31 19:31 ` Jeff King
2011-03-31 19:27 ` Jeff King
2011-04-01 21:05 ` Vincent van Ravesteijn
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 NNTP newsgroup(s).