# Chromium IPFS Integration After a long period of refactoring by Igalia to improve handling of non-HTTP protocols in Chromium we are now able to more reasonably add IPFS support. There are a variety of ways to integrate IPFS, each with trade-offs in functionality and complexity. Below is a list of approaches, with a stab at comparing them in various ways. The approaches are not necessarily mutually exclusive, and could be combined and controlled through build configuration or end-user configuration. For example, Brave ships a gateway approach enabled by default, with user option to enable a full local Kubo node. "Embedders", as browser vendors building on Chromium are known in that ecosytem, need to balance ongoing cost and complexity of keeping out-of-tree code. It could be that the approaches below live as extra-tree patches for some period of time until multi-vendor adoption results in enough support to make it possible to land in the tree. ## Gateway: Simple Redirect In the Simple Redirect implementation, the `ipfs` scheme redirects to a single IPFS HTTP gateway. This implementation has no local IPFS functionality, is purely HTTP and can use the Chromium network stack. * Timeframe: 1mo * Complexity: 🟢 * Decentralization: 🔴 * Resilience: 🔴 * Data Ownership: 🔴 * Desirability: 🟢 - browser vendor interest ## Gateway: Racing Gateway Similar to the Simple Redirect, but connects to multiple IPFS gateways for a given request, opting for first response. This implementation has no local IPFS functionality, is purely HTTP and can use the Chromium network stack. More at https://hackmd.io/rxFtUuTdRTO4-nyAxPHNqQ * Timeframe: 3-6mos * Complexity: 🟡 * Decentralization: 🟡 * Resilience: 🟡 * Data Ownership: 🔴 * Desirability: 🟢 - likely browser vendor interest ## Full Node: Bundled Iroh Bundle Iroh, compiled into Chromium as a vendor library, not integrated into the Chromium network stack at all. * Timeframe: 6-12mos * Complexity: 🔴 * Decentralization: 🟢 * Resilience: 🟢 * Data Ownership: 🟢 * Desirability: 🟡 - pushes on Rust in Chromium and grows Iroh usage, but unclear if any browser would ship it ## Full Node: Bundled Kubo The approach Brave took to manage a local Kubo instance. * Timeframe: 6mos * Complexity: 🔴 * Decentralization: 🟢 * Resilience: 🟢 * Data Ownership: 🟢 * Desirability: 🔴 - duplicates what Brave did, other browsers not interested ## Full Node: Chromium-native Complete implementation IPFS as a full participant in the public DHT or equivalent level of functionality. * Timeframe: 24mos * Complexity: 🔴 * Decentralization: 🟢 * Resilience: 🟢 * Data Ownership: 🟢 * Desirability: 🟢