maharmstone / quibble

Quibble - the custom Windows bootloader
GNU Lesser General Public License v3.0
2.14k stars 83 forks source link

would refactoring PRs be welcomed / accepted? #78

Open noonebtw opened 1 year ago

noonebtw commented 1 year ago

I think this is a really cool, impressive and interesting project, especially including the btrfs driver and ntfs2btrfs utility. But I also find the code incredibly hard to understand and read: there are functions with 20 arguments, functions that are multiple hundreds of lines long, .

I am considering attempting to rewrite this project (quibble) in either zig or rust as a personal exercise in learning about the windows bootloader, your project, and UEFI, but I actually think it would be more interesting to use C instead especially if it could be for more than just myself.

Would you be open to pull requests that are purely refactoring, or would I be wasting my time?

maharmstone commented 1 year ago

By all means have a go, but I'm not sure you'll find anything. It's complicated because it's inherently fiddly: we have to support many different versions of Microsoft's structures, and they complicated things by inserting things into the middle of structs. Hence all the references to blocks etc.

If I were to rewrite it from scratch, I'd probably do it in C++, and use templates and C++20 concepts to account for different versions of the structs. See https://github.com/maharmstone/btrfs/blob/master/src/tests/create.cpp#L62 for an example of what I mean. If you want an intellectual exercise, this might be something to look at it.

You're also welcome to create a version of Quibble in another language if you want, as long as you give it a different name.