-
Notifications
You must be signed in to change notification settings - Fork 10
Migrating users from centralized platform to unwalled.garden #51
Comments
@guoliu ❤️ thank you for the kind words! Let's dig in here...
I hope we can pass muster! With the 1.0 Beta, we started fresh with a lot of the pieces and I think have established a much more stable ground. We've got growing pains of our own, so I don't want to over-promise our current maturity, but I'm very optimistic about our future. Mafintosh, Andrewosh, and the team working on Hyper technology are very focused on production-quality results. That's all to say: you'll be growing with us, and I hope we'll be a good bet. To wit: the Unwalled Garden site is a bit outdated but should get refreshed soon with the latest, and I'll share what's planned in this comment.
That sounds right. It's "Hyper" instead of "Dat" now. Hyperspace is getting soft-launched today, and it should be the tool you'll want on the server side.
I'm actively developing a blog reader right now (hyper://3ea7dfeb5dd2791193295fe976c5e312938fe5948f19c29ab2647c0502df79bc/). It should feel much like historic RSS readers, and we're still deciding on how to approach things like comments and blog-discovery. Even our implementation will be a hyper app, so there's plenty of room to write your own reader if you're interested.
The goal is that you can choose to do either depending on what you want to accomplish. If you wanted to do it inside a web app, the solution would be to create a separate "profile drive" than the user's primary, which you can then leverage however you see fit. Compatibility with Unwalled Garden should be straight-forward: it defines an set of standards for publishing but doesn't exclude any kind of extension. Of the ideas you suggested, the hardest might be that we currently only use markdown (without HTML support) for blog posts. However, in microblogging (aka twitter) Unwalled Garden allows users to publish HTML which just gets displayed within an iframe. I would be very open to doing the same with blogging, which really opens you up to more customization. We may ultimately want to extend the markdown format, because I think it's intensely valuable to have a content format like .md which includes zero UI logic and is therefore safe to embed anywhere. The lack of support for common content like videos is a problem for markdown. So on this particular issue, what I'd do is start by adding .html support, then let the discussion move to extending markdown if we feel the need.
This is precisely the design we intend to leverage. Our belief is that "supernode services" are pretty key to a system like this because you're ultimately limited by the capacity of user-devices. I like to think of it as caching layers: the supernodes are effectively mega-caches for hyper:// data. We're going to be offering a supernode service which we upsell via Beaker, but it will be highly unopinionated (mainly rehosts hyper data and offers some generic services, like an AWS for consumers). For your use-case of handling discovery or bridging to the HTTPS web, there's a clear model of running your supernodes to provide that aggregation and HTTPS serving.
Not at all, these are very perceptive questions! Please feel free to ask additional questions or for elaboration on any of the points I made. |
@pfrazee thank you for your fast and detailed response 😄 Lots of information for me to digest! I'm starting to appreciate the design philosophy of Dat/Hyper stack more and more as I dig deeper, and really hope we can find a nice fit, as well as a good starting point to contribute and grow together.
Mounting HTML contents in iframe sounds very interesting, it opens the door to additional protection and style customization. Do you have examples of this? Curious to see how iframes work with
Treating the supernode services as caching layers makes total sense to me, the services should act as a persistent seeder. When bridging a centralized web app to a p2p app, sometimes the service also needs to act as a delegate of the user, updating the data for the user (more detail below). Is there a way to switch identify/key pairs in hyperspace? Looking at the hyperspace client API, it seems that there's no concept of identify 🤔 Since most of our users are not technology-savvy, I've also started to think about how we can make the on-boarding experience as smooth as possible, while allowing the user to switch freely between
Some parts in the above steps should be useful for migrating any For step 3, we use GraphQL as our data layer, so switching to I'm curious to know if the above process sounds reasonable, or if there's other projects solving similar problems 😀 |
I also have some questions for Beaker Browser in general, I'll post them here as well, but please feel free to direct me to other repos that are more suitable for these kind of questions.
|
Okay sorry for the longer turnaround this time, I'll answer briefly but hopefully with enough information.
It's pretty straight-forward, the iframes act like they would in any other web context.
At present, every hyperspace structure (ie a hyperdrive) has its own identity which is tied to the public-key URL. There's not currently any way to transfer the identity to some other key, and we're debating whether to solve this with DNS or some other means.
Your approach sounds reasonable, my one observation is that you'll probably just want to maintain the keypair on their behalf for now. We'll need to cook up some kind of protocol for transferring keys between devices safely.
All NAT traversal fails about 10% on average, no matter what the implementation is. Having "supernodes" available via TCP can solve this, as they effectively act as proxies by storing-and-forwarding data. So long as one supernode is reachable, the data will be reachable by everyone.
This has been an active discussion for a while and the reality is we don't have a solution yet. I haven't tested any VPNs or proxies yet, but we know it's something we'll need to tackle directly in the not-too-distant future. |
Finally got some time to try out the above ideas. After building a static site (exported from Next.js), I was able to share it on DAT. If I use If I open the DAT address in beaker browser, the site does render, but there are two problems:
Thank you! |
Hi everyone,
Thank you Paul for this exciting protocol and the excellent work on Beaker Browser! The 1.0 Beta version is amazing 😌
I'm a developer working on matters.news, a publication platform focusing on sane public discussions. It currently has around 40k register users and around 6m monthly visitor page views, mostly Chinese speakers around the globe.
We've been testing ways to bridge our users to p2p network, since we believe it's the only way moving forward as censorship intensifies and internet fragmentation continues (our site is already blocked in mainland China). We had a hard time choosing between Dat and IPFS, but decided to go with IPFS around 2 years ago. Since then we've integrated IPFS in our platform, utilizing public nodes to deliver contents, and prototyped a desktop client for publishing content without a server. But IPFS is still unstable albeit all the hype, and dynamic data with IPNS is far from production ready. Seeing the maturity of Beaker Browser and the proposal of unwalled.garden, we need to re-evaluate our decision.
Our original idea of the desktop application is essentially a WYSIWYG editor plus a RSS feed renderer, with some social features: an user can edit and publish content to her/his feed, subscribe to others' feed, and comment on others' content, which also gets published to their feed. We also need to bridge publications between matters.news and desktop client, so that the p2p network can have an attractive content base and user base to get through cold start.
From what I understand so far, the p2p RSS feed part is exactly what unwalled.garden is designed for. Instead of developing another desktop client, it looks like we can simply develop an unwalled.garden compatible web app, and direct our user to download Beaker Browser, enter the hash, while running a Dat daemon on our backend for migrating contents. But I still have several questions:
I'm still exploring all the amazing works done in Dat/Beaker Browser space, so please excuse me if my questions are not yet well informed 😄
The text was updated successfully, but these errors were encountered: