On Tue, Oct 29, 2024 at 9:22 AM Samuel Abraham <abrahamadekunle50@xxxxxxxxx> wrote: > > On Tue, Oct 29, 2024 at 8:19 AM Christian Couder > <christian.couder@xxxxxxxxx> wrote: > > > > Hi Samuel, > > > > > > On Mon, Oct 28, 2024 at 9:07 AM Samuel Abraham > > <abrahamadekunle50@xxxxxxxxx> wrote: > > > > > > Hello Git Community, > > > I hope you are doing well. > > > > > > ## Introduction: > > > My name is Abraham Samuel, I am participating in the December 2024 > > > Outreachy internship program and > > > this is my proposal for the project "Finish adding os-version > > > capability to Git protocol v2". > > > > > > ## Contribution to the Git Community: > > > > > > I have participated in contributions to Git’s codebase after getting > > > accepted into the contribution phase in October 2024, working on what > > > I found doable and within my reach. Below is the list of my > > > contributions: > > > > > > - [PATCH v4] t7300-clean.sh: use test_path* helper functions for error logging. > > > > > > List thread: > > > https://lore.kernel.org/git/pull.1811.v4.git.1728498122419.gitgitgadget@xxxxxxxxx/ > > > > > > Status: merged into master > > > > > > Merge Commit: 77af53f56f100b49fdcf294f687b36064d16feca > > > > > > Description: The patch converted instances of “test - [def]” > > > in test cases to test_path_* functions to get error logs when the test > > > case fails when testing for the existence of a file or directory after > > > “git clean” or “git clean -d” is called as the case may be. > > > > > > > > > > > > - [PATCH v4] notes: teach the -e option to edit messages in the editor > > > > > > Status: integrated into Seen > > > > It looks like it has even been merged into 'next' and its status in > > the last "What's cooking in git.git ..." email is "Will merge to > > master?" > > > > It would be nice to give the branch name "sa/notes-edit" to make the > > topic easier to track. > > Okay thank you Christian. > > > > > List thread: > > > https://lore.kernel.org/git/pull.1817.git.1729296853800.gitgitgadget@xxxxxxxxx/ > > > > > > Description: The patch worked on a #leftover bit which added > > > the “-e” option to “git notes add” and “git notes append” subcommands > > > when the message is supplied with the -F and/or -m options. The patch > > > enables fine-tuning the message by invoking the user’s default editor > > > prefilling the message in the editor to allow editing the message to > > > the required taste before adding the note to the commit > > > > > > ## Project Overview: > > > This proposal outlines a plan to complete the work on the os-version capability > > > patch series for Git's protocol v2. Initially introduced in June 2024, > > > this feature intends to enhance > > > communication by allowing Git clients and servers to share their > > > operating system (OS) information. > > > The capability aims to provide metadata that can improve issues > > > diagnosis and enable statistical insights. > > > > > > This project will involve refining the original patch which already > > > started the process of adding this feature, > > > addressing Windows compatibility issues, and implementing > > > configuration options to customise how the OS is > > > shared. > > > > > > ## Intern objectives: > > > The key objectives of this project are; > > > 1. Finalize 'os-version' Capability: Modify the existing patch series > > > to meet community requirements and improve > > > functionality, ensuring compatibility with different OS environments. > > > 2. Add configuration options: Create options that allow users to: > > > - Share only the OS name by default (eg, "Linux", "Windows") > > > - Disable OS information sharing completely > > > - Include a more verbose OS version display using commands like > > > uname -srvm on Linux > > > > Making it possible to customize what is shared, for example something > > like "OS: Linux, Arch: x86_64" might be nice too. > > > > Okay thank you for the insight. > > > > 3. Fix Windows Compatibility: Review and resolve issues with the > > > current tests on Windows, ensuring full cross-platform > > > support > > > 4. Ensure Tests Coverage and Reliability: Create robust tests to > > > verify the feature's functionality across supported platforms, > > > incorporating community feedback to refine and improve the patch series. > > > > > > ## Approach and Methodology > > > 1. Analyze and retrieve the existing patch series: > > > - Retrieve patches from the Git mailing list > > > - Review the current code and community feedback to understand > > > necessary improvements and privacy concerns > > > > > > 2. Apply and test the patch on a new branch: > > > - Set up a new branch based on master to isolate the work on the > > > os-version feature > > > - Apply the patches and perform an initial round of tests to > > > determine specific errors and how to address them > > > > > > 3. Address Community concerns and implement improvements > > > - Implement feedback on sending only the OS name (eg, "Windows")by > > > default using uname or equivalent method on different OSes > > > - Add configuration options for users to adjust the level of > > > detail in OS information sharing > > > - Allow toggling the feature off for privacy or preference > > > - Ensure that configuration changes are well-documented and user-friendly > > > > > > 4. Resolve Windows Compatibility issues: > > > - Address current test failures on Windows, working closely with > > > community inputs to meet compatibility standards > > > - Modify any OS-specific code or test as needed, to work across environments > > > > > > 5. Develop and refine tests: > > > - Ensure the test case covers all functionality: OS name sharing, > > > version details and disabled state > > > - Conduct platform-specific tests on Linux, Windows and other > > > environments to confirm accuracy > > > > It might be nice to explain how you plan to test on different platforms. > > > > Okay I will dot that. > > > - Incorporate feedback from mentors and the community to finalize > > > the feature's functionality and robustness. > > > > > > 6. Document the feature and prepare for submission: > > > - Write documentation and examples for configuring the os-version > > > capability, explaining options and use cases > > > - Prepare the final patch series, following Git's contribution > > > guidelines for submission to the Git mailing list > > > > > > ## Timeline > > > 1. Community Onboarding: (Week 1 -2): > > > Tasks: > > > - Retrieve patches and create a dedicated branch > > > - Study past discussions and understand the improvements required > > > - Set up blog post to write about internship experience > > > 2. Initial Testing and Patching (Week 3 - 4): > > > Tasks: > > > - Apply Patches > > > - Run Initial tests > > > - Identify current issues, especially Windows compatibility > > > 3. Implement OS version configuration option (Week 5 - 7): > > > Tasks: > > > - Add options for OS name, detailed OS version and disabled state > > > - submit the initial patch series to the Git mailing list for review > > > 4. Windows Compatibility (Week 8 - 9): > > > Tasks: > > > - Review, debug and resolve Windows-specific issues > > > - Perform cross-platform testing and verify functionality > > > 5. Test Expansion (Week 9 - 11): > > > Tasks: > > > - Write comprehensive tests for OS version capabilities. > > > - Integrate tests to cover each configuration option. > > > - Submit initial patches for tests to the Git mailing list > > > - Implement community feedback and reviews on submitted test patches > > > 6. Finalizing and Documentation:( Week 12 - 14): > > > Tasks: > > > - Finalize code based on community inputs > > > - Prepare final patch patch submission with full documentation > > > - Complete my blog on internship experience > > > > > > ## Availability: > > > I will be available to work for a minimum of 30 hours per week and I > > > am not currently > > > enrolled in any academic activities or have any jobs. > > > > > > ## Post Outreachy: > > > The Git community fosters proper and effective communication, > > > regardless of one’s level of experience. The patience, guidance and > > > explanation of technical concepts shown by community members are > > > wonderful and this has made me grow not just technically but also > > > behaviorally. Due to this, I plan to continue actively participating > > > the in Git community and be part next generation of those saddled with > > > > Nit: maybe s/part next/part of the next/ > > Noted. > > > > > sustaining this great project and preserving its legacy. > > > > > > ## Appreciation: > > > A special appreciation to everyone on the mailing list for reviewing > > > my patches, the mentorship and guidance > > > I am grateful to you all. > > > > Thanks, > > Christian. Hello Git Community, I hope you are doing well. ## Introduction: My name is Abraham Samuel, I am participating in the December 2024 Outreachy internship program and this is my proposal for the project "Finish adding os-version capability to Git protocol v2". ## Contribution to the Git Community: I have participated in contributions to Git’s codebase after getting accepted into the contribution phase in October 2024, working on what I found doable and within my reach. Below is the list of my contributions: - [PATCH v4] t7300-clean.sh: use test_path* helper functions for error logging. Branch name: aa/t7300-modernize List thread: https://lore.kernel.org/git/pull.1811.v4.git.1728498122419.gitgitgadget@xxxxxxxxx/ Status: merged into master Merge Commit: 77af53f56f100b49fdcf294f687b36064d16feca Description: The patch converted instances of “test - [def]” in test cases to test_path_* functions to get error logs when the test case fails when testing for the existence of a file or directory after “git clean” or “git clean -d” is called as the case may be. - [PATCH v4] notes: teach the -e option to edit messages in the editor Status: integrated into next Branch: sa/notes-edit List thread: https://lore.kernel.org/git/pull.1817.git.1729296853800.gitgitgadget@xxxxxxxxx/ Description: The patch worked on a #leftover bit which added the “-e” option to “git notes add” and “git notes append” subcommands when the message is supplied with the -F and/or -m options. The patch enables fine-tuning the message by invoking the user’s default editor prefilling the message in the editor to allow editing the message to the required taste before adding the note to the commit ## Project Overview: This proposal outlines a plan to complete the work on the os-version capability patch series for Git's protocol v2. Initially introduced in June 2024, this feature intends to enhance communication by allowing Git clients and servers to share their operating system (OS) information. The capability aims to provide metadata that can improve issues diagnosis and enable statistical insights. This project will involve refining the original patch which already started the process of adding this feature, addressing Windows compatibility issues, and implementing configuration options to customise how the OS is shared. ## Intern objectives: The key objectives of this project are; 1. Finalize 'os-version' Capability: Modify the existing patch series to meet community requirements and improve functionality, ensuring compatibility with different OS environments. 2. Add configuration options: Create options that allow users to: - Share only the OS name by default (eg, "Linux", "Windows") - Disable OS information sharing completely - Include a more verbose OS version display using commands like uname -srvm on Linux 3. Fix Windows Compatibility: Review and resolve issues with the current tests on Windows, ensuring full cross-platform support 4. Ensure Tests Coverage and Reliability: Create robust tests to verify the feature's functionality across supported platforms, incorporating community feedback to refine and improve the patch series. ## Approach and Methodology 1. Analyze and retrieve the existing patch series: - Retrieve patches from the Git mailing list - Review the current code and community feedback to understand necessary improvements and privacy concerns 2. Apply and test the patch on a new branch: - Set up a new branch based on master to isolate the work on the os-version feature - Apply the patches and perform an initial round of tests to determine specific errors and how to address them 3. Address Community concerns and implement improvements - Implement feedback on sending only the OS name (eg, "Windows")by default using uname or equivalent method on different OSes - Add configuration options for users to adjust the level of the detail in OS information sharing - Add a custom option to allow users to customize shared OS information for example user can specify OS name only, OS name and architecture or OS name, architecture, distribution and version. - Allow toggling the feature off for privacy or preference - Ensure that configuration changes are well-documented and user-friendly 4. Resolve Windows Compatibility issues: - Address current test failures on Windows, working closely with community inputs to meet compatibility standards - Modify any OS-specific code or test as needed, to work across environments 5. Develop and refine tests: - Ensure the test case covers all functionality: OS name sharing, version details and disabled state - ensure test coverage on Linux, Windows and other environments to confirm accuracy by leveraging Git's CI pipeline to ensure tests work seamlessly across all platforms and output variations align with each environment. - Incorporate feedback from mentors and the community to finalize the feature's functionality and robustness. 6. Document the feature and prepare for submission: - Write documentation and examples for configuring the os-version capability, explaining options and use cases - Prepare the final patch series, following Git's contribution guidelines for submission to the Git mailing list ## Timeline 1. Community Onboarding: (Week 1 -2): Tasks: - Retrieve patches and create a dedicated branch - Study past discussions and understand the improvements required - Set up blog post to write about internship experience 2. Initial Testing and Patching (Week 3 - 4): Tasks: - Apply Patches - Run Initial tests - Identify current issues, especially Windows compatibility 3. Implement OS version configuration option (Week 5 - 7): Tasks: - Add options for OS name, detailed OS version, custom option and disabled state - submit the initial patch series to the Git mailing list for review 4. Windows Compatibility (Week 8 - 9): Tasks: - Review, debug and resolve Windows-specific issues - Perform cross-platform testing and verify functionality 5. Test Expansion (Week 9 - 11): Tasks: - Write comprehensive tests for OS version capabilities. - Integrate tests to cover each configuration option. - Submit initial patches for tests to the Git mailing list - Implement community feedback and reviews on submitted test patches 6. Finalizing and Documentation:( Week 12 - 14): Tasks: - Finalize code based on community inputs - Prepare final patch patch submission with full documentation - Complete my blog on internship experience ## Availability: I will be available to work for a minimum of 30 hours per week and I am not currently enrolled in any academic activities or have any jobs. ## Post Outreachy: The Git community fosters proper and effective communication, regardless of one’s level of experience. The patience, guidance and explanation of technical concepts shown by community members are wonderful and this has made me grow not just technically but also behaviorally. Due to this, I plan to continue actively participating in the Git community and be part of the next generation of those saddled with sustaining this great project and preserving its legacy. ## Appreciation: A special appreciation to everyone on the mailing list for reviewing my patches, the mentorship and guidance I am grateful to you all. Thanks Abraham Samuel