-
Notifications
You must be signed in to change notification settings - Fork 35
Public Database for Active Users #33
Comments
We'll see what we can do with hyperdb. Something like this would be pretty awesome but I'm not sure yet if it would work (hyperdb currently requires all writers to be added by the owner(s)). So, we're toying with ideas for a "publicly writable" hyperdb, but we're toying with some other similar ideas to do this kind of discovery. |
Not sure how something like this could work. Multiple writers of a hyperdb are still distinct hypercore feeds and thus not visible to others unless added by the "owner" of the database. None the less, the problem with the visibility of replies I think is not unsolveable. Such a search index, covering all posts, users and hashtags, could be used in various ways. Not only for searching, but also for visibility of replies, hashtags, discovery, ... An other problem with anything of this sort is spam and/or harmful actors. |
@fsteff yeah I wrote about that approach here https://pfrazee.hashbase.io/blog/achieving-scale |
I was thinking that a dedicated discovery service would be useful for something like this. I've written up my thoughts on it here, but the gist of it is you send a POST to an HTTP server saying you want to advertise your Dat URL for a certain "application" type. The server then checks your dat to make sure you have written to it proving that you own the dat. Then it writes your URL to it's own dat in a folder per application. Applications then get the server's Dat URL and search for keys within the folder for their application. That way a person can link to multiple discovery servers to help with more discovery, and even if the server goes down the actual data is still in a dat archive (and can be forked if needed). |
@RangerMauve I think that's a good idea. Basically a user directory service. Can I make some suggestions on the design? |
Whoops, I read that as |
Yeah it's looking good! Just two suggestions:
|
PSA support was definately a must have for me since I want to make it easy for others to integrate. The PSA stuff is really inspiring, by the way. :D What sort of lab APIs were you planning? A way for a site to register a type of PSA and a way for the browser to let the user plug in their own? I didn't know that well-knowns are regulated. What do you think about me placing it in |
I'm still thinking about exactly how that lab API should work. Maybe something where you can request a service of a given PSA, and a modal shows up prompting the user to select from known services or to enter the URL for one. For registering, I can definitely imagine something to add self and then beaker would prompt the user, like, "Add foo.com to your list of services?" Yeah |
Maybe when you request services you could provide a default? That way if it's a less-known service applications will still be guaranteed to work. The API would be used to trigger the browser to look into |
@RangerMauve yeah.... I wonder if there could be a business model for Beaker there- setting default services for PSAs? Either way if you put together this service (and commit to running it) I'd be happy to set you as the default. And yeah it triggers a fetch of the psa doc. |
Definately planning on running at least one instance once it's all figured out. I think that one of the benefits of this approach is that clients don't have to talk to the server unless they're reaching it for the first time or if they're adding a new dat. It also means that if a service becomes popular, it's more likely that there will be other peers out there seeding it and thus lowering the upload costs on the service provider. I've been thinking that this service would be how people could create "communities" or "forums" using decentralized tech. Basically, if you're building a community, you host a discovery service and have everyone join it to discover each other. You could add something like invitation codes or rate limiting over the API while keeping applications compatible with it since the discovery is just a matter of searching a folder. Could also be a business model to set up hosting for this stuff and administrative tasks. Not that I'd want to go that far with it any time soon. :P In terms of APIs, I think an ideal would look like |
One other thing I've kinda been thinking about, however. I think it would be better for offline-readiness if instead of using the service HTTP URL to get the dat archive, you used the service Dat URL and discovered the list of HTTP servers it relates to through that. That way the service wouldn't be able to give different dat URLs to different visitors, and you would never have to actually talk to the HTTP API unless you were going to add something to it. Not sure how that would fit into the PSA paradigm. |
Yeah that The offline-readiness argument makes sense but yeah, I'm not sure how to fit that into PSA at the moment. I'm inclined to save that for later |
are any of the attempts to make dht work in the browser compatible with the mechanics of beaker/fritter? https://github.com/xuset/web-dht |
@dorkmo We definitely plan to make it possible (using the DHT/discovery-net) to create sockets between users on a site. Whether we can setup a DHT to act like a general-purpose keyvalue store is an open question (ie a DHT to publish your dat site). We're also examining other solutions... it's a fairly hard problem to create a decentralized namespace that anybody can write to without getting overrun with spam. |
seems like some sort of captcha system is needed? could a client set and host their own captcha rules? there maybe be like a fully public captcha dht where you submit a permission request, then if anyone passes they can be added to the clients approved database. captcha submissions that dont pass are just ignored/deleted? maybe a simple 1 + 2 = ? and have it change based on the timestamp. |
would it make since for each user to have a hyperdb type database associated with their account, and the keys were all public so that any other client could edit it, then add their public key to the list when they want to become visible. So if the first user is not following the second user, the second user could reply to the first user, then auto add their key to the database so that the first user could see the second user's reply.
The text was updated successfully, but these errors were encountered: