I found a really interesting project on GitHub, but the implementation seems quite rough around the edges. There are images stored as base64 in the database, tons of raw SQL queries used instead of an ORM or migrations, and a React frontend with components that are over 600 lines long, with a lot of prop drilling and no reverse proxy setup. I got excited and ended up completely refactoring the backend, which improved performance significantly, and I plan to do the same for the frontend. However, I'm now facing an ethical dilemma. Sending a pull request (PR) that makes drastic changes feels like I'm critiquing the original work in a harsh way, especially since the project is still new. On the other hand, forking the project seems like it might detract from contributing positively to the original momentum. I genuinely want to see this project succeed, but the technical debt appears to be overwhelming. What's the best and most respectful approach to help this open-source project grow into something scalable and robust?
5 Answers
You could do both! Submit your PR for the improvements and fork it for your own development. This gives the original author control over what to accept.
To be honest, there's nothing wrong with some base64 or raw SQL if it serves a purpose. Just ensure your changes genuinely improve the project before submitting.
Why not reach out to the original author first? Many developers appreciate communication, and it would give you insight into how they might feel about your changes.
Break your refactoring into smaller PRs over several weeks. This way, you can gently introduce changes without overwhelming the original project and you can get feedback along the way.
I agree! Plus, it shows you’re willing to work collaboratively.
Fork the project, refactor it, and then submit a PR. It’s important to share your improvements! If the main developer doesn’t take it well, that’s on them. You're trying to help!

That’s a great idea! Smaller changes are easier to digest and might encourage the maintainer to be more receptive.