About this series
Welcome to the Rust Foundation’s first installment of the Community Grantee Spotlight series – a collection of blogs that will highlight the accomplishments and experiences of individuals who received a Project Grant or Rust Foundation Fellowship as part of our Community Grants Program. Each installment will feature an interview with an individual grantee about their progress, goals, and experiences in the program.
Our intention for this series is to celebrate our hardworking grantees while shedding light on the wide breadth of work they are collectively doing to benefit the Rust ecosystem. We hope you enjoy getting acquainted with these amazing individuals!
Note: The Community Grantee Spotlight series will not function as a comprehensive catalog of all our grants/amazing grantees, but instead will highlight a handful of individuals who expressed interest. Please stay tuned for a new page our team is working on that will include info on the grants we’ve issued to date. In the meantime, you can find our most recent announcement of Rust Foundation grants here – with more to be announced soon!
The Grant: #
Rust Foundation Project Grant (Awarded in June 2022)
The Grantee: #
Name: Sebastian Thiel
Location: Xi'an, China & Berlin, Germany
Fun fact: “Tried to rewrite Git in multiple languages, succeeding only with Rust.”
Special thanks to Pascal Kuthe & Sidney Douw for their hard work on the
gitoxide project! #
The Work: #
gitoxide project (a Rust implementation of Git) with a special focus on supporting shallow clones in Cargo.
You can find
gitoxide on GitHub here.
The Conversation: #
Q: Tell us a bit about your background with Rust prior to the Community Grants Program #
I’ve been with Rust from the very beginning – before it went 1.0. I don't remember how I discovered it, to be honest! But when I did, I realized that it was something really special and different. When I discovered Rust, I saw an entirely new paradigm in front of me. This is why I was willing to really hit a brick wall with my head over and over to learn it back then when there were far fewer resources than today.
At the time, there were a great number of missing education gaps and the compiler wasn’t as helpful in telling you what was wrong with the program. The borrow checker was also less powerful at that time, requiring many workarounds that aren't needed nowadays.
I started out with Rust in 2015 – a crazy seven years ago. Since then, I've stuck with it.
Q: Tell us about the background of
gitoxide ! How did this project come to be? #
gitoxide is a big project (one I’ve been with for two and a half years, mostly full-time!) I think it’s important to start with talking about why there’s a need for
gitoxide at all.
It started with a “eureka!” moment that I had when I first discovered Git about 15 years ago. Git was a total eye-opener for me. I thought, “this is what simplicity and ingenuity looks like. This is what version control should be”.
A few years into using Git, I became interested in having programmatic access to write applications that leverage Git as a data structure. I was using Python at the time, so I found a project called GitPython that I started contributing to early on in its history. I just threw myself in it, rewrote it in the process and became the last remaining maintainer to this day .
I now consider this to be a “sin of my youth” in a way because I really didn't know how to do these things properly. And a LOT of people use it. When I first looked into the numbers, the PyPi download statistics were at around a million per day. When I discovered this, I got a little freaked out – I realized that I had to be a bit more careful when I did new releases, because people were actually affected by this.
So I was sitting at the intersection of Python and Git, but I knew I would never be able to write the applications I had in mind. I kept trying to write Git in Go and in C++, but both dead ends. I started thinking “what’s the benefit of this pursuit if the best possible level I can hope for is the bar that Git sets?” A high bar to be sure, but I thought there had to be a higher level to reach.
Now, even though Git is dominating version control, it's written in C. In terms of adapting to the needs of modern computers, this is a big disadvantage. To rewrite Git in another language and reach my goal, I had to be able to accommodate the current reality of computing. Rust seemed like the only answer. Even so, I was daunted by the scale of such a project.
By this juncture, I had moved to China and that’s when COVID-19 hit. As we now know, China enforced rigorous lock downs, so I was literally locked in a house. It seemed like the perfect time to really give
gitoxide a go.
Q: Can you explain
gitoxide for the uninitiated? #
I think it’s easiest to say what
gitoxide is not.
gitoxide is not libgit2. It is the de facto API to write applications that interact with Git. But by now, it's kind of dormant and in maintenance mode. Many new features are not actually implemented.
gitoxide provides users with a nice API with the power to rewrite Git. It allows you to write your own tools for Git that act as naturally as they possibly can. And despite giving you all that power, the levers are below the surface and there if you need them. If you don't,
gitoxide functions exactly as Git would.
Q: What are some of the larger benefits and impacts you expect to see from
gitoxide ? #
gitoxide makes it so much more convenient to work with Git repositories and write applications that interact with it. Plus, thanks to Rust, it's safe by default.
Similar to the Rust compiler itself, if there’s something preventing
gitoxide from working, you will see a beautiful error message that shows you exactly what went wrong. It’s not only good for the user, but also good for you as a software developer.
gitoxide is also vastly more efficient with your computer’s resources than Git is. It grows with your computer, because it just uses all cores efficiently by default – that makes a huge difference.
I think in the long term, Git will have trouble matching the efficiency and experience of
gitoxide – even though I wish it would because more efficiency is good for everybody.
Q: What prompted you to apply for the Rust Foundation’s Community Grants Program? #
As an open source software developer, a father, and as a family man, I have to constantly figure out how to reach my programming goals without exhausting my own resources. This is why I’m always on the lookout for grants to fund my work, but I’m careful to choose them wisely.
When I heard about the Rust Foundation’s Community Grants Program, I was in the midst of asking myself what I could do to produce value for the Rust community right now. I was thinking deeply about the effort that would be the lowest hanging fruit for the Rust Project, the highest value for the cost, while still being sponsorable. Given the relationship between this program and the Rust community, there was no question in my mind that the Community Grants Program was worth applying to.
Q: What are you most proud of having accomplished under the program so far? #
gitoxide can clone repositories typically 1.5x faster than what you can do with Git, which I consider to be a game-changer. You can learn more about this exciting development here.
Q: What are your top areas of focus for the next phase of the program? #
Currently, I believe it’s massively important to finish the integration of
gitoxide into cargo and completely remove the dependency to the git2 crate, which would complete the work done in this phase.
Q: What has your experience as a Rust Foundation grantee been like so far? #
Even though I see the Rust Foundation as a stakeholder that is easily approachable, they are definitely as quiet as you allow them to be. This is an advantage in my case because I’m pretty self-driven when it comes to reaching my goals. That said, I’d like to gain more insight into the experiences of other grantees as it would help build upon the community feeling – that’s why I’m excited for the Community Grants Spotlight series!
Q: Name one new thing about Rust that you’ve learned from your work under the program. #
I finally picked up `cargo-fuzz` as a simple way to let a fuzzer find input that exercises all code-paths, even the ones I thought were impossible to encounter. This typically adds another layer of quality to make Rust code even better. It’s worth noting that the fuzzer never finds exploitable input, just input that can be handled more gracefully.
Q: What would you tell someone who is interested in applying for the Grants Program but is unsure about whether or not they “should”? #
From my perspective, most developers have a knack for analytical thinking. If there’s any kind of fear you’re experiencing that’s preventing you from applying for a grant like this one, try to squash it with analysis and a focus on the greater benefit of what you’d like to accomplish. If you find yourself getting down on your own knowledge or doubting your worthiness of a grant to fund your work, remember that even those you put on a pedestal doubt themselves. You’re not in this alone.
I’d also like to say that I think we as an industry need to do a better job of copping to our own fears and perceived weaknesses publicly. This would help the community almost as much as our open source contributions.
Q: Any advice for the next round of applicants to our program? #
From my experience, the Rust Foundation makes sure to pick projects with a wide set of goals and your idea might be just right despite being off the beaten path. It won’t hurt to fill in the form and see where it takes you, knowing that the Rust Foundation will be supporting you along the way no matter the outcome.
Q: If you had to pick one word (or maybe a few!) to describe your experience under the Community Grants Program, what would it be? #
Transparent. Trusted. Trusting. I do what I set out to do while receiving financial support. There is basically no overhead for me to be part of the Community Grants Program, and I can funnel all my energy towards my goals, which now are a part of the goals of the Rust Foundation, too.
Q: What excites you most about Rust/the future of Rust? #
Rust is being adopted at such a rapid pace despite being barely more than a toddler in computer-language age. Rust redefines software quality and what’s possible with our hardware, breaking performance records ranging from multiple orders of magnitude performance increases to multiples of it. This makes it an absolute game-changer, as it puts this power into the hands of people that previously would not have been able to accomplish such feats with existing technology, like C and C++.
Thank you to Sebastian for taking the time to chat with our team about his work under the Community Grants Program so far! We’re excited to publish more installments of our Grantee Spotlight Series in the near future. You can follow the development of the series here. #
About the Rust Foundation Community Grants Program
The Rust Foundation Community Grants Program provides access to new resources for the Rust community to maintain, innovate, collaborate over, and further develop the Rust programming language. While the Community Grants Program provides financial backing across several different categories (Events Support Grants, Rust Foundation Fellowships, Hardship Grants, and Project Grants) the overall mission is shared: to support the continued expansion of Rust and address key areas for development across the Rust ecosystem.
The Rust Foundation Community Grants Program is made possible by AWS, Huawei, and Google. Learn more about the program here. #
If your organization is interested in supporting the program, we'd love to hear from you! Please reach out to us at email@example.com to inquire about donation/support options. #