Brendonovich / prisma-client-rust

Type-safe database access for Rust
https://prisma.brendonovich.dev
Apache License 2.0
1.84k stars 108 forks source link

Reason about Brendonovich/prisma-engines (fork) dependency #148

Closed vincent-herlemont closed 2 years ago

vincent-herlemont commented 2 years ago

NOTE: I try to understand in more detail the motivations around forking the official repo.

I see here Cargo.toml#L31-L37 that a fork of prisma/prisma-engines is used.

Here are some questions about that:

There is another project polytope-labs/prisma-client-rs that uses the official repo, did you have some input on it?

Brendonovich commented 2 years ago

There are a few reasons, but the one that makes it entirely necessary is dependency versioning. The engines contain a lot of dependencies sourced from GitHub that aren't locked to specific commits, instead they point to the main branch or some other branch. For example, quaint is a crate maintained by Prisma but is not locked to a specific version. This works for Prisma since they know what they're doing, but for Prisma Client Rust we're usually behind by a few versions. I really don't want breaking changes to quaint stopping the engines from compiling just because the engines version being used is older - I'm pretty sure if I hadn't locked the version of quaint this issue would have already happened. Additionally, features like sqlite-create-many are only possible because of modifications I've made to the engines. Yes I'm afraid of making too many changes such that it would be hard to merge updates, but I'm willing to put in the work to make sure Prisma Client Rust is more stable and has plenty of features. Oh also cloning prisma/prisma-engines is 400mb, whereas brendonovich/prisma-engines is more like 40mb.

vincent-herlemont commented 2 years ago

Thank you for your answer @Brendonovich .

Why didn't you submit your changes directly to the official repository?

Do you plan to do this?

Brendonovich commented 2 years ago

You're assuming that Prisma want to merge in my changes - at the moment all focus is on the needs of the JS client. I've spoken with Prisma and tried to merge some changes, but they just aren't interested. Plus even if they did accept the changes the repo would still be a way larger download size.