Rotonde / rotonde-client

Rotonde Base Client
https://client-neauoire.hashbase.io/
MIT License
227 stars 49 forks source link

Redirecting to another rotonde #147

Open Lynncubus opened 6 years ago

Lynncubus commented 6 years ago

I've been using Rotonde before there was ever a windows build of beaker, ive build a few tools to browse and post on it without needing beaker, but it is still lacking and keeping up with the all time updating spec has been hard for me in combination with work and college.

Since i never created my dat in beaker i have no write permissions on it in there, i've done some research and digging around how to maybe get the right keychain for beaker to read, but that stuff goes way beyond me.

Since it would be a pain to completely create a new Rotonde instance and let everyone follow it manually, maybe allow us to redirect our Rotonde to a new dat url. By adding a "redirect" value to our portal.json with a target to a new dat url we could silently update every other portal to the new one by replacing the existing url in their feeds to the new one.

neauoire commented 6 years ago

Hey Lux,

I'm not against this idea. If I understand correctly, it would be a temporary url used in migration when moving from one computer to the next scenario? So people can follow you across your different dat sites?

Lynncubus commented 6 years ago

Yeah, the redirect is just used to replace the old one

pfrazee commented 6 years ago

(Beaker dev here) Sorry that it's not easier to export your dat keys. There's some challenges and unknowns that have kept us from doing the obvious thing (making the keys exportable). But, I think we're probably going to need to make an imperfect solution soon rather than waiting for a perfect solution later.

cblgh commented 6 years ago

i was thinking of taking the sameAs idea from ssb and adding to portals. it would look like

portal.json
{
  "name": "cblgh",
  "dat": "5555f715c36b6cd226102192ba220c73384c32e4beb49601fb3f5bba4719e0c5",
  "sameAs": ["7f2ef715c36b6cd226102192ba220c73384c32e4beb49601fb3f5bba4719e0c5", "1337f715c36b6cd226102192ba220c73384c32e4beb49601fb3f5bba47197331"]
...
}

if the portals in the sameAs array have this portal's dat address in their sameAs array (i.e. the relationship is mutual), then we will pull their posts and display them as if they were made by this user

you could expand this to display the feed as the sum of the port entries of the set of mutal portals as well

thoughts?

0x0ade commented 6 years ago

+1 on sameAs. My only nitpick is that we need to download the other's portal.json to check our sameAs against their sameAs. That means we're already pulling their posts. That's not strictly an issue, though.

Should sameAs portals be pulled recursively? Should sameAs portals be added to our port list for 1. faster loading; 2. connectivity when the "proxy" is offline? Adding sameAs to our port list could be abused to fill up the port list (DOS?).

Lynncubus commented 6 years ago

sameAs seems like a great idea! probably way better then the redirect i was first pointing too. This would be a great improvement, but we should indeed be careful about recursively looping trough them or maybe its better we take that out entirely, users can create a root rotonde and extend from there. This would simplify the process and we've got to be careful about bandwidth and dat archive size too.

cblgh commented 6 years ago

i think keeping it simple is a good idea as well. i will look at doing a basic implementation of sameAs during the week and see what issues i stumble into :)

cblgh commented 6 years ago

the action is happening here https://github.com/Rotonde/rotonde-client/tree/cblgh/feature/sameAs

it's potentially a deep rabbit hole so i'm trying to skirt its edges rather than fall down it

things that could be added

neauoire commented 6 years ago

@pfrazee is it possible to get the revision number of someone's beaker site?

webdesserts commented 6 years ago

@neauoire does the version field in the history() method work for you?

webdesserts commented 6 years ago

@neauoire

 let name = await DatArchive.resolveName('dat://www-webdesserts.hashbase.io/')
 let archive = new DatArchive(name)
 let history = await archive.history({ end: 1, reverse: true })

 console.log(history[0].version) // => 19

Yeah, this seems to be what you're looking for

neauoire commented 6 years ago

Yes! amazing thank you :) Nothing serious with this, but it's a good gage of activity overall.

fasiha commented 6 years ago

Sorry for barging in with probably nothing meaningful to add, but I was in a similar situation—needing to move a Dat from one computer to another without changing the archive ID since I'd publicized it—and used dat keys {import|export} per https://github.com/datproject/dat#key-management--moving-dats which made this a snap. sameAs is an infinitely better way to do this, but I wonder if people in this situation could use dat keys export in their original Dat and then, after cloning in Beaker, use dat keys import to give Beaker ownership of the archive? (Of course you'd want to delete the archive in the original computer to make sure you don't accidentally write to it and lead to forked feeds and subsequently the end of the universe.)