{"thread":{"id":"52712","subject":"[GSoC] Exploring Previous year Projects","startedAt":"2020-01-29T17:13:04Z","lastAt":"2020-01-31T09:57:54Z","messageCount":6,"participants":["Shourya Shukla","Jakub Narebski","Johannes Schindelin","Derrick Stolee"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"390732","messageId":"20200129171248.6217-1-shouryashukla.oo@gmail.com","threadId":"52712","inReplyTo":null,"subject":"[GSoC] Exploring Previous year Projects","fromName":"Shourya Shukla","fromEmail":"shouryashukla.oo@gmail.com","sentAt":"2020-01-29T17:12:48Z","receivedAt":"2020-01-29T17:13:04Z","isPatch":false,"sender":{"key":"shouryashukla.oo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/43680618?v=4"},"body":"Hello,\n\nI was looking at the previous year projects[1] and a project intrigued me, namely:\n\"Convert scripts to builtins\".\n\nFollowing from Christian's advice[2], I have decided to focus on my project proposal.\nI noticed that various commands such as \"git bisect\", \"git web--browse\"(it particularly\ninterests me) are still in their \"shell\" form and will be needed to be converted into\ntheir \"C\" form as per the project description.\n\nI want to contribute in this project for GSoC '20, hence I want to know in which direction\nshould I proceed.\n\nThanks,\nShourya Shukla\n\n[1]: https://git.github.io/SoC-2019-Ideas/\n[2]: https://lore.kernel.org/git/CAP8UFD2Fo=2suQDLwzLM-Wg3ZzXpqHw-x0brPtPV0d4dRsgs9A@mail.gmail.com/\n"},{"id":"390741","messageId":"86k15ars55.fsf@gmail.com","threadId":"52712","inReplyTo":"20200129171248.6217-1-shouryashukla.oo@gmail.com","subject":"Re: [GSoC] Exploring Previous year Projects","fromName":"Jakub Narebski","fromEmail":"jnareb@gmail.com","sentAt":"2020-01-29T19:15:18Z","receivedAt":"2020-01-29T19:15:24Z","isPatch":false,"sender":{"key":"jnareb@gmail.com","avatar":"https://avatars.githubusercontent.com/u/2706?v=4"},"body":"Shourya Shukla <shouryashukla.oo@gmail.com> writes:\n\n> Hello,\n>\n> I was looking at the previous year projects[1] and a project intrigued me, namely:\n> \"Convert scripts to builtins\".\n>\n> Following from Christian's advice[2], I have decided to focus on my project proposal.\n> I noticed that various commands such as \"git bisect\", \"git web--browse\"(it particularly\n> interests me) are still in their \"shell\" form and will be needed to be converted into\n> their \"C\" form as per the project description.\n[...]\n> [1]: https://git.github.io/SoC-2019-Ideas/\n> [2]: https://lore.kernel.org/git/CAP8UFD2Fo=2suQDLwzLM-Wg3ZzXpqHw-x0brPtPV0d4dRsgs9A@mail.gmail.com/\n\nAs far as I know, \"git bisect\" is currently being converted from shell\nto C by Miriam Rubio for Outreachy project [3], so I am not sure if it\nwould be feasible as GSoC 2020 project.\n\nI'm not sure if it would be possible and if it would make sense to\nconvert \"git instaweb\" and/or it's helper script \"git web--browse\" from\nshell to C.\n\nI think trying to convert either \"git stash\" or \"git submodule\" to C\nwould make more sense.\n\n[3]: https://public-inbox.org/git/20200128144026.53128-1-mirucam@gmail.com/t/#u\n\nBest,\n-- \nJakub Narębski\n"},{"id":"390783","messageId":"nycvar.QRO.7.76.6.2001301154170.46@tvgsbejvaqbjf.bet","threadId":"52712","inReplyTo":"86k15ars55.fsf@gmail.com","subject":"Converting scripted commands to built-ins, was Re: [GSoC] Exploring Previous year Projects","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2020-01-30T11:10:06Z","receivedAt":"2020-01-30T11:10:14Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Kuba,\n\nOn Wed, 29 Jan 2020, Jakub Narebski wrote:\n\n> Shourya Shukla <shouryashukla.oo@gmail.com> writes:\n>\n> > Hello,\n> >\n> > I was looking at the previous year projects[1] and a project intrigued me, namely:\n> > \"Convert scripts to builtins\".\n> >\n> > Following from Christian's advice[2], I have decided to focus on my project proposal.\n> > I noticed that various commands such as \"git bisect\", \"git web--browse\"(it particularly\n> > interests me) are still in their \"shell\" form and will be needed to be converted into\n> > their \"C\" form as per the project description.\n> [...]\n> > [1]: https://git.github.io/SoC-2019-Ideas/\n> > [2]: https://lore.kernel.org/git/CAP8UFD2Fo=2suQDLwzLM-Wg3ZzXpqHw-x0brPtPV0d4dRsgs9A@mail.gmail.com/\n>\n> As far as I know, \"git bisect\" is currently being converted from shell\n> to C by Miriam Rubio for Outreachy project [3], so I am not sure if it\n> would be feasible as GSoC 2020 project.\n\nIndeed. That one \"is already taken\".\n\n> I'm not sure if it would be possible and if it would make sense to\n> convert \"git instaweb\" and/or it's helper script \"git web--browse\" from\n> shell to C.\n\nI agree, both of those scripts seem not to benefit all that much from\nbeing converted, while some people would still consider them to be\ndeveloped easier as shell scripts.\n\n> I think trying to convert either \"git stash\" or \"git submodule\" to C\n> would make more sense.\n\nOh, but `git stash` is already converted. The only two remainining shell\nscripts for which I would consider a conversion to C to make sense are\n`git submodule` and `git mergetool`.\n\nLarge parts of `git submodule` are already implemented in `git\nsubmodule--helper`, so that's a head start (thanks Stephan Beller!).\n\nThe `git mergetool` command is a bit trickier, as it consists of three\nscripts, really, with the `difftool--helper` depending on\n`mergetool--lib`.\n\nRealistically, I think that it would be possible for a GSoC student who is\nalready very familiar with the code base and with submodules to finish the\nconversion of `git submodule` in one season.\n\nThe same is probably not true for `git mergetool`: it would require a\ncouple of seasons to convert, and a good chunk of the first month would be\ntaken by planning a conversion strategy.\n\nAs of the current `master`, the `git-*.sh` scripts are:\n\n# In the process of being converted\n\ngit-bisect.sh\n\n# Candidates for being converted\n\ngit-difftool--helper.sh\ngit-mergetool--lib.sh\ngit-mergetool.sh\ngit-submodule.sh\n\n# Trivial conversions\n\ngit-merge-octopus.sh\ngit-merge-one-file.sh\ngit-merge-resolve.sh\n\n# Already deprecated\n\ngit-filter-branch.sh\ngit-legacy-stash.sh\ngit-rebase--preserve-merges.sh\n\n# Is this even needed anymore?\n\ngit-quiltimport.sh\n\n# Probably better to leave them as shell scripts\n\ngit-instaweb.sh\ngit-request-pull.sh\ngit-web--browse.sh\n\n# Not even Git commands\n\ngit-parse-remote.sh\ngit-sh-i18n.sh\ngit-sh-setup.sh\n\nThe situation of the Perl scripts to be converted is much nicer:\n\n# Already in code review\n\ngit-add--interactive.perl\n\n# Too complex/too dependent on the Perl packages\n\ngit-send-email.perl\ngit-svn.perl\n\n# Support for legacy SCMs that are less and less used\n\ngit-archimport.perl\ngit-cvsexportcommit.perl\ngit-cvsimport.perl\ngit-cvsserver.perl\n\nSo: after `git add -i`, I think we're done with the conversion of the Perl\nscripts. Took long enough ;-)\n\nCiao,\nDscho\n\n>\n> [3]: https://public-inbox.org/git/20200128144026.53128-1-mirucam@gmail.com/t/#u\n>\n> Best,\n> --\n> Jakub Narębski\n>\n"},{"id":"390808","messageId":"39a8c249-f0bc-fb0f-2ed5-5ecceb6d4789@gmail.com","threadId":"52712","inReplyTo":"nycvar.QRO.7.76.6.2001301154170.46@tvgsbejvaqbjf.bet","subject":"Re: Converting scripted commands to built-ins, was Re: [GSoC] Exploring Previous year Projects","fromName":"Derrick Stolee","fromEmail":"stolee@gmail.com","sentAt":"2020-01-30T15:14:22Z","receivedAt":"2020-01-30T15:14:26Z","isPatch":false,"sender":{"key":"stolee@gmail.com","avatar":"https://avatars.githubusercontent.com/u/570044?v=4"},"body":"On 1/30/2020 6:10 AM, Johannes Schindelin wrote:\n> Large parts of `git submodule` are already implemented in `git\n> submodule--helper`, so that's a head start (thanks Stephan Beller!).\n\nAs I recall, a bit part of what prevented more going into submodule--helper\nwas isolating the_repository and allowing multiple repositories in-memory\nat once. That effort has stalled since Stephan has moved to other things.\n(I will also admit that perhaps I am wrong: is it complete, rather than\nstalled?)\n\nI would be happy to see more progress in this area, and it could be a good\nway to get familiar with the codebase and submitting patches.\n\n> Realistically, I think that it would be possible for a GSoC student who is\n> already very familiar with the code base and with submodules to finish the\n> conversion of `git submodule` in one season.\n\nEven assuming the most generous definition of \"very familiar\" I'm not sure\nthis is the case. But I also don't meet the bar of \"very familiar\" when it\ncomes to the submodule code.\n \nSo, I'm sending this message just to say \"DRAGONS BE HERE\" and recommend\ntaking on a smaller project.\n\nThanks,\n-Stolee\n"},{"id":"390891","messageId":"nycvar.QRO.7.76.6.2001311007590.46@tvgsbejvaqbjf.bet","threadId":"52712","inReplyTo":"39a8c249-f0bc-fb0f-2ed5-5ecceb6d4789@gmail.com","subject":"Re: Converting scripted commands to built-ins, was Re: [GSoC] Exploring Previous year Projects","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2020-01-31T09:32:17Z","receivedAt":"2020-01-31T09:32:29Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi Stolee,\n\nOn Thu, 30 Jan 2020, Derrick Stolee wrote:\n\n> On 1/30/2020 6:10 AM, Johannes Schindelin wrote:\n> > Large parts of `git submodule` are already implemented in `git\n> > submodule--helper`, so that's a head start (thanks Stephan Beller!).\n>\n> As I recall, a bit part of what prevented more going into submodule--helper\n> was isolating the_repository and allowing multiple repositories in-memory\n> at once. That effort has stalled since Stephan has moved to other things.\n> (I will also admit that perhaps I am wrong: is it complete, rather than\n> stalled?)\n\nThere was definitely a push toward using `the_repository` in more places,\nessentially making the entire code base a bit more object-oriented. My\nimpression is that this effort has largely stalled since Stephan and Duy\nmoved to other things.\n\nHowever, this push is not exactly necessary to make `git submodule` a\nbuilt-in, much like `git push` can be a built-in even if it has to work on\ntwo different repositories when run locally: it simply spawns a `git\nreceive-pack` in the repository to push to, rather than handling two\nrepositories in the same memory space.\n\nThe same is true for `git submodule`, of course: it can very easily spawn\nprocesses for all the submodules. And that's what the `submodule--helper`\nalready does ;-)\n\n> I would be happy to see more progress in this area, and it could be a\n> good way to get familiar with the codebase and submitting patches.\n\nI am of two minds here. On the one hand, I am eager to get rid of issues\nsuch as https://github.com/git-for-windows/git/issues/1661, i.e. issues\nthat are solely due to Git requiring a Unix shell interpreter to run some\nsubcommands.\n\nOn the other hand... it is well known, I believe, what I think of\nthe design of Git's submodules feature. Putting an effort into making them\neasier to use will not change this design.\n\nIn my mind, it would make more sense to focus on making partial clone and\nsparse checkout a thing, and then combine it with a built-in version of\n`git subtree` to include dependencies' commit history. Yes, I do suspect\nthat git-subtrac is going the wrong direction from git-subtree.\n\n> > Realistically, I think that it would be possible for a GSoC student\n> > who is already very familiar with the code base and with submodules to\n> > finish the conversion of `git submodule` in one season.\n>\n> Even assuming the most generous definition of \"very familiar\" I'm not sure\n> this is the case. But I also don't meet the bar of \"very familiar\" when it\n> comes to the submodule code.\n\nHmm. I guess you're right, and it actually matches my earlier assessment:\nhttps://lore.kernel.org/git/nycvar.QRO.7.76.6.1904031957480.41@tvgsbejvaqbjf.bet/\n\nWhile it would be more satisfying for a prolific student to \"complete\" the\nconversion in 3 months, it does not _have_ to be rushed that way. There\nare tons of things to learn along the way, which is also part of GSoC's\nmission.\n\nThe good news is that it is not an all-or-nothing project. Just like the\nconversion of `git rebase` to C, which took several years, and the effort\nof several contributors (implementing merge-recursive in C, then the\nsequencer, then letting most of `rebase -i` be performed by the sequencer,\nthen the built-in `git am`, then the two GSoC projects to convert `git\nrebase` and `git rebase -i`, extracting and deprecating `rebase -p` and of\ncourse implementing the replacement for it: `rebase -r`), `git submodule`\n_can_ and should be converted incrementally.\n\n> So, I'm sending this message just to say \"DRAGONS BE HERE\" and recommend\n> taking on a smaller project.\n\nI can get behind that pretty good advice ;-)\n\nThanks for weighing in,\nDscho\n"},{"id":"390893","messageId":"nycvar.QRO.7.76.6.2001311055280.46@tvgsbejvaqbjf.bet","threadId":"52712","inReplyTo":"nycvar.QRO.7.76.6.2001311007590.46@tvgsbejvaqbjf.bet","subject":"Re: Converting scripted commands to built-ins, was Re: [GSoC] Exploring Previous year Projects","fromName":"Johannes Schindelin","fromEmail":"johannes.schindelin@gmx.de","sentAt":"2020-01-31T09:57:43Z","receivedAt":"2020-01-31T09:57:54Z","isPatch":false,"sender":{"key":"johannes.schindelin@gmx.de","avatar":"https://avatars.githubusercontent.com/u/127790?v=4"},"body":"Hi again,\n\nOn Fri, 31 Jan 2020, Johannes Schindelin wrote:\n\n> On Thu, 30 Jan 2020, Derrick Stolee wrote:\n>\n> > On 1/30/2020 6:10 AM, Johannes Schindelin wrote:\n> > > Large parts of `git submodule` are already implemented in `git\n> > > submodule--helper`, so that's a head start (thanks Stephan Beller!).\n> > >\n> > > [...]\n> > >\n> > > Realistically, I think that it would be possible for a GSoC student\n> > > who is already very familiar with the code base and with submodules to\n> > > finish the conversion of `git submodule` in one season.\n> >\n> > Even assuming the most generous definition of \"very familiar\" I'm not sure\n> > this is the case. But I also don't meet the bar of \"very familiar\" when it\n> > comes to the submodule code.\n>\n> Hmm. I guess you're right, and it actually matches my earlier assessment:\n> https://lore.kernel.org/git/nycvar.QRO.7.76.6.1904031957480.41@tvgsbejvaqbjf.bet/\n\nI vaguely remembered that I had described this project in a lot more\ndetail in a Git for Windows ticket, and I just spent a couple of minutes\nto coagulate it into a more concrete proposal here:\nhttps://github.com/gitgitgadget/git/issues/541\n\nCiao,\nDscho\n"}]}