Wrapping up Open Source Development @ Seneca: Part 01

Wrapping up Open Source Development @ Seneca: Part 01

The planning phase

Introduction

As we approach the final stretch of our Open Source Development course at Seneca Polytechnic, it's time to tackle the most significant challenge of the term: Release 0.4. This release represents our opportunity to work on a major issue in an open-source project and leave a meaningful impact.

For this milestone, I have chosen to continue working on an issue I picked up during Release 0.3 for ChatCraft, a ChatGPT-inspired platform designed for developers.

In my previous blog post, Contributing to ChatCraft, I described my work on adding support for audio file uploads to ChatCraft, allowing users to submit voice inputs for transcription and AI responses. While I managed to implement the core functionality successfully, the issue evolved beyond its initial scope. The maintainers identified a deeper structural problem:

The AI logic was tightly coupled to a custom React hook, making it inaccessible to non-React contexts such as utility functions or backend services.

This coupling limited the flexibility and reusability of the AI logic, and the maintainers asked me to refactor it into standalone utility functions. While I agreed to take on this task, other commitments, such as academic deadlines and my participation in HackWestern delayed my progress.

Why I Chose This Issue

I’m choosing to continue with this issue for several reasons:

  1. Challenging Scope: Refactoring the AI logic is a substantial task that requires both a deep understanding of the existing codebase and the ability to implement scalable solutions. This aligns perfectly with the goals of Release 0.4.

  2. Impactful Contribution: By decoupling the AI logic from React-specific hooks, I’ll help improve the modularity and maintainability of ChatCraft, enabling the team to expand its functionality more easily in the future.

  3. Consistency: Since I’ve already invested time understanding the codebase and contributing to ChatCraft, it makes sense to build on that foundation for this final release.

  4. Personal Growth: Tackling this refactoring challenge will enhance my skills in React, JavaScript, and software design patterns, particularly around separating concerns and improving code reusability.

Goals for Release 0.4

Here’s what I aim to achieve over the next two weeks:

  1. Analyze and Plan:

    • Review the existing AI logic implementation in the React hook.

    • Understand all the dependencies and edge cases to ensure the refactoring doesn’t break existing functionality.

  2. Refactor the AI Logic:

    • Move the AI logic into standalone utility functions.

    • Ensure these functions are well-documented and tested for reliability.

  3. Update the Application:

    • Integrate the refactored utility functions back into the React components where needed.

    • Test the application thoroughly to confirm everything works as expected.

  4. Collaborate and Seek Feedback:

    • Maintain open communication with the ChatCraft maintainers through GitHub and discussions.

    • Submit a well-documented pull request for review.

How I Will Approach It

  1. Leverage Resources:
    I’ll rely on React’s official documentation to ensure best practices when decoupling hooks, along with articles and blogs written by people for guidance.

  2. Time Management:
    To stay on track, I’ll dedicate blocks of time specifically for this issue while balancing my academic workload. I’ve learned the hard way during previous releases that consistent effort beats last-minute sprints.

Looking Ahead

I’m excited to dive deeper into this challenge and contribute meaningfully to ChatCraft. By the end of Release 0.4, I aim to not only resolve the issue but also help set a strong foundation for future enhancements to the project.

Stay tuned for updates! I'll document my progress on my blog, and you can follow along as I tackle this refactor step by step.