Week 4 - Git Exercises and Project Evaluation
Git Exercises
I use git on a daily basis and honestly, I can’t imagine what my workflow would look like without version control. So the git exercises in class weren’t entirely new to me, but they were still valuable. They helped me review commands I don’t use as frequently and gave me a better understanding of what’s actually happening under the hood.
The most interesting part was learning about how git stores data internally. I kind of curious about how git works before but never really bothered to dig deeper. Its also my first time to learn the git cat-file -t <hash> and git cat-file -p <hash> commands.
Project Evaluation
What excites me the most about contributing to open source is the idea of shipping something that other people actually use. There’s something satisfying about knowing your code is out there helping real users. It’s also a great addition to my portfolio for career development.
To be honest, none of the projects we evaluated in class felt like a great fit for me. Many of them require strong domain knowledge or are written in languages I’m not familiar with.
If I had to pick, NautilusTrader is a relatively good option. I have an interest in trading, so the subject matter aligns well. It’s mostly written in Python and Rust. I’ve never used Rust before, so I’d realistically only be contributing to the Python portion. Two main concerns: I’d need to dig deeper to understand the development dependencies on the Rust side, and the project is mostly maintained and developed by a single contributor, so it would be crucial to communicate with him early about expectations and the roadmap.
As for challenges in general, the biggest one is probably understanding unfamiliar codebases and following existing patterns and expectations. Communication is also key. We’re expected to make actual contributions within the semester. If the maintainers aren’t actively reviewing PRs or responding to issues, that’s a blocker.
That’s why choosing the right project is so crucial. My strategy is to pick something I’m already using or familiar with, and to make sure the project has maintainers who are actively communicating and reviewing contributions. Beyond that, I’ll figure out more specific strategies once I finalize my project selection.