Replacing authentication with visual identity Bac...
# thinking-together
k
Replacing authentication with visual identity Background: I'm starting to think about building a new forum. Given my past, it won't surprise anyone that I mean to do this outside the morass of non-convivial software that is the modern web browser. My broad plan is: • LÖVE v12 will support https, and release candidates are already quite stable. Good enough to start building on. • I'll build my forum out of a server-side API in Lua and a client in LÖVE v12. (Should be easy to support Windows, Linux, BSD and Android. Mac and iOS will require some annual contortions to build LÖVE for oneself.) • The server side will of course be open source just like the client. In addition, all post/comment data will be published to a git repo on something like a daily basis. The one major open question concerns authentication. How can we have stable identity? The above architecture is intended to allow anyone to host the forum (without trying to build galaxy-brain merkle trees, federated protocols or CRDTs), and I would prefer to not take a position of power as the source of everyone's hashed passwords (an intrinsically centralizing architecture). A few months ago someone showed me this ancient essay called "attacked from within", and I find myself thinking about it often. The whole thing is worth reading, but for this thread the crucial list of bullets halfway down is: • Registration keeps out good posters. • Registration lets in bad posters. • Registration attracts trolls. • Anonymity counters vanity. A provocative worldview that seems at least worth exploring. Keeping this in mind, I have a hazy idea that looks like this: • When you run the client you get to choose your handle, but it's not unique (cf. Zooko's Triangle) • When you run the client for the first time, it creates an RSA keypair for you. • When composing messages, the client signs the message with your private key (description on Wikipedia) • When rendering messages, the client validates the signature against your public key and shows something like an identicon of the public key. Implications of this setup: • No registration • Your "password" (private key) never leaves your device(s). • When reading a thread you see a handle like
spiralganglion
. However, the handle is not authoritative. Next to it is an identicon that is authoritative. • It's easy in a thread to see if there are ever two people with the same handle but different identicons. • Since the client platform is starting from scratch, accessibility and internationalization will be a challenge for a long time 😕 No guarantees this is all doable. It's quite possible the cryptographic operations will be untenably slow when implemented in Lua, and a native library for them would complicate the simple install story that is LÖVE's greatest strength. But I'm curious to get people's thoughts on this idea in principle.
a
<Cue flashbacks to the “what should we use instead of Slack?” discussions>
k
Exactly!
a
I am curious what you think about harassment? Not quite trolling, not quite vanity.
k
Moderation in general is the single biggest thing that has always put me off from creating any public forum of any sort across any modality. I have a lot of appreciation for people who do it, like Ivan here -- and have successfully mooched off of their labors all these years. And yet, it's starting to feel like my projects need a central place of their own where someone can come see past questions and discussions that are currently only centralized in my notes. (And if it gets people here off Slack, I wouldn't be above spinning up a forum that forks this place.) So I have zero grounds to pretend at any sort of knowledge or expertise on moderation. Mostly I figure, it looks like I have to get to this some time, the sooner I start, the more of a hope I have of learning to not suck at it. So your question about these gradations completely goes over my head. But ask me after I've been running something for a year. Oh, one random note: Maybe pseudonymity makes harassment more difficult? It's easier in my system to create a new handle than it is on say ActivityPub. Does that seem to move the needle?
My naive plan for moderation is: make commits in git. By nature, this moderation log will be totally public, just the git log. But by the same token, for any sort of scale I can hope for, it should be super easy to detect and delete harassment?
a
Probably. I’ve never run a community. If you’re going to comb git logs before harassment hits anyone’s inboxes, I don’t see anything wrong with starting there. A common kind of harassment that drives people away from online communities is, in its simplest form, randos dropping slurs then poofing. So long as I’m me and want others to know I’m me, the people who do that sort of thing can find me too. I don’t see that accounted for in the four-point framework you mentioned, and that’s what makes me curious.
k
That's a good point. I don't think attacked from within is trying to be perfect, or to guarantee absence of various sorts of dysfunctions. It seems to be trying rather to sculpt energy barriers for good vs bad actions. So yes, you're going to need moderation independent of the auth mechanism.
j
k
No! 📝
e
My very boring question would be why not an email list?
k
I was wondering as well what you want to do differently from existing approaches. The obvious part is lightweight software, and that's something I like very much. But then? What are the specific features you want to have? Which ones you definitely do not want to have?
e
I'd also add what features are you willing to walk away from?
k
Why not an email list: lot of work to self-host, kinda like a proprietary service if you don't self-host, and it excludes large swathes of people who just don't like it. For a long time my twin reasons for not creating any community were: • Any medium I choose excludes a majority of people who don't care for it. • Moderation headaches. The big insight here is realizing that these reasons are in opposition. Excluding people reduces my moderation headaches 😄 So I just need a way to avoid excluding the people I want to hear from. Requiring people to install LÖVE seems like a good filter. The goal is a place to ask questions after you've run one of my freewheeling apps, and making the communication tool itself a freewheeling app seems like an elegant solution. What features I am willing to walk away from: how much time do you have? 😄 https://archive.org/details/akkartik-freewheeling-2023-07-06 demonstrates a tiny browser replacement UI that might give you a sense for how bare-bones this might start out as. Really the only thing missing in https://git.sr.ht/~akkartik/pothi.love is a server for requesting posts/comments from and some way to tell that two comments are by the same person. And maybe I don't even care about guarantees on that?! I might still end up holding my nose and creating a new community on Discord, just because that seems most popular in the LÖVE community.
k
Cozy Web by design - interesting! Plus dogfooding. In that context, your question about authentication becomes: which sign-up effort will my intended audience accept? Example: assuming your audience is proficient with a Unix shell, you could use shell accounts with ssh access and use the ssh keys for authentication. That also scares a lot of people away, but if you don't care about such people, that's fine.
k
Yeah, I don't want to make any assumptions about my audience beyond a willingness to install the tool. Though now I'm reading what I wrote and imagining someone modifying the client to automate sending spam to the forum. Good thing the code is so hackable! lolsob Seriously, though, I would love to get lots of Windows people.
e
> Yeah, I don’t want to make any assumptions about my audience beyond a willingness to install the tool. The biggest assumption to me here is around accessibility — while an OS or browser brings a TON of headaches and complexity, it also brings with it a TON of accessibility tooling that love2d has none of. I can’t change the text appearance of a love2d application without modifying the application, and while I know how to do that, it isn’t necessarily as easy as using my operating system’s zoom capabilities.
k
You're absolutely right, and this very much wears on my mind. Is there any good history of accessibility efforts in web browsers? How did this highly capitalist-owned product end up achieving so much for accessibility. One correction: all my LÖVE apps support
ctrl+=
and
ctrl+-
for increasing or decreasing the font size. So at least I have that covered..
e
and, also, that wasn't meant as a judgement, I love what you do with love2d, btw
I didn't know that about your love apps! That is rad
as for how accessibility was achieved in browsers, my honest guess is that it was an accident of history more than it was intentional. Like, if you think through the architecture, it is sort of backwards how we apply accessibility as sort of a veneer on top of a finished product, even WCAG is this -- it is accessibility guidance when a standard already exists. Why not bake it into the standard? Why not have a standard for how to implement accessible rendering of an element like they do for browsers, instead most accessibility tech (even the stuff baked into browsers a lot of the time) mostly function as a black box. It is hard to tell what they do and why
k
Yeah, my goal is to judge myself so that nobody else has to. Or before anybody else does. 🙂 I would love to have a set of criteria (say in the form of behavioral tests) that my app has to hit to be accessible. For example, screen readers. My app has text. I can provide the text in any API you like. But I don't know anything about how say a text to speech generator would hook up to a web browser. But this feels like it should be easy? I'm just missing some key knowledge.
e
I, too, would have to have that level of detailed knowledge about how such tools work 😆
I have tried to get it, and you can sort of get there, but, like, the way JAWS works versus NVDA versus VoiceOver are all different. There isn't a clear and easy path -- so, we're left with sort of heuristics and well known patterns for widely targeted system (e.g. web and "native")
the work some game studios are doing I think really highlights how this is mostly unexplored ground since they're all sort of having to invent it as they go along
whereas if you wanted to render HTML to pixel-based screen today that is relatively achievable
k
I would love to be bombarded with links!
e
I can't bombard ya with links at the moment, but I'll consider that a mission!
a
I think the path is well-lit if you target a single platform. I’ve followed accessibility tutorials on Android and Apple. I just have no idea how to make them all happy simultaneously without embedding a browser. 🫣 Probably the way to go is convince a government agency to build apps in LÖVE. Then someone has to make it happen.
Oops, I forgot you wanted this thread to be about identity.
j
@Eli Mellen Accessibility in browsers was no accident! We fought for that stuff for years, starting in the mid-90s. Here’s a web designer writing about it in 2000:
Designing adaptable pages is designing accessible pages. And perhaps the great promise of the web, far from fulfilled as yet, is accessibility, regardless of difficulties, to information. It’s an important belief of the World Wide Web Consortium, and is becoming an imperative of web design, as web pages will be required by law to provide universal access, just as building codes around the world require access to buildings.
e
Sorry, I didn’t mean to imply that the fight to bring it was an accident, but the way it was implemented, like so much of the web, seems sort of … layered on? Does that make sense? Again, this isn’t to belittle what we’ve got (I think the web is by and far the most accessible platform around). I should have used a less loaded word, for sure!
j
All the web stuff is definitely a bit ad hoc! I just wanted to point out that that particular thing wasn’t an emerging property, and that we can’t just assume that accessibility will happen 🙂
e
Yes! 100%
a
I must admit that I'm very wary of "anonymous by default" systems, given the horrible cess-pool that is chan boards.
Have you considered a petname system for user ids? It could be really interesting to see in practive
k
Thanks for reminding me to reread http://www.skyhunter.com/marcs/petnames/IntroPetNames.html! I got a lot more out of it this time.
4chan is indeed a concern. I don't quite (yet) buy fully into the worldview of "attacked from within". This is all an experiment I want to be very careful about scaling up.
a
The goal of the "Attacked From Within" article seems to be designing a forum that can scale arbitrarily. Is that really your goal? It probably still has some ideas you can use in a "community" setting, which I'm guessing is more useful for discussing your apps with the handful of initially interested people, but... I guess what I'm saying is that you're right to not take it all as gospel. Also I think their proposed "comment dyad" system of ranking, while interesting, would still be pretty trivial to game with enough sock puppet accounts.