My Experience as a Mentee in the LFX Mentorship Program with Crossplane

As someone passionate about open-source software, being a mentee in the LFX Mentorship Program, backed by the Linux Foundation, has been one of the most enriching experiences of my career. Through this program, I had the opportunity to work on the Crossplane project, a Kubernetes-based framework that empowers developers to manage and provision infrastructure through Kubernetes' API. This mentorship gave me hands-on experience and invaluable insights into contributing to large-scale, real-world projects.

Application Process

My application process to LFX Mentorships has a very long history to be honest. As far as I know I applied to the program 5 times (first one was to the Crossplane project) and got rejected from 4 of them. Each time I got rejected I learned things about different projects and tried to understand why I was not the selected mentee. These rejections made me learn the open source philosophy and created a mindset that always tries to be “useful” for the team while creating or improving a project.

While I may have been rejected many times, the only number that counts is how I eventually did get accepted. Even before mentorship projects were given to the LFX program by CNCF projects, I started looking for an issue that I thought would be useful, in my skill set, and achievable for a new contributor. This issue was Switch to the Renovate GitHub Action. I started on this issue and got it merged before the mentorship projects were given to the LFX. This greatly improved my chance of being selected to mentorship since I proved that I can be “useful” for the community and the project. I think this shows to the mentors that you are worth their time and they will be very happy to help you learn things and improve the project together.

Contributions to Crossplane

Here are some of the key PRs I worked on during my time in the program:

  1. Run Renovate as a Github Action:
    My first PR was about transferring our Renovate tooling from a hosted environment to a self-hosted Github Action so that we would be able to run make generate after Renovate generates PRs that bump dependencies
  2. Add unknown field check to beta validate
    This PR focused on adding a frequently requested feature to the validate command. This enables validate to inform developers about the typos and indentation errors at their schemas in addition to already existing validation logics, which have plagued Crossplane users for a very long time.
  3. download/cache full graph of dependencies at beta validate
    This PR enabled validate to download all of the deep dependencies of configurations so that we have a closer experience to real world usage and have all resources available while doing validations.
  4. Add configuration.meta/crossplane.yaml support for dependencies to beta validate
    This PR enabled validate to have support for meta files so that configuration writers can do validation before sending their configurations to the remote and move the validation experience even further to the left.
  5. Use more global cache directory at validate
    This PR is transporting the cache directory of validate from a workspace centered approach to a global cache approach.
  6. Download dependencies of providers and functions at beta validate
    This PR is actually very interesting. It started as a PR for adding support for downloading dependencies of providers and functions to a performance improvement PR which improved the speed of validate by 150x. Yes, you read that number correctly. I really enjoyed doing this.

Challenges and Learning

Like any new experience, there were challenges along the way. Familiarizing myself with such a large and complex codebase was hard at first. At times I was feeling like ‘I don't even understand how the things work how am I going to contribute??’ But I was eventually successful with guidance from my precious mentors Ezgi, Jared and others in the Crossplane community (especially Nic, Philippe and Jean), so much on both golang and Crossplane.

One of the biggest lessons I learned was the importance of clear communication. In a very short time I learned how to look at the software not just as a functional product but as a direct source of user experience, shaping how people feel and interact with technology. This realization greatly improved my perspective on software development, as I started to focus more on the user’s journey, ensuring every aspect of the software contributed positively to their overall experience.

The Importance of Mentorship in Open Source

Being a mentee in the LFX Mentorship program has been transformative. It has not only enhanced my technical skills but also introduced me to the collaborative and community-driven nature of open-source projects. I gained first-hand experience in contributing to a project that is widely used by organizations around the world. The mentorship also provided me with a network of passionate contributors from whom I learned a great deal.

Looking Ahead

As I conclude my time in the LFX Mentorship program, I feel prepared to continue contributing to Crossplane and other open-source projects. As a freshly graduated student from college, skills and knowledge I gained during this experience will no doubt influence my future contributions, and I’m excited to remain a part of the open-source community.

I encourage anyone interested in open-source development to apply for the LFX Mentorship program. Whether you are just starting or have prior experience, the mentorship will help you grow as a developer and contribute meaningfully to important projects.