# IPFS Based Browser

**URL:** <https://discuss.ipfs.tech/t/ipfs-based-browser/1639>\
**Category:** Uncategorized\
**Created:** [December 15, 2017, 8:11am UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639 "2017-12-15T08:11:10Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![0zAND1z](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/0zand1z/32/6463_2.png) [@0zAND1z](https://discuss.ipfs.tech/u/0zAND1z)\
**Post date:** [December 15, 2017, 8:11am UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/1 "2017-12-15T08:11:10Z")

</div>

Hey all, do we have any plans for a IPFS Browser?

I’d like the NetScape time float over again… 🚀

Only this time neat and nice with support for Proxy and all… 🙂

---

<div class="post-metadata">

**Author:** ![0zAND1z](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/0zand1z/32/6463_2.png) [@0zAND1z](https://discuss.ipfs.tech/u/0zAND1z)\
**Post date:** [December 15, 2017, 8:11am UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/2 "2017-12-15T08:11:45Z")

</div>

FYI, happy to help and contribute. Rust and Go guy here 🖐

---

<div class="post-metadata">

**Author:** ![lidel](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/lidel/32/9853_2.png) [@lidel](https://discuss.ipfs.tech/u/lidel)\
**Post date:** [December 15, 2017, 10:43am UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/3 "2017-12-15T10:43:29Z")

</div>

Creating a new browser is a mixed bag: if you do it for something other than PoC then it requires a lot of resources to maintain. For now we are working towards integration with already existing browsers:

- Firefox and Chrome: we have a [browser extension](https://github.com/ipfs/ipfs-companion/) that relies on external `go-ipfs` daemon (for now).
- Brave: [an ongoing effort to run extension with embedded js-ipfs node](https://github.com/ipfs/ipfs-companion/issues/312)

There is also a [dedicated repo for tracking “browser efforts”](https://github.com/ipfs/in-web-browsers/), which may be a good place to discuss planning and more technical matters. Check it, maybe there is something you want to help with 🙂

---

<div class="post-metadata">

**Author:** ![0zAND1z](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/0zand1z/32/6463_2.png) [@0zAND1z](https://discuss.ipfs.tech/u/0zAND1z)\
**Post date:** [December 15, 2017, 2:43pm UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/4 "2017-12-15T14:43:39Z")

</div>

I like browsers too…! 👍  
How about Servo? Making any progress (I have a rusty feeling 😄)

---

<div class="post-metadata">

**Author:** ![stebalien](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/stebalien/32/156_2.png) [@stebalien](https://discuss.ipfs.tech/u/stebalien)\
**Post date:** [December 15, 2017, 8:26pm UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/5 "2017-12-15T20:26:17Z")

</div>

Servo isn’t really a browser at this point (and is far from stable). We’d end up spending more time working on servo than integrating it with IPFS. That’s why we’re currently focusing on brave and Firefox.

My personal worry about implementing a new browser from scratch is all the additional features we’d have to work on (extension support, spell checking, ad blocking, security, security, security…) in addition to simply integrating IPFS.

---

<div class="post-metadata">

**Author:** ![kyledrake](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/kyledrake/32/2390_2.png) [@kyledrake](https://discuss.ipfs.tech/u/kyledrake)\
**Post date:** [December 15, 2017, 10:37pm UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/6 "2017-12-15T22:37:06Z")

</div>

Calling it a browser is a always a little bit strange, because a browser really has the context of a client - an IPFS “client” is really an active node participating in the network. A true dweb “browser” would be a hybrid, somewhere between (to give an example using things people understand) a bittorrent client and a web browser. That said, I prefer to call it a web browser, it’s clean and people understand it, and shows how things could be by providing a useful frame of comparison. Users can be informed that it’s a highly specialized browser for IPFS stuff with only a single sentence on the web site they download it from. Framing the browser context isn’t a problem.

I agree that a implementation of a “full” web browser would be troublesome. But it’s important to understand what is meant by “full”. With development frameworks like Electron, you get a programmable browser engine (the lion’s share of the browser work already done) which you can use to write a browser-like application that would work to load IPFS content (allowing us full control over the user experience), and I do think it makes a ton of sense to build something like that.

The important goal for me is to be able to use IPFS the same way today’s web users expect it to work, which is largely indicated by how the IPv6 rollout is being done: You could type in a domain, an IP address, or an IPFS hash, and it loads according to a procedure chart, first checking (if a domain) for a DNSLINK record, then falling back to HTTP with an AAAA record (if IPv6 is enabled), then trying HTTP IPv4, even if you don’t use a scheme/protocol (such as ipfs://). You get a proper security origin and all the learned assumptions you get from flowing downstream with the users of today’s web, without requiring them to learn a bunch of new things. This would enable people to make sites that are IPFS enabled but can fall back. End users (and even most power users) don’t care about the implementation details and they don’t want to manipulate command lines and JSON files - the interface is what matters. They want to load a site without thinking about it. “Any sufficiently advanced technology is indistinguishable from magic.”

It would then (and this is the best part) have a nice interface for managing web sites pinned and created by the user. “bookmarks” would really just be “pins” in this context. Now we have users not just playing around with IPFS, but actively participating in the network and helping to build it in a truly distributed fashion.

This could be it’s own app, or it could even be integrated into existing electron apps (ipfs-station). With js-ipfs it could (really, should) be a completely self contained solution with no external dependencies. You get to use nodejs, which helps with a lot of the “browser network stack” headaches too.

Doing this would not be difficult at this point. The bulk of the important work is just having a nice design for the interface. It would be a trivial level of difficulty for a skilled CSS designer/UX. I’ve worked on projects far, far more complex than this. The remainder is just gluing the design into React components and putting together a pipeline for js-ipfs.

Finally, this creates a nice demostration that can be shown to everyone, including people working on the major browsers, so they can clearly see the value prop and I do think would help to increase interest in major browser dweb integration. In the future after major browser integration, it won’t be difficult to just migrate people over to that experience.

I posted some thoughts on this a while back: [https://github.com/ipfs/in-web-browsers/issues/53](https://github.com/ipfs/in-web-browsers/issues/53)

---

<div class="post-metadata">

**Author:** ![daviddias](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/daviddias/32/40_2.png) [@daviddias](https://discuss.ipfs.tech/u/daviddias)\
**Post date:** [December 18, 2017, 5:47pm UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/7 "2017-12-18T17:47:44Z")

</div>

@whyrusleeping mind sharing some points for go-ipfs here?

---

<div class="post-metadata">

**Author:** ![daviddias](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/daviddias/32/40_2.png) [@daviddias](https://discuss.ipfs.tech/u/daviddias)\
**Post date:** [December 18, 2017, 5:48pm UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/8 "2017-12-18T17:48:27Z")

</div>

Hi @0zAND1z!

Here is a out of the oven update on the IPFS integration for the Brave Browser - [https://github.com/brave/browser-laptop/issues/9556#issuecomment-352453877](https://github.com/brave/browser-laptop/issues/9556#issuecomment-352453877), make sure to check out the demo! [https://www.youtube.com/watch?v=2cmbm6iABsI](https://www.youtube.com/watch?v=2cmbm6iABsI)

---

<div class="post-metadata">

**Author:** ![0zAND1z](https://sea2.discourse-cdn.com/flex020/user_avatar/discuss.ipfs.tech/0zand1z/32/6463_2.png) [@0zAND1z](https://discuss.ipfs.tech/u/0zAND1z)\
**Post date:** [December 20, 2017, 10:56am UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/9 "2017-12-20T10:56:03Z")

</div>

\o/ That’s awesome! Congrats!

Maybe allow a download button to pull the ipfs content? (file or an entire folder - directly to host’s Downloads folder in a Zip?)

---

<div class="post-metadata">

**Author:** ![reload](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@reload](https://discuss.ipfs.tech/u/reload)\
**Post date:** [July 23, 2018, 9:47pm UTC](https://discuss.ipfs.tech/t/ipfs-based-browser/1639/10 "2018-07-23T21:47:45Z")

</div>

Hello. I’ve been working on this project [galacteek](https://gitlab.com/galacteek/galacteek) for a few months. It’s written in Python3/Qt5 and is fully asynchronous (it uses quamash, asyncio and aioipfs which i wrote).

I started writing the application to better understand how to write async GUI apps with python and qt5. I wanted to be able to browse resources on IPFS and create ipfs bookmarks that’s how it started There’s a file manager, media player and web browser and it’s integrated with the [ipfs-search.com](http://ipfs-search.com) search engine. Currently i’m working on taking advantage of the pubsub/p2p streams functionnalities of ipfs.
