Decentralizing the web with Beaker

(changelog.com)

76 points | by feross 1962 days ago

7 comments

  • pfraze 1960 days ago
    A few developments worth sharing:

    - This week we managed to get a performance bump by moving the dat stack into its own process: https://www.youtube.com/watch?v=A1lVBr5BchE&feature=youtu.be

    - We're working on identity and user-filesystem tooling, discussed here: https://twitter.com/pfrazee/status/1058830217798660096

    - We're replacing our discovery network with a new DHT that handles hole-punching, and that's going to be exposed in a user-to-user messaging called PeerSockets https://github.com/beakerbrowser/beaker-core/pull/6 This is one of Maf's top two priorities right now. His other priority is a new version of the dat data-structure that will improve performance and lay the groundwork for multiple writers in a dat.

    • nil_pointer 1960 days ago
      Thank you for founding this project. I've been playing around with DAT, and using it with this the browser seems very promising. Keep up the great work.
  • p4bl0 1960 days ago
    Anyone knows a good comparison of Day, ZeroNet, and IPFS? Why did Beaker chose Dat rather than the other two?

    I've played with IPFS and ZeroNet (my web page is available on those networks too), but never with Dat.

    • vitovito 1960 days ago
      My understanding is that Beaker initially supported both Dat and IPFS, but dropped IPFS in favor of Dat for a variety of reasons, some of which were discussed in this other HN post: https://news.ycombinator.com/item?id=16434057

      From a user perspective, Dat (and ZeroNet) maps to folders and filesystems much more coherently than IPFS does. I evaluated a few systems for a single use case in this Twitter thread: https://twitter.com/vitor_io/status/1019271473771569153

      • p4bl0 1960 days ago
        > From a user perspective, Dat (and ZeroNet) maps to folders and filesystems much more coherently than IPFS does.

        How so? Once you have the hash of a folder in IPFS you can access its files and subfolders using the classic slash notation.

        Take for example my web page at /ipns/pablo.rauzy.name, the structure under that folder is exactly the same as it is on the classical web version of my web page, and is accessed in the same way.

        • vitovito 1960 days ago
          Access it, yes, but you can't update it. Dat and ZeroNet both let you maintain a single hash with dynamic contents.

          Your web page points to different hashes over time through IPNS, which is additional work for a user, and relies on IPNS instead of being part of IPFS directly.

          • p4bl0 1960 days ago
            Right. It's not possible to have both content based addresses (like IPFS) and identify based addresses (like ZeroNet, apparently Dat, but also Tor, I2P, and IPNS).

            To me as a user, IPNS additional work isn't much more than sitePublish and then siteSign in ZeroNet. The first is equivalent to ipfs add, the second to ipfs name publish.

  • mark_l_watson 1962 days ago
    Beaker is a nice project for self hosting, local authoring, etc. I have it installed on a laptop. Off topic, but I saw that they use NativeScript for portable web/iOS/Android apps - very cool, not seen that before and it goes on my long list of things to try.
    • pfraze 1960 days ago
      Are we using NativeScript? Not sure what you're referring to here.
  • staltz 1960 days ago
    When the internet is being mostly used (and increasingly more so) from mobile phones, why does Beaker focus on desktop? And further, do you think the web (both old web in conventional browsers and new web in Beaker) is desktop-first?

    (I've been wanting to ask this in person, but so far we haven't met, and I suppose other readers might think of this question too)

    • pfraze 1960 days ago
      Beaker is fundamentally a builder's tool. Right now, building means programming, and programming means typing- and typing means the desktop!

      I see mobile as primarily a communication platform, while desktop is for productivity. So, I think we should approach them differently. It's true that mobile growth is up, but I don't think that means that desktop is dying. Desktop still has a strong user base. At this point, I almost feel like desktop is the most neglected. We'll get to mobile when the time is right.

  • fouc 1960 days ago
    Beaker is a web browser, where the user can make & serve their own website from within Beaker.
  • explorigin 1960 days ago
    I like the idea of beaker but I want to store user data at a non-local user-specified endpoint. A gallery app is a perfect example. You want access to lots of data but you can't store it all locally in all locations that you want access to. Ideally the user would be able to specify their datastore rather than the app supporting specific ones. Blockstack does this but their solution is DOA for decentralization.
    • pfraze 1960 days ago
      I don't see Beaker as running counter to that idea; we just don't have tooling for that use-case yet. We could handle this mostly in userland: write a service that exports a filesystem API that's compatible with `DatArchive`, and then swap it out according to users' choices. I can imagine storing the user's service endpoints in their private dat for people to pick from (via apps).
      • explorigin 1960 days ago
        I didn't mean to imply that it ran counter to that idea, just that it's an unimplemented feature.
    • jude- 1960 days ago
      Blockstack engineer here. Curious what makes you say our solution is DOA? Anyone can register a username with a Bitcoin transaction or two, and anyone can run a Gaia hub of their own. Blockstack PBC provides defaults to help users get started, but we encourage power users to take things into their own hands.
      • explorigin 1960 days ago
        https://docs.blockstack.org/browser/ids-introduction.html#cr...

        AFAICT, You can't use the platform without authenticating to the centralized servers of blockstack. That runs against the whole idea of decentralized. With Beaker/IPFS/ZeroNet, you just need the software.

        It's been a while but last I checked, you had to register a domain (with $$$) to blockstack in order to run an app. Has this changed? Can I download the software and make my own X-Net with Blockstack now? (Not being snarky, I'd love to.)

        • jude- 1960 days ago
          > AFAICT, You can't use the platform without authenticating to the centralized servers of blockstack

          Nope, this is not true. You can authenticate to an application without a Blockstack Core node; the only thing the Blockstack Core node does in the authentication flow is to pull up someone else's public key and storage routes. You can choose which node to use for this; both the blockstack.js library and authenticator give you the option. I use my locally-running node, for example.

          > It's been a while but last I checked, you had to register a domain (with $$$) to blockstack in order to run an app.

          On-chain names are not free, but only because they require Bitcoin transaction fees (and shorter names require an additional Bitcoin "burn" to dissuade squatters). If you send two properly-formatted Bitcoin transactions, then all Blockstack Core nodes everywhere will process them once they confirm and register your name to your public key.

          Off-chain names can be given out for free, and do not require the user to wait for any transaction confirmations before using them to authenticate (this is what the product offers now by default). Off-chain names are first-class names like on-chain names, and have the same safety properties (they have slightly different liveness properties though -- details here: https://docs.blockstack.org/core/naming/subdomains.html).

          Today, if you register a Blockstack ID via Blockstack's authenticator product's onboarding flow, it will be an off-chain name that ends in `.id.blockstack`. Your signed state for this name, as well as other names registered at around the same time, will be hashed and anchored to an on-chain "name update" transaction for the "id.blockstack" name and replicated to all Blockstack nodes once the transaction confirms. Until it confirms, other nodes will redirect lookup requests on it to the registrar for id.blockstack (but once it confirms, any node will be able to handle lookups).

          > Can I download the software and make my own X-Net with Blockstack now?

          You can absolutely do this! Happy to help you out on our forum at forum.blockstack.org.

          • explorigin 1960 days ago
            Thanks for setting the record straight. I'll take another look at blockstack.
    • p4bl0 1960 days ago
      In ZeroNet you can specify optional files that will be downloaded only if needed and not by default when loading the website. Maybe Dat allows this too?
      • explorigin 1960 days ago
        Last I checked, ZeroNet didn't allow user-upload to somewhere else in a way that supports gigabytes. Text-snippits and gifs...sure.
        • xf86alsa 1960 days ago
          You haven't checked for quite a while then :)

          ZeroNet has supported movie-sized files and up with it's BigFiles plugin since early this year. It's effectively done torrent style, downloading chunks from multiple peers, but working over TCP, with optional Tor support built in.

      • fwip 1960 days ago
        Yep, dat supports on-demand fetching ("sparse mode" in the documentation).
  • Ne02ptzero 1959 days ago
    Paul Frazee [00:11:59.05]:

    > Yeah, so Mathias was working on that, while I was in the Secure Scuttlebut community… And then at one point I decided – well, Electron got to the point where I was like, you know what, _I think it’s actually possible to make a browser off of Electron_.

    What a day we live in, making a browser with browser-code. Who knew?