{"thread":{"id":"52959","subject":"[GSoC][RFC][Proposal v2] Convert submodule to builtin","startedAt":"2020-03-09T13:10:47Z","lastAt":"2020-03-11T21:27:48Z","messageCount":2,"participants":["Shourya Shukla","Christian Couder"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"392962","messageId":"20200309131027.18994-1-shouryashukla.oo@gmail.com","threadId":"52959","inReplyTo":null,"subject":"[GSoC][RFC][Proposal v2] Convert submodule to builtin","fromName":"Shourya Shukla","fromEmail":"shouryashukla.oo@gmail.com","sentAt":"2020-03-09T13:10:27Z","receivedAt":"2020-03-09T13:10:47Z","isPatch":false,"sender":{"key":"shouryashukla.oo@gmail.com","avatar":"https://avatars.githubusercontent.com/u/43680618?v=4"},"body":"Hello everyone,\n\nThank you so much for reviewing my proposal Christian! :)\nApologies for the late reply, I was busty with exams for the past 10 days. This is the second\ndraft of my GSoC Proposal. I have acted upon Christian's advice and reviews of my proposal.\n\nChanges made:\n\t1. Improve project timeline\n\t2. Separate 'Overview' into 'Outline' and 'Previous work'\n\t3. Corrected grammatical errors and spelling mistakes\n\t4. Provided some links to relevant things asked for.\n\nGoogle Docs: https://docs.google.com/document/d/1vqu84h0E83BnNyuj19HkgoWsGYHsGgY2Jkc5kTB4fSs/edit?usp=sharing\n\nThanks,\nShourya\n\n-x-x-x-x-x-x-x-x-x-x-x-x-x--x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x-x\n\n\n# Convert submodule to builtin\n\n## Contact Information\n--------------------\n\nName          : Shourya Shukla\nMajor         : Computer Science and Engineering\nE-mail        : shouryashukla.oo@gmail.com\nIRC           : rasengan_chidori on #git & #git-devel\nMobile no     : <<mobile no>>\nGitHub        : periperidip\nLinkedin      : shuklashourya\nStackOverflow : rasengan__\nAddress       : <<address>>\nTime Zone     : IST (UTC +0530)\n\n\n## Background\n\nI am Shourya Shukla, a sophomore in Computer Science and Engineering at the Indian Institute of Technology Roorkee[https://www.iitr.ac.in/].\nI was introduced to programming at a young age and I have been trying to learn new concepts everyday since. My\ninterests include modern mobile networks, Internet of Things and system software development. I have been working\non a research project[https://github.com/periperidip/UAV-based-wireless-networks-2] which involves providing cellular network\naccess to users in a disaster-struck area via drones. I love low-level coding and FLOSS as well. I have been an active part of\nthe Git community since January of this year, contributing to Git.\n\n\n## Work Envinronment\n\nI am fluent in C/C++, Java and Shell script, and have an understanding of Python\nas well. I use Git as my VCS and Visual Studio Code with integrated GDB as my\nprimary code editor and Ubuntu 19.10 as my primary Operating System unless the\nwork specifically needs Windows.\n\n\n## Contributions to Git\n\nContributing to Git helped me understand a lot about how modern & robust software\nwork as well as how real world development takes place. I plan on contributing even\nmore to Git and make my contributions count. As of now, my contributions at Git are:\n\n---------------\nstatus: merged\ngit/git:\n[Microproject]: Modernise tests and use helper functions in test script.\nGitHub: https://github.com/git/git/commit/c513a958b69090c02ad422b0cd4622009bb4b9f5\nList: https://github.com/git/git/commit/c513a958b69090c02ad422b0cd4622009bb4b9f5\n\n\n## The Project: Convert submodule to builtin\n\n#### Outline\n\nGit was initially implemented directly in shell script with some instances of Perl as well. As times progressed,\nvarious platforms to run Git on emerged, _enter_, problems in production code. There were multiple problems with\ncompatibility of code across platforms(e.g.: POSIX-to-Windows path conversion issues). To fix this issue, it was\ndecided to convert these scripts into portable C code(the original intention C was developed with, to have portable\ncode and software).\n\nVarious commands have been converted as of now, such as add, blame, bisect(work in progress), etc. In my project,\nI intend to convert submodule into C fully, hence making it a ‘builtin’. \n\n\n#### Previous Work\n\nThere has been an ongoing work in the conversion of various Git commands such as 'add', 'commit', 'blame', etc. from\ntheir shell form into their C form. 'git submodule' is one of the commands left to fully convert into its C form.\nStefan Beller <stefanbeller@gmail.com> converted a large part of this command up until 2019. Prathamesh Chavan <pc44800@gmail.com>\nalso aided in the conversion of the command during his GSoC project in the year 2017. In its current state, four subcommands are\ndue for conversion, namely: 'add', 'set-branch', 'set-url' and 'summary'. Also, the Command Line parsing Interface needs improvements,\nsuch as better error messages and support for more subcommands.\n\nPrathamesh Chavan implemented and improved the subcommands summary, status, sync, deinit and some more. The relevancy of this to my project\nis that some helper functions(located in submodule.c) such as print_submodule_summary(),prepare_submodule_summary(), etc. have been implemented\nbeforehand. In the case of subcommand summary, the work left is to stitch these functions together and implement the main module_summary()\nfunction. I plan on working in a similar fashion by contributing changes to my GitHub handle as well as the refined versions to the List,\nso that my mentors are able to keep a track of my progress regularly.\n\n#### Project Timeline\n\nI have been studying the code of 'submodule.c', 'submodule--helper.c' and 'git-submodule.sh'\nsince the submission of my microproject. After studying the codes, I tried to devise an effective\nconversion strategy for 'submodule'. I noticed that 'submodule.c' contains various helper functions\nfor 'submodule--helper.c' whereas the latter houses the main \"converted\" command as of now.\n      \nTherefore, the timeline looks like:\t\n  \n  - Empty Period (Present - April 26)\n    --> I am writing a paper(of the project I have been working upon) for a conference which I have to finalise and submit by first week of April.\n    --> My end-semester exams begin on April 23 hence I might be a bit busy before a week or so before the start date.\n    --> I plan on starting the conversion of ‘summary’ in this period. Although, I am busy, I will try my best to implement\n        a basic scaffolding  and maybe even complete some good portion of the subcommand for the command and will keep my\n        mentors posted regarding the same.\n \n  - Community Bonding Period (April 27 - May 18)\n    --> Get familiar with the community\n    --> Improve the project workflow: make some timeline changes if necessary.\n    --> Finish implementation of `summary` subcommand\n   \n  - Phase 1 (May 19 - June 6)\n    --> Convert 'set-url' subcommand\n    --> Improve CLI parsing\n    \n  - Phase 2 (June 7- August 8)\n    --> Convert 'add' subcommand\n    --> Convert 'set-branch' subcommand\n    \n  - Final Phase (August 9 - August 17)\n    --> Improve and add Documentation(if there is any still left)\n    --> Apply final touch-ups to code\n\nIf there is some extra time left, I will try to implement some BONUS features.\n\n**BONUS features:** Consist of command touch ups and improving some bugs such as code\n                    sections with 'NEEDSWORK' tags.\n\n\n## Relevant Work\n\nI have divided the project into 3 subprojects(SP).\n\n    1. **SP 1:** Convert 'summary'\n    2. **SP 2:** Convert 'set-url' and and improve CLI(Command Line Interface) parsing   \n    3. **SP 3:** Convert 'add' and 'set-branch'\n    \nAfter discussions with Christian Couder, I plan to start SP1 before GSoC itself. Currently,\nI am studying the code in detail and constructing a scaffolding for this implementation.\nI aim to complete the leftover bits of SP1 during Phase 1 and SP2 & SP3 during Phase 2 of\nGSoC.\n\nAs Derrick Stolee advised[https://lore.kernel.org/git/nycvar.QRO.7.76.6.2001301154170.46@tvgsbejvaqbjf.bet/T/#m232941f6cdcf92b97b3531f6fc582935c06734cf],\nthe conversion may not be possible in one whole summer, hence, I think an early start might be needed to finish things in time if possible.\n\n\n## Availability\n\nThe official GSoC period starts from April 27 and ends on August 17. My vacations start\nfrom May 10 and will be over by July 13. I can easily devote 45-50 hours per week until\nthe commencement of my Semester. Other than this project, I have no commitments planned\nfor my vacations. I shall keep the community posted in case of any change in plans.\n\n\n## Post GSoC\n\nEven after the completion of Google Summer of Code, I plan on continuing my contributions\nto Git, on the technical front(in terms of code and documentation contributions) as well\nas on the social front(solving people's doubts/problems on the List as well as on StackOverflow).\nI vision to convert the remaining of the commands as pointed out by Dscho[https://lore.kernel.org/git/nycvar.QRO.7.76.6.2001301154170.46@tvgsbejvaqbjf.bet/T/#m637c5c97d42dc68aab85420b5ffcaeb34c270ad3]\nas well as improve the test files.\n\nI aim to develop mentorship skills as well as the ability to guide others and try to give back to\nthe community by mentoring and guiding others as well(by reviewing their code, helping them out, etc.)\n\n"},{"id":"393095","messageId":"CAP8UFD3gWbhyZX8t4e8hq8RW7Jy4802mDNQheRo891Th=q6HUQ@mail.gmail.com","threadId":"52959","inReplyTo":"20200309131027.18994-1-shouryashukla.oo@gmail.com","subject":"Re: [GSoC][RFC][Proposal v2] Convert submodule to builtin","fromName":"Christian Couder","fromEmail":"christian.couder@gmail.com","sentAt":"2020-03-11T21:27:29Z","receivedAt":"2020-03-11T21:27:48Z","isPatch":false,"sender":{"key":"christian.couder@gmail.com","avatar":"https://avatars.githubusercontent.com/u/208954?v=4"},"body":"Hi Shourya,\n\nOn Mon, Mar 9, 2020 at 2:10 PM Shourya Shukla\n<shouryashukla.oo@gmail.com> wrote:\n\n> Changes made:\n>         1. Improve project timeline\n>         2. Separate 'Overview' into 'Outline' and 'Previous work'\n>         3. Corrected grammatical errors and spelling mistakes\n>         4. Provided some links to relevant things asked for.\n\nThanks for the improvements!\n\n> # Convert submodule to builtin\n>\n> ## Contact Information\n> --------------------\n>\n> Name          : Shourya Shukla\n> Major         : Computer Science and Engineering\n> E-mail        : shouryashukla.oo@gmail.com\n> IRC           : rasengan_chidori on #git & #git-devel\n> Mobile no     : <<mobile no>>\n> GitHub        : periperidip\n> Linkedin      : shuklashourya\n> StackOverflow : rasengan__\n> Address       : <<address>>\n> Time Zone     : IST (UTC +0530)\n>\n>\n> ## Background\n>\n> I am Shourya Shukla, a sophomore in Computer Science and Engineering at the Indian Institute of Technology Roorkee[https://www.iitr.ac.in/].\n> I was introduced to programming at a young age and I have been trying to learn new concepts everyday since. My\n> interests include modern mobile networks, Internet of Things and system software development. I have been working\n> on a research project[https://github.com/periperidip/UAV-based-wireless-networks-2] which involves providing cellular network\n> access to users in a disaster-struck area via drones. I love low-level coding and FLOSS as well. I have been an active part of\n> the Git community since January of this year, contributing to Git.\n\nOk.\n\n> ## Work Envinronment\n\nMaybe \"Environment\".\n\n> I am fluent in C/C++, Java and Shell script, and have an understanding of Python\n> as well. I use Git as my VCS and Visual Studio Code with integrated GDB as my\n> primary code editor and Ubuntu 19.10 as my primary Operating System unless the\n> work specifically needs Windows.\n>\n>\n> ## Contributions to Git\n>\n> Contributing to Git helped me understand a lot about how modern & robust software\n> work as well as how real world development takes place. I plan on contributing even\n> more to Git and make my contributions count. As of now, my contributions at Git are:\n>\n> ---------------\n> status: merged\n> git/git:\n> [Microproject]: Modernise tests and use helper functions in test script.\n> GitHub: https://github.com/git/git/commit/c513a958b69090c02ad422b0cd4622009bb4b9f5\n> List: https://github.com/git/git/commit/c513a958b69090c02ad422b0cd4622009bb4b9f5\n\nBoth links are the same.\n\n> ## The Project: Convert submodule to builtin\n>\n> #### Outline\n>\n> Git was initially implemented directly in shell script with some instances of Perl as well.\n\nDo you talk about the `git submodule` command here? In Git there has\nbeen a lot of C code since the beginning.\n\n> As times progressed,\n> various platforms to run Git on emerged, _enter_, problems in production code. There were multiple problems with\n> compatibility of code across platforms(e.g.: POSIX-to-Windows path conversion issues). To fix this issue, it was\n> decided to convert these scripts into portable C code(the original intention C was developed with, to have portable\n> code and software).\n\nPlatform portability is only one of the reasons why some commands have\nbeen ported.\n\n> Various commands have been converted as of now, such as add, blame, bisect(work in progress), etc. In my project,\n> I intend to convert submodule into C fully, hence making it a ‘builtin’.\n>\n>\n> #### Previous Work\n>\n> There has been an ongoing work in the conversion of various Git commands such as 'add', 'commit', 'blame', etc. from\n> their shell form into their C form. 'git submodule' is one of the commands left to fully convert into its C form.\n> Stefan Beller <stefanbeller@gmail.com> converted a large part of this command up until 2019. Prathamesh Chavan <pc44800@gmail.com>\n> also aided in the conversion of the command during his GSoC project in the year 2017. In its current state, four subcommands are\n> due for conversion, namely: 'add', 'set-branch', 'set-url' and 'summary'. Also, the Command Line parsing Interface needs improvements,\n> such as better error messages and support for more subcommands.\n>\n> Prathamesh Chavan implemented and improved the subcommands summary, status, sync, deinit and some more. The relevancy of this to my project\n> is that some helper functions(located in submodule.c) such as print_submodule_summary(),prepare_submodule_summary(), etc. have been implemented\n> beforehand. In the case of subcommand summary, the work left is to stitch these functions together and implement the main module_summary()\n> function.\n\nIt is not very clear which subcommands have been fully converted into\nC. Could you list all the subcommands and tell for each one what work\nis left to do if any.\n\n> I plan on working in a similar fashion by contributing changes to my GitHub handle as well as the refined versions to the List,\n> so that my mentors are able to keep a track of my progress regularly.\n\nOk, do you plan to have a weekly updated blog or to just send weekly\nemail updates to the mailing list?\n\n> #### Project Timeline\n>\n> I have been studying the code of 'submodule.c', 'submodule--helper.c' and 'git-submodule.sh'\n> since the submission of my microproject. After studying the codes, I tried to devise an effective\n> conversion strategy for 'submodule'. I noticed that 'submodule.c' contains various helper functions\n> for 'submodule--helper.c' whereas the latter houses the main \"converted\" command as of now.\n>\n> Therefore, the timeline looks like:\n>\n>   - Empty Period (Present - April 26)\n>     --> I am writing a paper(of the project I have been working upon) for a conference which I have to finalise and submit by first week of April.\n\nYou mean the UAV project, right?\n\n>     --> My end-semester exams begin on April 23 hence I might be a bit busy before a week or so before the start date.\n>     --> I plan on starting the conversion of ‘summary’ in this period. Although, I am busy, I will try my best to implement\n>         a basic scaffolding  and maybe even complete some good portion of the subcommand for the command and will keep my\n>         mentors posted regarding the same.\n\nYou wrote above that Prathamesh Chavan already worked on the ‘summary’\nsubcommand, so this would be about starting to finish it, right? Which\ngood portion you think you could complete?\n\n>   - Community Bonding Period (April 27 - May 18)\n>     --> Get familiar with the community\n>     --> Improve the project workflow: make some timeline changes if necessary.\n>     --> Finish implementation of `summary` subcommand\n>\n>   - Phase 1 (May 19 - June 6)\n>     --> Convert 'set-url' subcommand\n>     --> Improve CLI parsing\n\nDo you mean implementing better error messages in CLI parsing?\n\n>   - Phase 2 (June 7- August 8)\n>     --> Convert 'add' subcommand\n>     --> Convert 'set-branch' subcommand\n>\n>   - Final Phase (August 9 - August 17)\n>     --> Improve and add Documentation(if there is any still left)\n>     --> Apply final touch-ups to code\n>\n> If there is some extra time left, I will try to implement some BONUS features.\n>\n> **BONUS features:** Consist of command touch ups and improving some bugs such as code\n>                     sections with 'NEEDSWORK' tags.\n>\n>\n> ## Relevant Work\n>\n> I have divided the project into 3 subprojects(SP).\n>\n>     1. **SP 1:** Convert 'summary'\n>     2. **SP 2:** Convert 'set-url' and and improve CLI(Command Line Interface) parsing\n>     3. **SP 3:** Convert 'add' and 'set-branch'\n\nI am not sure that the above adds much information to what is in the\nprevious section (Project Timeline). At least I think you might want\nto rename \"Relevant Work\" to something like \"Subprojects\".\n\n> After discussions with Christian Couder, I plan to start SP1 before GSoC itself. Currently,\n> I am studying the code in detail and constructing a scaffolding for this implementation.\n> I aim to complete the leftover bits of SP1 during Phase 1 and SP2 & SP3 during Phase 2 of\n> GSoC.\n>\n> As Derrick Stolee advised[https://lore.kernel.org/git/nycvar.QRO.7.76.6.2001301154170.46@tvgsbejvaqbjf.bet/T/#m232941f6cdcf92b97b3531f6fc582935c06734cf],\n> the conversion may not be possible in one whole summer, hence, I think an early start might be needed to finish things in time if possible.\n>\n>\n> ## Availability\n>\n> The official GSoC period starts from April 27 and ends on August 17. My vacations start\n> from May 10 and will be over by July 13. I can easily devote 45-50 hours per week until\n> the commencement of my Semester. Other than this project, I have no commitments planned\n> for my vacations. I shall keep the community posted in case of any change in plans.\n>\n>\n> ## Post GSoC\n>\n> Even after the completion of Google Summer of Code, I plan on continuing my contributions\n> to Git, on the technical front(in terms of code and documentation contributions) as well\n> as on the social front(solving people's doubts/problems on the List as well as on StackOverflow).\n> I vision to convert the remaining of the commands as pointed out by Dscho[https://lore.kernel.org/git/nycvar.QRO.7.76.6.2001301154170.46@tvgsbejvaqbjf.bet/T/#m637c5c97d42dc68aab85420b5ffcaeb34c270ad3]\n> as well as improve the test files.\n>\n> I aim to develop mentorship skills as well as the ability to guide others and try to give back to\n> the community by mentoring and guiding others as well(by reviewing their code, helping them out, etc.)\n\nOk.\n\nI think it might be interesting to add a bit more information about\nwhat should be done to implement the 'set-url', 'add' and 'set-branch'\nsubcommands.\n\nThanks,\nChristian.\n"}]}