3 ms·
I keep having this kinky fantasy of a GPL'd Rust ZFS re-implementation. Yeah, I know.
by speed_spread 3y ago
I keep having this kinky fantasy of a GPL'd Rust ZFS re-implementation. Yeah, I know.
- dralley 3y agoYou'd be more likely to get one for bcachefs. Kent has expressed some interest in Rust although he is (correctly) just focusing on finishing the filesystem first.
- koverstreet 3y agoyep, just waiting on gcc-rust support to land and then we'll be moving our Rust interfaces into the kernel
- dralley 3y agogcc-rs will take a few years, rustc_codegen_gcc is pretty close to being ready to go.
- speed_spread 3y agoI'm curious about which would stabilize more quickly, an all new filesystem or the reimplementation of an existing one in a different language? The reimpl has the advantage of having the original to compare and test with, but the fresh design can use a staged approach. Yet more hypothetical Friday-style questions.
- koverstreet 3y agoIncremental file by file rewrite, for sure.
- Someone 3y agoThere’s a lot of unexplored stuff w.r.t. the GPL license, but I doubt that would legally work for a rewrite of CDDL-licensed ZFS to a GPL license.
- speed_spread 3y agoAn implementation in a different language should be pretty clear of license constraints? No code shared is no code shared.
- Someone 3y agokoverstreet wrote “Incremental file by file rewrite, for sure.” That implies intermediate versions that have both CDDL-licensed ZFS code and new rust code. That rust code, inside the ZFS code base, can’t be GPL-licensed because of the incompatibility of the two licenses. As the writer of that code, you can separately license your code as GPL if you want, but not in a product containing any CDDL-licensed code (at least in the reading of the FSF. See https://en.wikipedia.org/wiki/Common_Development_and_Distribution_License#GPL_compatibility https://en.wikipedia.org/wiki/Common_Development_and_Distrib...) So, you could argue that you can license the full product as GPL once all CDDL licensed code has been replaced, and then continue working on that version. IMO, it is at the least unclear whether that’s legally true. (All personal opinion, not legal advice, etc)
- kmeisthax 3y agoEven if you finish your rewrite and then release it, the final product might still be a derivative work of the original, because "translations" are legally codified as derivative works. Of course, this is bounded by the merger doctrine and various court cases regarding software compatibility. If you can show that everything in your version has to be structured the same way as the original in order for it to read and write ZFS volumes, thus making it a sort of 'external interface', then you probably have good ground to stand on against Oracle. But things like source file structure or internal call chains are unlikely to constitute an interface in a filesystem driver. The closest legal example of a "file-by-file rewrite" would be BSD; but the lawsuit they got from UNIX System Laboratories was settled, so it creates no precedent. The reason why the reverse engineering crowd talks a lot about clean-room is because you naturally discover the interface boundaries as part of the development process. Legally speaking, you don't need two separate and isolated groups of people, but starting from a document of how the system 'should' work and then adding in implementation details that you actually need is a good way to avoid accidentally copying things you don't need to.