(scriptjs) Managing identity is probably the biggest challenge with these kinds of apps
simpson
Why manage identity at all?
pfrazee
pvh: yeah that one. There's a couple of reasons we havent gone with it. Maf has said he prefers the predictable hash lengths in data structures. We also went with base16 because it's case-insensitive, which is important for URL domains. We could add support for base32 too, but if we add multiple encodings then we have a lot more complexity in the system
pvh
i don't have any opposition to *storing* fixed length hashes, just being able to hand them in in well-defined ways
this is also really not a complicated thing. what i fear is a propagation of different applications handling things differently because base16 is a pretty gnarly solution
jimpick
cblgh: i'm trying out your chatmesh channel ... i don't see anything though
pvh
simpson: because i want to know who i'm talking to, sharing data with, etc
i think something is wrong on my end ... i can't see anything when i type and i can't ctrl-c it
simpson
pvh: You can't know who you're talking to, only what keys they've shown themselves to possess. You can't control who has your data, only which friends you trust.
cblgh
jimpick: did you run the first or second command?
simpson
Dat's a capability system, right? Why not stick to capabilities?
cblgh
the first one starts a server, the second joins one
jimpick
cblgh: the second one
cblgh
aight
pfrazee
pvh: the problem with base16 being the length?
jimpick
cblgh: substack said ... "if anyone wants to try, clone the repo then add to node_modules/hyperdb/index.js line 272: if (!self.feeds[head.clock[j]]) continue"
onabreak joined the channel
cblgh
ohhh
totally missed that
pfrazee
simpson: capabilities arent a strong enough guarantee for some cases because you have to share around the secrets. Authenticated connections use secrets that shouldnt ever leave the disk, so I personally find them more trustworthy
jimpick
it seems like i can type and do ctrl-c ... but if i hit enter to send a message, it freezes up then
pfrazee
capabilities are great in some cases, I just dont think they work for all cases
simpson: hey, i'm sure it wasn't your intent, but that felt like a really condescending way to try and share information.
pfrazee
heh yeah I have to agree. Let's assume I havent read it, what's the case against what I said?
simpson
pfrazee: Capabilities aren't different from any other PSK, e.g. passwords or secret URLs, so your argument would easily logically extend to not trusting any website which asks you to establish a password.
pfrazee
pvh: that's a fair point and I'd be open to looking at base32, but I do think it adds complexity because you have to consider encoding in your comparisons
simpson
pvh: Sorry, I'm not a nice person. I'll try to be more polite.
pvh
i wouldn't recommend passing around different formats internally
simpson
http://habitatchronicles.com/2017/05/what-are-c... 'If you’re like most people, the first thing you’re likely to think of is to ask the requestor “who are you?” The fundamental insight of the capabilities paradigm is to recognize that this question is the first step on the road to perdition. That’s highly counterintuitive to most people, hence the related controversy.'
pfrazee
simpson: right but my argument is that, when I share a capability, I have to send the token to somebody
simpson
pfrazee: Yes. e.g. when you share a Dat URL, you must transmit the URL to the person.
pfrazee
simpson: and I dont always feel secure about that because my friend might not know that I dont want the URL shared
simpson
pfrazee: Then you shouldn't share it with that person.
Hopefully, your capability system has good support for *attenuation* so that you can share only a subset of your Dat with them.
pfrazee
simpson: that's not realistic UX. As a user, I just want a system that lets me say "share it with bob only" and that's that
simpson
Consider: What stops your friend from, upon receipt of the Dat URL, immediately cloning all of the data and then discarding the URL? They'll still have all your data and still be able to share it arbitrarily.
jimpick
cblgh: hey, the chat seems to be working now
pfrazee
simpson: there's a conceptual difference in that action
jimpick
cblgh: can you see anything on your end?
simpson
(Also, as far as 'realism' goes, this kind of attenuation *exists* in Tahoe-LAFS.)
pfrazee
simpson: the user making that duplicate is very conscious that theyre moving the data to a new identity that they control. It's not the same action as sharing the link
simpson
pfrazee: How so? Either way, your friend Bob has all your data and the ability to share it arbitrarily. A capability to data is equivalent to knowing the data.
And it's not like people don't grok the concept; anybody who's handled e.g. a Google Docs URL can understand the concept of URLs as caps.
pfrazee
yeah except that google docs' share URLs still carry some concept of secrecy
my default expectation of a share url for a google doc is that it still isnt something theyd want shared around, unless they say "please do"
simpson
Yes, a terrible mistake on their end that can be excused by most Googlers still not knowing cap theory.
pfrazee
whereas a dat site is the reverse
cblgh
jimpick: nah i can't see you!
what the frek
jimpick
cblgh: i reconnected, and now i see all the messages
pvh
pfrazee: i think what you're talking about is how software mechanism can support a set of social expectations in extension of hard crypto capabilities
jimpick
i think perhaps i wasn't synced the first time
cblgh
jimpick: ahh i did the same and now i see you!
raaaaaaaaaad
bertschneider joined the channel
jimpick
this is very similar to the chat example we build with hypermerge
pvh
pfrazee: much like pinkie swearing doesn't create an iron-clad mechanically enforced contract
jimpick: which, btw, has come a long way! pretty stoked to share it here soon
cblgh
jimpick: i haven't seen that one!
pvh
jimpick: oh how is the electron / react-native stuff going?
cblgh
im stoked to hear about dat stuff being developed to work on phones
i think it's pretty essential
pvh
cblgh: yea, it was awful
working now though
jimpick
pvh: i ran out of time before the portland trip ... i'm going to work on it again on saturday
pfrazee: i think a lot about your notion that beaker browser can have soft "please don't fork this repo, it's not licensed that way" blocks
like sure you can just modify the browser to ignore the licenses and desires of the authors but that's 1) breaking the licensing terms and 2) shitty behaviour
jimpick
`npx hm-chat 0485a7401efba5f7899b22aa7cbcf372884555a3a035bb14533f6c18d750f937` if you want to join a chat with me now
simpson
pvh: Somebody (probably me) will write a one-click fork button eventually.
Wait, Beaker's not open-source?
jimpick
(using npx to get people to join a chat session is probably a security anti-pattern)
taravancil
simpson: lots of people have done that in apps already
jimpick
simpson: beaker is open source
simpson
taravancil: Ah, excellent.
pvh
simpson: yes, but only people who are willfully violating the desires and licenses of the authors and providers of that data will do so
millette
pvh even if the content is not licensed to be shared, a user should be able to copy it at will anyway (fair usage and all that).
simpson
pvh: I didn't know Dats could be licensed. Are there docs on this?
pvh
IP can be licensed
taravancil
simpson: there are not, just a discussion we've been having
pvh
dat is not a licensing tool
millette
simpson, like anything else
pfrazee
pvh: yeah I think the soft blocks could be pretty cool
pvh
but i could put a LICENSE file into the dat, for example
pfrazee: we used to call this "locking the screen door" at songbird
simpson
Okay, so there *aren't* technical things in the way. Then yeah, this all sounds like a desire to ignore how data caps work. :c
millette
it's p2p, of course it's going to be copied
pvh
still, there are a variety of differing desires for privacy and control over data
pfrazee
pvh: hah good term
pvh
one use case i'm very interested in is sharing data solely between my devices
simpson
Yes, but what is the point of desires compared to what the code can actually do?
millette
p2p drm ftw?
pfrazee
simpson: social pressures and reputation (and law) all matter
simpson
To share data just between devices you own, don't give the Dat URL to anybody else, right? Just like with an SSH key.
pfrazee
the idea of the soft block is to have a way to specify your wishes without technical enforcement
and then the browser respects that within some limit
millette
pfrazee, it could default to automated license detection (à la github) to show a "soft" block
pfrazee: I'm having trouble separating your position from that of some politicians who insist that the law can trump mathematics. Will you maintain your stance if Dat becomes a system with caps which do not just bear data, but can *compute* or otherwise authorize real-world actions?
pfrazee
simpson: basically there are multiple gradients of enforcement to these systems. We design the software to support authenticated connections, capabilities, and encryption for secure access-control. That's a required foundation. But beyond that, there are cases where either you dont want to go to the trouble of strict security, or strict security cant handle what you want
cblgh
jimpick: that was really cool haha
pfrazee
people who publish photography, for instance, cant stop you from downloading the picture in order to see what it is, but they want you to pay a royalty if youre going to use it in your news piece / website / whatever
simpson
pfrazee: There is no gradient to capability invocation, though; either an agent *does* have a capability, in which case they may definitely invoke it, or they don't, in which case they can't.
jimpick
cblgh: thanks!
simpson
pfrazee: In this particular example, there are piles of things that can be done, including not releasing all photos for preview, releasing only thumbnails or crops, watermarking previews, etc. all of which have in common that the data transmitted to the client is somehow mangled or lossy.
pfrazee
so paying for licenses or royalties, and having people not share if they havent paid, is a usecase which is easier to enforce socially than it is to enforce technically, barring some innovative work (I'd never say never)
simpson
So why are you encoding social norms into your technology, then?
pfrazee
simpson: social norms get encoded automatically
simpson
(Remember, cap theory developed in the context of virus-proofing systems. Virus authors have no regard for social norms!)
pfrazee
the norms you're encoding are that only what is technically enforceable should ever be used
the norms I'm suggesting we encode allow for people to make requests of each other
simpson
Hey, that's just how information theory goes. Again, it's mathematics.
pvh
simpson: all technology encodes social norms
in fact, all technology is built by people and for people. it's really quite remarkable when you think about it. mathematics on its own just sits there not really helping anyone and waiting to be put into practice.
simpson
pvh: What social norm is encoded by, say, the Fourier transform? (I'd answer that it encodes how our ears work!) Or perhaps the Y combinator? Is concrete a social norm?
pvh: My point is not that we should worship maths, it's that maths has laid out some rules and that those rules appear to behave in the absolute regardless of which computational model we pick.
Or, if you like, I'm trying to encode the social norm that people generally do not forget things which they have seen!
What's being encoded by this project is the removal of trust in social connections.
It removes trust as a constraint to software.
simpson ^
millette
It's not so much if you can copy this or that (you can, in a p2p world - to look at something is to copy it), but rather what you can (or should) share.
if there's a soft block, it probably should go on the publishing side
damons *nod*
damons
In the concept of Generalized Certification Theory (see http://www.mcg.org.br/cie.htm), trust is simply “that which is essential to a communication channel but which cannot be transferred from a source to a destination using that channel.”
--Ed Gerck, PhD.
millette
nicely put
damons
Spot on. It's the best definition I've found yet, and I've been researching this for years. Ed is great. Must read.
I'm hacking up a CLI that layers trust axioms on top of dat.
pvh
damons: sounds interesting, but the site is not loading for me
damons
Oh.. Sorry.. that link was a cut and paste from the article. It may be stale.
I'll find another copy.. sec.
pvh
damons: i'd love to hear more about that. one property of the system i'm building is that it composes a lot of hypercores and right now if you accidentally disclose one you can spider from there to anywhere referred to from there without anyone ever finding out
damons
pvh: That's the problem I've solved. ;-)
pvh
an out-of-band key is something i'd really like to have
anything on github
?
damons
Putting it up there now... just shaking out all the broken bits... and detritus from two years of hacking it together.
pvh
pfrazee: i'm going for lunch with alex russel of PWA fame and i plan to show him beaker. anything in particular you'd like the chrome team to know / think about?