My Journey Begins: Community Bonding Period with DIPY#

Hello everyone, I am thrilled to share that I have been selected as a Google Summer of Code (GSoC) student for 2024. Over the summer, I will be working with DIPY, and I am incredibly excited about the journey ahead.

Community Bonding Period: Building the Foundation#

The GSoC program is structured in a way that allows us to gradually ease into our projects. The first phase, known as the Community Bonding period, is crucial for laying a strong foundation for the work that lies ahead. During this time, I had the opportunity to:

  1. Get Acquainted with the Community: I joined various communication channels like mailing lists, chat rooms, and forums. Interacting with the mentors and other community members helped me understand the culture and workflow of the organization.

  2. Understand the Project Scope: I spent time understanding the broader goals of my project, the expected outcomes, and the milestones I need to achieve. This involved several discussions with my mentor, Serge, who provided invaluable guidance and insights.

  3. Set Up the Development Environment: Getting the right tools and environment set up is critical for any development work. I followed the documentation to set up my development environment, ensuring I had all the necessary dependencies and tools installed.

Project-Task 1: Enhancing Keyword-Only Arguments with Decorators#

The focus of my 1st task is to implement the keyword-only arguments in DIPY. Specifically, I am working on enhancing this feature with the help of decorators.

What are Keyword-Only Arguments?#

In many programming languages, keyword-only arguments are parameters that can only be supplied using their name, not as positional arguments. This helps in making the code more readable and reduces the chances of errors.

The Role of Decorators#

Decorators are a powerful feature in Python that allows us to modify the behavior of functions or classes. By leveraging decorators, we can enforce the use of keyword-only arguments in a clean and efficient manner.

Progress So Far#

During the Community Bonding period, I have made significant strides in understanding the current implementation and identifying areas for improvement. Here’s a brief overview of what I have accomplished:

  1. Research and Analysis: I reviewed the existing codebase to understand how keyword-only arguments are currently handled. This involved reading through the documentation and studying the source code.

  2. Week 0: With the guidance of my mentor, I implemented a decorator that enforces keyword-only arguments. I have submitted a PR for review on this. The PR includes the decorator feature and relevant tests, it is also implemented for functions in stats module.

  3. Pull Request: [dipy/dipy#3239]

What’s Next?#

As we transition from the Community Bonding period to the Coding phase, I am eager to dive deeper into the project. My next steps for this task include:

  • Writing Tests: To ensure the reliability of the new feature, I will write more tests and integrate them into the existing test suite.

  • Documentation: Good documentation is key to the success of any project. I will update the documentation to reflect the new changes and provide examples of how to use the new feature.

  • Fixing style: I will fix the code styling format with accordance to PEP8.

Final Thoughts#

The Community Bonding period has been an enriching experience, allowing me to connect with my mentors and the community. I am grateful for the support and guidance I have received so far and am looking forward to contributing to DIPY over the summer.

Stay tuned for more updates as I continue this exciting journey!

Thank you for reading!