Hello everyone. Here is my proposal for GSoC. A review or criticism would be appreciated. Google doc version: https://docs.google.com/document/d/19Nkesmet7X7U42lsvksXoiEBrnOppKicWHYKneEQsQ8/edit?usp=sharing Best regards, Angel ---------- # Unify ref-filter formats with other `--pretty` formats ## Contact Information Full name: Yun Pan(Angel Pan) Email: [dinoallosaurus1111@xxxxxxxxx](mailto:dinoallosaurus1111@xxxxxxxxx) IRC: dinoallosaurus GitHub: dinoallo Timezone: UTC+8 ## Short Biography I am a first year student in Computer Science at Zhejiang University in China. It's my first time participating in GSoC. I have had experience working with C/C++, shell scripts, Python, Go and Perl. I am interested in writing CLI or system scripts/configurations, which is the main reason I apply to Git project. I might be relatively new when it comes to contributing on-line project. However, I am a quick and avid learner so if I don’t have enough skills to complete the job, I can self-learn immediately. ## Working Environment My operating system is Arch Linux, which I started using it about half an year ago. Before then I was using Debian-based systems like Ubuntu. And I have some experience using git on Windows as well. I mainly use Emacs and VS Code as my editor but I can use Vim also. I am able to use both markdown and Org-mode on Emacs for documenting ## Coding/Contributing Experience C is my *native* language I like to config my computer and automate some work on it by myself so I learned shell-scripts and other scripting languages. Now I write code related to back-end for the student club at my university. Since I used to develop web before, there is a small-project written in Python with Django on my GitHub page. From the experience of applying to git, I obtained much deeper knowledge about git and how it works. No matter what the outcome is, I am looking forward to contributing more to git and work with all the developers. ### Microproject Mailing list: https://lore.kernel.org/git/pull.595.git.1585588586605.gitgitgadget@xxxxxxxxx/T/#u GitHub: https://github.com/gitgitgadget/git/pull/595 Status: waiting to be review. ## Introduction Currently, the placeholder used in ref-filter expansion `%(foo)` has not yet supported in `--pretty` format. Using the new ref-filter formats has its own convenience. For example, the format `%(foo)` is more human-readable, easy to process, and extensible if we want to add some options in each placeholder(like `%(trailers:only=bogo)`) . Hence, users can just simply add the options in the placeholder if needed, reducing their frustration in constructing long and complex output command. My goal is to unify the the ref-filter formats with `--pretty` formats and generalized them in git: * Get rid of unrecognizable placeholders like `%an` to `%(authorname)`. * Introduce format-scripting(like the one used in `git-for-each-ref`) to `--pretty` and even make a field in user's configuration to use default format-script for `--pretty`. ## Deliverables/Timeline ### ~ May 5th * I will keep an eye on git project and make more patches to it if possible. * At the same time, getting to know more about the community and collaborating with others. * Also I will talk to my potential mentor, to get more concrete and constructive advise about my project. Last, finalize my project. ### May 5th ~ June 2nd Community-bonding period: After having rounded understanding about the community and all the past work, I would like to revise my previous ideas regarding to my project if there is a much better solution or other problems. Then, I will start to work on a part of my project: * Carefully examine `ref-filter` related code to see what I can learn from(the implementation, etc...) and what to avoid doing. * Replace the placeholders in `--pretty` with new formats and names. * Commit patches to obtain reviews from the community. ### June 2nd ~ June 10th The cushion period. Finish the unfinished work from last phase. If all the job is done, add test scripts and future documentation. ### June 11th ~ July 3rd I will be occupied in this phase since the final exams take over. I might not be able to work on some actual change but is free to reply to anyone in the community. ### July 3rd ~ July 17th * Gathering all reviews and criticisms from the community and revise my previous patches if needed. * Add test scripts and documentation. ### July 17th ~ July 28th * Implement the format-scripting in `--pretty` * Commit the patches to obtain reviews from the community ### July 28th ~ August 12th * Gathering all reviews and criticisms from the community and revise my previous patches if needed. * Add test scripts and documentation. * [option] configuration on pretty ### August 12th ~ August 25th Final revision and discussion. ### August 25th ~ Submission *If I complete my job earlier than I plan, than I would like to come up with more improvements and new features in my project.* ### Side-note * Before my summer vacation, I can code for 2-3 hours per working day and 4-6 hours on weekend. * My summer vacation starts from July 3rd to early September, which fits well with GSoC's schedule. I will be able to spend half of my day on my project. * English is not my first language so if I have grammatical or other errors in documentation or communication, a review will be appreciated. ## Conclusion First, I would like to say thank you to all developers that have helped me or replied to me in the mailing list. I want to join an active open-source community online for a really long time but I was too shy before and got caught up with the college entrance exam. I think GSoC is a good platform to start my journey. Though I was not able to get the information in time and it's late for me to commit my submission before deadline, I still decided to apply. Because if I hadn't, I would regret someday. As I mentioned before, maybe I have little experience to online-contributing, but I will learn the required skills to overcome obstacles. My lust for knowledge is my greatest power. Last but not least, it's a pleasure to join the open-source community. Let's collaborate and make the online world better. ----------