#social 2018-10-10

2018-10-10 UTC
ahihi2, Loqi_, ahihi, jdormit_mobile, Guest84, vt, xmpp-social, cwebber-specops, dmitriz and sumanah joined the channel
#
dmitriz
I have a general Mastodon question. does it matter which server one signs up with? can you still follow people on other servers?
jdormit_mobile joined the channel
#
nightpool[m]
this is not really a good place to ask general mastodon questions.
#
nightpool[m]
we're also about to have a meeting, fyi.
#
rhiaro
dmitriz: you're correct, you can follow people on any server, regardless of the server you sign up with
#
dmitriz
ok, excellent
#
rhiaro
that's kind of the point :)
#
cwebber2
socialcg time...
#
dmitriz
w00t
#
Loqi
😄
#
cwebber2
=========== MEETING LOGGING STARTS ===========
#
cwebber2
scribenick: dmitriz
jdormit_mobile joined the channel
eprodrom joined the channel
#
eprodrom
present+
#
dmitriz
first topic: sec: prefix
#
melody
present+
#
cwebber2
present+
#
dmitriz
eprodrom: there's an outstanding issue for security prefix, so maybe I can talk a bit about that
#
cwebber2
present+ sumanah
#
cwebber2
present+ sandro
#
dmitriz
eprodrom: where we got stuck last time, and where we can hopefully get to this time
#
dmitriz
present+
#
dmitriz
eprodrom: we have a system for ActivityPub for signing requests, using HttpSignatures
#
dmitriz
eprodrom: has become the standard way for server-to-server authn (for push, sending messages, etc)
#
dmitriz
eprodrom: we're using this external namespace (the W3C Security namespace)
#
dmitriz
eprodrom: somebody brought up the issue the last time, that it would not be sufficient to just drop in the sec: namespace (because of id parameters)
#
dmitriz
eprodrom: so the question was whether we should jump ahead & include the entire sec: vocabulary in there
#
cwebber2
ack cwebber2
#
dmitriz
cwebber2: I agree with puckapedia (sp?) here. one of the things that the context provides is an unambiguous way to map the type that the term provides
#
dmitriz
cwebber2: same thing applies to IDs. linking to another object, how do you tell that it's just a string, or it's a URL? the context provides a default defn that can be overridden
#
dmitriz
cwebber2: things like, 'any time you see this, it's gonna be an id'.
#
dmitriz
cwebber2: if you're using Linked Data Signatures, it does pay attention to contexts of this type
#
dmitriz
cwebber2: (meaning, the generated hash will be different depending on how it resolves)
#
dmitriz
cwebber2: so, two ways to resolve it. either we add a namespace to the context, and then for all the terms we want, we copy & paste them in
#
dmitriz
cwebber2: the alternate route is that you can recursively include contexts
#
eprodrom
+1
#
dmitriz
cwebber2: so that's my summary, opening it to the floor
#
cwebber2
dmitriz: which option is evan proposing?
#
dmitriz
eprodrom: let's take the terms as we need them, that's how we did it in other contexts
#
dmitriz
cwebber2: lets move it to proposal.
#
dmitriz
eprodrom: I think what we need is publicKey, publicKeyPem, and maybe owner also?
#
dmitriz
cwebber2: I'm willing to look at the issue, if that helps
#
dmitriz
eprodrom: yeah, we haven't looked exactly at which ones
#
dmitriz
eprodrom: what I'll do is make a PR that includes the Security namespace (so that's available), and then for the current properties, I'll give aliases for those (including types)
#
dmitriz
eprodrom: and then maybe at the next meeting, we can vote on the PR
#
eprodrom
+1
#
dmitriz
+1
#
dmitriz
cwebber2: and if I don't respond on it, please ping me before the meeting.
#
dmitriz
cwebber2: ok, good to go
#
dmitriz
eprodrom: will take it as a task for next meeting.
#
dmitriz
next topic:
gluedtothescreen joined the channel
#
cwebber2
#TOPIC Chris Webber is diving headfirst into some next-generation federated social web stuff, but wait what does any of that mean https://octodon.social/@cwebber/100866264755512782
#
dmitriz
cwebber2: the high level is - I was previously doing a full time job and a half (basically, stuff I was doing for work, and then half-time for stuff in the federation space)
#
dmitriz
cwebber2: instead, I'm switching to full time on federation stuff, and then doing some occasional contracting on the side
#
dmitriz
cwebber2: I'm not at risk at being kicked out on the street. I'm trying to push forward with some important stuff. (the thread has some of it)
#
dmitriz
cwebber2: feel free to ask questions, and I'll attempt to answer
#
dmitriz
cwebber2: ok, so, firstly part of the goal here is - I'm taking on a tried-and-true approach of making and interesting Skunkworks of sorts
#
dmitriz
cwebber2: every now & then, somebody tries to make a giant decentralized game, and regardless of whether they succeed, interesting things come out of it
#
dmitriz
cwebber2: examples - google earth, etc
#
dmitriz
cwebber2: I've been researching for a while about some of the ways to push ActivityPub spec into new areas
#
dmitriz
cwebber2: for example, I'd like to change the way we're approaching abuse and moderation tooling
#
dmitriz
cwebber2: I think right now the current approach is, if you think about programming scope systems (like a Python approach) is - you've got your Global community, and you've got your local instance. so, globals and locals
#
dmitriz
cwebber2: so, this gives incentive for people to run their local space
#
dmitriz
cwebber2: like, you can start a group for a community you care about
#
dmitriz
cwebber2: but that also has some downsides. if you have somebody a part of several groups (not just a global and an individual group),
#
dmitriz
cwebber2: different groups need to protect them in different ways
#
dmitriz
cwebber2: relying on instance-level mods tends to exhaust them
#
dmitriz
cwebber2: we've been seeing some of this stuff on Mastodon. (which has really good, historically, moderation tooling)
#
dmitriz
cwebber2: but say somebody's a member of both the Fanfiction community, also a member of their professional community, and also like lgbt community
#
dmitriz
cwebber2: each one of those might have different moderation requirements
#
dmitriz
cwebber2: what we're seeing right now is sort of a nation-state-ification of the fediverse
#
dmitriz
cwebber2: like, "I have this code of conduct, and you have one, so let's just ban that instance"
#
dmitriz
cwebber2: it's getting to the point where it's easier for instance admins to just connect to a whitelist of instance
#
dmitriz
cwebber2: so there's various instances at war
#
dmitriz
cwebber2: whereas in fact, the different instances just serve different moderations needs for the user
#
dmitriz
cwebber2: so I want to move to the assumption that the moderation is not happening on instance level
#
dmitriz
cwebber2: the assumption is, each person is on many different groups & servers
#
dmitriz
cwebber2: example, mailing lists
#
dmitriz
cwebber2: I'm a member of many different lists, which all have different policies, depending on their needs
#
dmitriz
cwebber2: another core idea that everyone can message you opens up the idea of Dogpiling real easily
#
dmitriz
cwebber2: example, you post some message, another group doesn't like it, and you get jumped and get all these messages
#
dmitriz
cwebber2: we currently have this assumption (imported from FB/Twitter/email) that you have /one/ identifier that's you
#
dmitriz
cwebber2: whereas in fact, people have many different avenues to be contacted
#
dmitriz
cwebber2: so like, I have a public profile. and then I create several different shells for that, that I hand out to different people
#
dmitriz
cwebber2: and the moderation system may be different based on what instance you're going through
#
dmitriz
cwebber2: for example, I hand a shell to Evan, and the moderation is that his computer needs to do some sort of hash/proof-of-work in order to send me a message
#
dmitriz
cwebber2: later on, I can hand him the ability to just message me directly, without any PoW
#
dmitriz
cwebber2: another thing to consider: if you have a collection - let's say you're running a conference, and want to curate some images
#
dmitriz
cwebber2: and I'm handing somebody a capability to add things but not remove them
#
dmitriz
cwebber2: so, this whole design is taken from the world of Object Capabilities (OCaps)
#
dmitriz
cwebber2: pause for any questions re OCaps
#
eprodrom
q+
#
dmitriz
eprodrom: I'd be interested to hear the user side of this, before the implementation side
#
dmitriz
cwebber2: yes, I have that, let's get to it shortly though
#
cwebber2
ack eprodrom
jdormit_mobile joined the channel
#
dmitriz
*oh whoops, that wasn't evan asking re user side*
#
dmitriz
cwebber: I'm working on access control policies based on OCaps.
#
dmitriz
cwebber2: objects meaning actors.
#
dmitriz
cwebber2: the OCap community has a metaphor that might be useful
#
dmitriz
cwebber2: let me give the metaphors, then get back to user experience
#
dmitriz
cwebber2: one usecase that's commonly described in Ocap community is that we have two fundamental forms of access control - 1) Access Control Lists (ACLs), and 2) Object Capabilities
#
dmitriz
cwebber2: as far as ACLs - you're probably familiar with it from Unix. if you launch Solitaire, it runs as /you/, as the user
#
dmitriz
cwebber2: Object Capabilities are more like car keys. like, if you come up to a car. instead of identity based access control (say, the car scanning your face), it's using /possession/ based access control
#
dmitriz
cwebber2: meaning, whoever has the key has access
#
dmitriz
cwebber2: let's say I'm driving the car, and I want to lend it to Alice, but I want to be able to revoke access later
#
dmitriz
cwebber2: so I hand her a key, but it's "attenuated" in some way, meaning, I can limit or revoke the access later
#
dmitriz
cwebber2: so let's say she drives the car somewhere, comes up to a Valet service, and wants to limit the valet's capabilities
#
dmitriz
cwebber2: so she can narrow the key's power even further. she creates a derived object from the key, and gives it to the valet
#
dmitriz
cwebber2: and it has more limitations - it can only drive X amount of miles, and it doesn't give access to the trunk
#
dmitriz
cwebber2: a good way of thinking about it is - the way we currently program
#
dmitriz
cwebber2: if Alice is an object (in an OOP sense, for example) with a 'drive()' method, I can hand her a wrapped key object that limits the key's capabilities
#
dmitriz
cwebber2: basically, it allows an object to maintain its own state
#
dmitriz
cwebber2: how do we apply this to actors? (since Activity Pub is an actor-based system)
#
dmitriz
cwebber2: so I can create a Car object. it gives me absolute control over the car. we can give this car a Capability URI, or an OAuth type bearer token
#
dmitriz
cwebber2: so you can't drive the car unless you have the (unguessable) credential - the url or token
#
dmitriz
cwebber2: now I create /another/ object, which just forwards the messages/activities to it to the original key object
#
dmitriz
cwebber2: this is not adding anything to the AP spec
#
dmitriz
cwebber2: it's just assuming that sufficient security mechanisms are already in place
#
dmitriz
cwebber2: so that's the general idea. what you have possession of is what you can do
#
dmitriz
cwebber2: you maintain your own space. make decisions on what to forward or not. and objects & actors can coordinate with others to be able to do rich things
#
dmitriz
cwebber2: to be able to drive the car (or message me), how on earth do you have a user experience that makes that possible?
#
dmitriz
cwebber2: if you're familiar with Zooko's Triangle, it says that names/identifiers have 3 properties:
#
dmitriz
cwebber2: globally unique, human-readable, and unguessable
#
dmitriz
cwebber2: and you can basically only have 2 out of the 3
#
eprodrom
I need to jump out to get to my next meeting
#
eprodrom
Thanks all!
#
dmitriz
cwebber2: there's a way to get around this (2 out of 3) limitation, though
#
dmitriz
cwebber2: by making changes to ActivityPub clients, not necessarily the spec
#
dmitriz
cwebber2: think of your phone's contact list
#
dmitriz
cwebber2: you can call me without actually memorizing my number. the phone mediates that
#
dmitriz
cwebber2: and if there's multiple Chrises, the phone contacts list lets you de-ambiguate (like this is SocialCG Chris, and that one's some other chris, etc)
#
dmitriz
cwebber2: there's other details
#
dmitriz
cwebber2: like introductions / suggested names and so on
#
dmitriz
cwebber2: questions so far?
#
dmitriz
sandro: what my actual question was, let's imagine you're implementing this on Twitter
#
dmitriz
sandro: meaning, all of this is opaque & behind the scenes, except for what the users are actually interact with.
#
dmitriz
sandro: so, how would the UX actually be different, with this tech?
#
dmitriz
cwebber2: ok, let's say Twitter has a global user registry
#
dmitriz
sandro: wait, I'm not talking about identifiers
#
dmitriz
sandro: the pain points you started with are things like dogpiling
#
dmitriz
sandro: and various painpoints in moderation. so how would you improve current (say Twitter style) moderation, with these identifiers and ocap and so on?
#
dmitriz
cwebber2: ok, so, I have a bunch of different ideas and I'm jumping around
#
dmitriz
cwebber2: in the group scenarios (on Twitter), if you wanted to join the fanfic community, you send a join request to the fanfic group
#
dmitriz
cwebber2: and then they either accept/reject, and then your client filters how you're getting messages from that
#
dmitriz
cwebber2: let's shift now to Mastodon, where the way we currently interact with people is by Webfinger
#
dmitriz
cwebber2: so, you'd have a similar group type thing
#
dmitriz
cwebber2: so, I can join the fanfic community on Bob's server, and Dmitri can join it on some other server, and we can communicate
#
dmitriz
cwebber2: and the administrators of the group can moderate on the group level. (instead of server level)
#
dmitriz
sandro: as a user, I don't want to care about what instance I'm on
#
dmitriz
sandro: so is the idea that you limit conversation to particular moderated spheres. do I have the right model?
#
dmitriz
cwebber2: so it's not like you can't talk to each other outside the groups
#
dmitriz
cwebber2: more that - you can specify what kind of communications you can request based on which group it comes through
#
dmitriz
(er, what kind of communications you can receive, not request)
#
dmitriz
sandro: ok, so like.. a physical metaphor is having multiple phone numbers
#
dmitriz
sandro: so I can give a different number to the fanfic group
#
dmitriz
cwebber2: right! and you can later choose to expose your personal phone #, not the fanfic-specific one
#
cwebber2
dmitriz: allow me to join in
#
cwebber2
dmitriz: the fediverse one, creating new identifiers is very cheap
#
cwebber2
dmitriz: combined with decent ui you create these derived identities quickly and painlessly and they help limit moderation
#
dmitriz
sandro: can you give another example from irl / history?
#
dmitriz
dmitriz: well in general, we're used to having context-specific personas. in the context of the pub, in the context of work, etc
#
dmitriz
sandro: getting back to the goal here, it's up to the employer to police the interactions via the work phone number
#
dmitriz
sandro: like, if I get harassed over my work number, the employer can defend, etc
#
dmitriz
sandro: so, ok, good analogy
#
dmitriz
cwebber2: ah, so that brings up the notion of "Pet Names", this idea of mapping identifiers to entries on a contact list
#
dmitriz
cwebber2: so like, here's my work phone, and it's labeled as "My Work Phone"
#
dmitriz
*not sure I'm following this explanation, re DNS etc*
#
dmitriz
cwebber2: let's say there 2 ways you can find me.
#
dmitriz
cwebber2: lets say like, TOR onion addresses, or IP addresses, or whatever
#
dmitriz
cwebber2: one of them is a DNS Petname in your system, which you can query to resolve dustycloud.org into that onion address
#
dmitriz
cwebber2: but the /other/ way is - you can only find me by talking to Sandro
#
dmitriz
cwebber2: so, DNS and Sandro are equal participants
#
cwebber2
sandro => Chris Webber
#
cwebber2
dns => dustycloud.org
#
dmitriz
sandro: I'm getting hung up on the term "petname"
#
dmitriz
sandro: is likely not gonna get accepted by other communities / contexts
#
dmitriz
cwebber2: yeah, it's.. hotly debated
vt left the channel
#
dmitriz
cwebber2: for example, browser bookmarks are petnames
#
dmitriz
cwebber2: extending bookmarks to have some of these further petnames mechanisms protects from phishing
#
dmitriz
cwebber2: are there any other questions? I'm only touching on a fraction of my ideas here
vt joined the channel
#
dmitriz
melody: all of this stuff about OCaps seems to have a limitation, compared to ACLs
#
dmitriz
melody: it seems like once I have given a post to somebody, let's say, they can do whatever they want with it
#
dmitriz
melody: it seems like there are systems where you can /suggest/ what one should do with that post
#
dmitriz
melody: and I'm not seeing how that works without an identity handshake
#
dmitriz
cwebber2: ocap community says: "we don't prohibit what we can't prevent", though I'd like to say "we don't /pretend/ to prohibit what we can't"
#
dmitriz
cwebber2: so for example, I'm a private individual, and I hand you a capability to write to my timeline. and I say "please don't delegate that, though"
#
dmitriz
cwebber2: (and let's take as given, as current research suggests, that it's not even theoretically possible to limit what you can do with something, in an unconfined environment)
#
dmitriz
cwebber2: so, the OCap community has this idea/system named "Horton" (as in, now we know who done it)
#
dmitriz
cwebber2: it's basically combining capabilities with access logs
#
dmitriz
cwebber2: so we can examine it and see who's abusing a resource, and we know who to hold accountable
#
dmitriz
cwebber2: there's another concept of "split contract"
#
dmitriz
cwebber2: which is basically - there's a cheap/automated way to enforce a contract (like current smart contracts, etc). but then there's also a way to bring humans into the loop (say, the court of law), that's the fallback, that's the other half of the split contract
#
dmitriz
cwebber2: ok we're at the top of the hour
#
dmitriz
cwebber2: happy to do this again next week, same time
#
dmitriz
melody: maybe I can ask my questions on IRC later
#
cwebber2
=========== MEETING LOGGING ENDS ===========
jdormit_mobile, vt, tantek and dmitriz joined the channel; vt left the channel
#
heluecht[m]
I have a question concerning moderation: on Friendica and Diaspora a thread owner can delete a comment of another user when this had been a comment on the owner's thread.
#
heluecht[m]
Could this be done with AP as well?
jdormit_mobile joined the channel
#
melody
i don't think so, not in any super reliable way but i think it's theoretically possible
#
heluecht[m]
This deletion had to be distributed as well. So actor A would request the deletion of a post from actor B - which normally should be prohibited.
#
JasonRobinson[m]
it only works in the diaspora protocol because it is agreed to be honoured. it's not actually documented in the protocol currently
#
heluecht[m]
This would be a problem, since you had to create a tombstone for a foreign server.
jdormit_mobile joined the channel
#
melody
right, but you could implement it using collections over AP if you wanted, so that you could layer on more access control, so a thread would be a custom collection owned by the creator, which could have its own logic for who to accept or not accept delete activities from, and then you could federate that (by choosing whether to forward it to the other thread participants/etc) at the originating server
#
melody
that approach wouldn't be super compatible with existing implementations
#
melody
but that wouldn't (shouldn't?) break spec
#
melody
and a similar approach would be needed if you wanted to implement, for instance, something like a forum on activitypub
#
melody
where you'd be reifying threads as their own kind of collection with their own valid interaction types
#
melody
rather than distributing pure posts
#
melody
that's why the short answer was "i don't think so" and "not in any reliable way"
#
melody
but you can do a lot with custom collections/custom object types
#
melody
and you start to have to, once you want to do anything with activitypub besides a microblogging site
#
rialtate[m]
With our groupware we couldn't figure out any reliable way to have a consistent ux with existing impl so we went with Announcing foreign AP actor posts as a form of group "distribution". So the author has control of their post directly, if we wanted to mute it, the Announce could theoretically be deleted but we withhold the announce until moderator approval instead in our current workflow.
jdormit_mobile and dmitriz joined the channel