It has always been on my TODO list to create a fork of Substrate. As a generic blockchain framework, the codebase is overly Polkadot-specific. A lot of technical debts were accumulated over the years and no one dared to do any refactoring. The direction it is heading (with a lot of added “EVM junk” from Revive, for an otherwise pure Rust/wasm codebase) is something I really dislike.
Forking Substrate has historically not been possible. Well, you can of course do it. But the reality of the codebase means that it is not practically possible. This is because you’ll face the problem of upstream changes immediately. Say you spent time fixing years of technical debts and then refactored the structure to something to you liking – from this point on, it will fully diverge from Substrate. It’s not possible for your codebase to merge Substrate changes, and it’s also not possible for Substrate to adapt your changes. This is why you often only see other chains creating just a “thin fork” of Substrate (thin commit layer with just the necessary adaption needed).
Agentic coding completely changed this dynamic. They are really good at doing mechanical changes. This means the above mentioned “upstream problem” is no longer an issue at all.
I therefore finally got time to make a fork, hopefully steering this version of Substrate to a different direction that I like. It’s called Soil:
- We want to take time to do refactoring and to remove those years of technical debts. Clean crate boundary. No more circular dependency.
- Make certain components generally swappable, in particular the trie backend and the executor.
- A more lightweight and stable core library.
- And finally, be blockchain-agnostic – clearly separate Polkadot-specific stuff with other stuff you can truly reuse.
If you’re interested in joining “the force”:
- The repository: GitHub - soil-rs/soil · GitHub
- Discussion room: https://matrix.to/#/#soil-rs:matrix.org