#dev 2022-07-29

2022-07-29 UTC
#
[fluffy]
moving VR conversation over here
#
[fluffy]
anyway, so like, had a good conversation earlier today with someone with similar aspirations, and they did a good job of convincing me that rather than using web-hosted resources, it'd be better to focus on things like WebTorrent for the actual content distribution
#
[fluffy]
Less for bandwidth, more for privacy
#
[fluffy]
like to avoid things like corporate 'tracking pixels' in the form of a popular asset
#
[tantek]
[fluffy] [j12t] my "simple" answer to your question about "whose space" and how does your avatar show up in a space etc. is that this is a *hard problem*, and that the closest we have in "flatland" is everyone has their own website (space) and we agree to allow showing a non-programmatic image + text label representation that other people bring (<img> + name as text)
#
[fluffy]
yeah, the main reason i felt IndieAuth was a good fit for this was because it already has a mechanism for providing profile data, and there could be a `u-vr-avatar` property or the like.
#
[tantek]
if you really want to get into how much harder this can be, like say you want a "live" image instead of a static image, then ask the same question but with <iframe> instead of <img>
#
[tantek]
nah I think that's too narrow of a property name thinking here
#
[fluffy]
There's already transmission formats for avatars (for vtubing) and while they aren't quite suitable for VR yet, it's easy to imagine extending them to be
#
[tantek]
the actual question is: static representation or dynamic representation of a user
#
[fluffy]
but also a thing about avatars in VR is people love being able to switch them on the fly so it really shuld be something associated with the session, not the user
#
[tantek]
the 2D/3D nature is orthogonal
#
[tantek]
VR is orthogonal
#
[fluffy]
right but anyway tl;dr I am no longer convinced this woul dbe a good indieweb project
#
[tantek]
it would be, it's just *much harder* than it seems at first glance
#
[tantek]
we already host "spaces" for people to come "hang out". it's called the comments section on any of your posts
#
[tantek]
it's roughly isomorphic to "Social VR"
#
[tantek]
people see each other, can say things to each other (in text)
#
[tantek]
it's just all flat (2D) and with a 1D conversation thread
#
[fluffy]
right but there's a lot of things about social VR that make it very very different from that interaction model and the IndieWeb metaphors don't map well to the VR metaphors
#
[tantek]
I don't believe that
#
[fluffy]
Have you used VRChat?
#
[tantek]
you can set any photo icon in your h-card you want when you comment on a specific post, it doesn't have to be your home page photo icon
#
[tantek]
so you can have per post comment (i.e. per "session") "avatars" already
#
[fluffy]
yeah but I mean like. in VR people change the avatar *during the session*
#
[tantek]
so that's what I mean by static vs dynamic above
#
[fluffy]
which I mean that would be sent as out-of-band data as part of hte interaction flow
#
[fluffy]
but it's all ephemeral
#
[tantek]
you could literally update the webmention of your most recent comment with a new h-card with a new photo to change your avatar "live" in the "session" (post)
#
[fluffy]
yes I mean you can strain metaphors as far as you like, but I feel like it'd be better to focus on VR as its own thing to start with before trying to figure out how to map it into IndieWeb concepts
#
[fluffy]
asynchronously posting to the web is very different than "in-person" interaction in real time
#
[tantek]
my higher level point is, you don't need any new properties to experiment with these kinds of features *right now*
#
[fluffy]
I never felt like the interaction part was even indieweb-related, I was more interested in the indieweb aspects of how to distribute the content and making the connections between people and sessions etc.
#
[fluffy]
yeah I agree
#
[tantek]
I'm not even sure "distributing the content" is user-based need, that sounds like plumbing
#
[fluffy]
it's important to the act of content creation, which is a huge part of what makes VR compelling
#
[tantek]
there is something to the "people and sessions" that feels different though
#
[fluffy]
like personally I think there's a place for having your content be distributed as glTF bundles hosted via HTTP and so on, but there's also privacy issues to be concerned with for that
#
[fluffy]
the proverbial 1x1 tracking pixel problem
#
[tantek]
I think in the use-case where you have realtime interaction at the core, it becomes even more important for the "content" (the 3D map of the room / objects in which they're interacting) to be "run" by a server
#
[tantek]
and then it's a question of "whose server" and that's where the IndieWeb aspect maps perfectly
#
[tantek]
in your "house" in VR, it's on "your server"
#
[fluffy]
yeah what I'm envisioning is that there's a WebRTC "host" that starts out by pulling in the known initial state and then it subscribes to updates from all the users, and then when a new user joins it has *that* data to send to the newcomer
#
[tantek]
this is roughly how SL worked
#
[fluffy]
I should learn more about how WebRTC works though
#
[fluffy]
My mental model of it is based mostly on having used Zoom and vdo.ninja a lot.
#
[tantek]
anyway to get actual realtime dynamic representations, you need something like the containing document vs embedded iframe relationship, and that's going to be *at least as hard* as the 2D HTML page with an iframe inside structure in terms of privacy & security, cross-origin communication etc.
#
[fluffy]
I mean in my vision here, the client wouldn' tnecessarily be on a webpage
#
[fluffy]
like there could be web-based clients but the room you join ultimately wouldn't be "on the web"
#
[tantek]
the problem with Zoom and any "single server" or "single vendor" existing examples is that they completely ignore the who has agency to do what at the protocol level problem
#
[tantek]
sure, you could create a parallel universe, kinda like SemWeb tried with RDF, and I think that was the goal behind VRML as well
#
[fluffy]
you have essentially a "browser" (which could be written in WebXR+Javascript, or in Godot, or in LOVR, or who knows what else)
#
[fluffy]
VRML felt like it was intended as a browser-first experience
#
[fluffy]
a webpage-embedded-first expeirence, rather
#
[tantek]
I'm saying I'm not expecting a "start from scratch with 3D" approach to have any better luck or not have any of the same complexity problems that HTML has with iframes
#
[tantek]
so sure, people can go off and start from scratch if they really want (have the time etc.) but IMO that will likely result in all the same re-solving of existing solved problems (but worse) that we saw with the parallel RDF-web, or the parallel XML-web, or most recently, the parallel JSON-API-web
#
[fluffy]
yeah and right now there's a lot of people going off and starting from scratch but they're all just like. mkaing the same mistakes as VRChat.
#
[tantek]
fundamentally if this is supposed to run across multiple servers, with different entities "in control" of those servers, they're going to have to solve the same problems (and more) that HTML / iframes already have/do.
#
[tantek]
so yeah, maybe they'll reinvent something better from scratch. I wouldn't bet on it
#
[fluffy]
Yeah and the person I was talking to most directly earlier today isn't trying to reinvent things from scratch
#
[tantek]
I would bet more on 3D HTML + 3D iframes + 3D CSS to layout between them
#
[tantek]
I think part of the problem here is even the most "good faith" of folks don't know they are reinventing, when they are reinventing
#
[fluffy]
Anyway. I don't think the problem of distributing 3D/VR worlds is inherently that difficult, and the problem of getting multiple people into the same VR session isn't that difficult. Sharing avatars gets a bit more difficult, Protecting user privacy is the hard part, when you have to worry about what things are watching the various HTTP transfers of rooms/assets/avatar parts/etc.
#
[fluffy]
Also making worlds persistent is enormously difficult but also a non-goal for now
#
[fluffy]
Oh, and making in-world scripts safe is enormously difficult.
#
[tantek]
sharing avatars gets A LOT more difficult, depending on how dynamic you want to make them
#
[tantek]
I think the "persistent by default" nature of the web / IndieWeb is actually how we get to solving that problem
#
[tantek]
If there's a separate effort for completely non-persistent interactions, sure that could use a completely different set of technologies
#
[tantek]
but what does non-persistent even mean when there's a room that always has at least someone in it, and therefore the "stuff" in that room that's created or moved around has some expectation of physical continuity?
#
[tantek]
at some point, if there's *any* expectation of continuity (instead of everything blipping / disappearing when people log off), then there's an expectation of at least some persistence
#
[tantek]
I believe this is what SL figured out at as well
#
[tantek]
"making in-world scripts safe is enormously difficult" <-- yes, this is essentially the iframe problem
#
[tantek]
that's why I keep bringing that up
#
[fluffy]
I'm not disagreeing with that part
#
[tantek]
[fluffy] I have a feeling you may have also read Snowcrash before the Web was really a thing (e.g. in 1992 when it came out) so I bet we could have some interesting conversations about the models/interactions depicted therein without necessarily being "constrained" by web technologies
#
[fluffy]
I actually haven't read it, no
#
[tantek]
oh wow ok
#
[fluffy]
I uh. can't get into Stephenson
#
[tantek]
I'm sure it may seem "quaint" at this point
#
[fluffy]
I've tried
#
[fluffy]
I also haven't read Neuromancer
#
[tantek]
pretty sure you can get the tech/design aspects out of maybe the first 1/3 of the book. you can ignore the plot
#
[tantek]
I also read Neuromancer in early 1992
#
IWDiscordGateway
<capjamesg> What is the topic de jour?
#
IWDiscordGateway
<capjamesg> I read we are talking VR worlds?
#
[fluffy]
yeah, I've been on a speculation bender because VRChat is having a moment
#
IWDiscordGateway
<capjamesg> VRChat? (Phrased that way so as not to trigger Loqi.)
#
[fluffy]
and a lot of people are rushing to write a VRChat replacement, but they're all making the same mistakes of VRChat, so I'm trying to like. Evangelize the notion of not making a platform, but a protocol. And trying to get people on board with using IndieWeb stuff as appropriate.
#
[fluffy]
what is vrchat?
#
Loqi
It looks like we don't have a page for "vrchat" yet. Would you like to create it? (Or just say "vrchat is ____", a sentence describing the term)
#
[fluffy]
what is VRChat?
#
Loqi
It looks like we don't have a page for "VRChat" yet. Would you like to create it? (Or just say "VRChat is ____", a sentence describing the term)
#
[fluffy]
huh, I thought I made a page for it
#
[fluffy]
VRChat is a social Virtual Reality silo, built on the Unity engine, which provides in-person interactions in a virtual space.
#
[tantek]
VRChat << VR
#
Loqi
ok, I added "[[VR]]" to a brand new "See Also" section of /VRChat https://indieweb.org/wiki/index.php?diff=82445&oldid=82444
#
[fluffy]
What is Virtual Reality?
#
Loqi
It looks like we don't have a page for "Virtual Reality" yet. Would you like to create it? (Or just say "Virtual Reality is ____", a sentence describing the term)
#
[fluffy]
Virtual Reality is /VR
#
IWDiscordGateway
<capjamesg> Has anyone heard the song Virtual Insanity?
#
IWDiscordGateway
<capjamesg> (Jamiroquai)
angelo joined the channel
#
[fluffy]
yes and I am constantly getting it stuck in my head because the VR channel on one of the Discords I'm on is named that
#
IWDiscordGateway
<capjamesg> 🤣
#
IWDiscordGateway
<capjamesg> Oh no haha!
jacky joined the channel
#
GWG
omz13: Was rereading your spec again. I think it draws a lot of different conclusions in the ticket section than the existing proposed extension
jacky, [jeremycherfas], geoffo, petermolnar, pmlnr, jjuran, gRegorLove_, tetov-irc, jeremycherfas and nertzy joined the channel
#
omz13
GWG, ticket request and ticket deposit were pretty much based on existing practice; ticket wanted slightly extended things, but falls back to existing practice; obo-flow is has similar aims to TicketAuth but does so diferently and with room for further methods.
#
omz13
Plus, my spec was essentially a summary and tidying up of what has been implemented now (again with the exception being the addition of obo-flow). It is also written more towards RFC style than W3C style.
#
omz13
And some of the nomenclature is probably different as I'm using the OAuth2 and RFC specs as baseline.
#
omz13
If things are unclear
#
omz13
note it in an issue
AramZS, geoffo and [marksuth] joined the channel
#
[campegg]
I’m trying to own a couple more of my silo links, but am running into a bit of an issue configuring nginx for Strava. I’d like to have `/strava` redirect to my profile (`https://strava.com/athletes/273720`), but have `/strava/[?]` redirect to the appropriate activity (`https://strava.com/activities/[?]`) — is it possible to do this kind of conditional redirect (i.e. if there’s something following `/strava`, go to the `/activ
#
[campegg]
URL, else go to the `/athletes` URL)? I’ve done a bit of googling (ddg-ing?) around, but can’t seem to find anything that matches my use case.
#
aaronpk
the order of rules in nginx matters, so try fiddling with that
chenghiz_ joined the channel
#
[campegg]
Thanks, [aaronpk]! Going to play with that now
#
sknebel
[campegg]: nginx?
#
sknebel
ah, yeah, you mentioned that
#
sknebel
for the profile you can do an exact match block
#
sknebel
"location = /strava {"...
#
sknebel
and then a second "location /strava" (or /strava/ block for the activity
#
sknebel
and a rewrite-redirect rule with a regex to get the right url there
#
[campegg]
[sknebel] — I have “`location ~ ^/strava { return 307 https://strava.com/athletes/273720; }`” for the profile, and “`location ~ ^/strava(.*) { return 307 https://strava.com/activities$1; }`” for activities, but both redirect to the profile
#
[campegg]
Should the activity block be `/strava/(.*)`?
#
sknebel
or do the exact match as in my exampe
#
sknebel
for the first
#
sknebel
no point in doing regex-match if you want an exact one :D
#
[campegg]
Awesome! Thanks [sknebel] and [aaronpk]! A combo of both sets of advice got me there… regex match rule for the activities first, followed by a exact match rule for the profile got me exactly what I wanted
#
[campegg]
[sknebel] ++
#
Loqi
[sknebel] has 10 karma in this channel over the last year (30 in all channels)
#
[campegg]
[aaronpk] ++
#
Loqi
[aaronpk] has 32 karma in this channel over the last year (120 in all channels)
#
GWG
omz13: Not unclear, I thought it was contradictory in a few areas, but will open specific issues.. such as your definition of subject.
cjw6k joined the channel
#
omz13
GWG: IIRC, subject was taken from the way some of the RFCs refer to different parties in a transaction... and a participant may change role depending on whether they act as client or server for a specific operation.
#
omz13
If some more eyes could look over it (https://github.com/indieweb/indieauth/issues/113), it would be useful: perhaps aaronpk from the OAuth side and [tantek] at the user cases?
#
Loqi
[omz13] #113 ticketing + ac-obo
#
[tantek]
campegg, the Strava URL structure is an interesting use-case, as is what you’re doing with it. you’re partially adjusting their URL structure rather than accepting it entirely or redesigning it completely
#
[tantek]
it's a hybrid of existing "own your links" approaches
#
[campegg]
I struggled with it a bit… it’s not like (e.g.) Twitter, where activity on the network is basically appended to the profile URL, so went with /strava for the profile, and /strava/[activity id] for the actual activities. Am definitely open to suggestions for a better approach, though
#
[tantek]
Flickr has a similar problem with /people vs /photos at the top level, followed by / yourUsername
#
[schmarty]
can't find a reference for this at the moment but i like the sentiment that a URL structure is a defacto API
#
[schmarty]
so doing ownyourlinks in this way means you can also pave over some URL-as-API weirdness you don't like in the service you're redirecting to!
#
[campegg]
Similar to Flickr, that separation of ‘activity’ form ‘athlete’ (used in its loosest sense, in my case 🙂) definitely throws me a bit
lanodan joined the channel
#
[tantek]
yes, you can, and yet then you're signing up to "support" (i.e. provide redirects for) some new URL structure variant which is not quite what the silo URL structure is
#
[tantek]
a lot of these silos are based on a global post ID and thus there is an opportunity to further "simplify" the URL structure (on your own site) down to "silo" / "post id" and then redirect that as needed for now. That way if/when you completely replace those silo redirects with content on your own site, all you need is a local lookup for your post IDs from that silo (available in nearly every export)
#
[tantek]
as in, completely ditch the URL structure paths of the silos and *only* re-use their "ID" numerical-space
#
[campegg]
That’s pretty much where I ended up (I think… please correct me if I’m not following). The nginx rules I ended up with after a few more tweaks are “`location ~ ^/strava(/.[0-9]*) { return 307 https://strava.com/activities$1; }`” and
#
[campegg]
“`location ~ ^/strava(/?$) { return 307 https://strava.com/athletes/273720; }`“, which gives me `/strava` (or `/strava/`) for my profile, then `/strava/[activity id]` for my activities. I also show a subset of the activity data on my own site at `/activities/[activity id]` (e.g. https://campegg.com/activities/2425318828)
lanodan joined the channel
#
[tantek]
that looks good except I'd advise strong caution against re-using any silo-specific numerical ids in any kind of "global" way on your own site
#
[campegg]
Why is that? I store all of the data locally, so am referencing it from a local source, but also have a ‘local id’ attached to each activity too, so could use that
#
[tantek]
because you are "polluting" your global ID space with IDs from an entity you don't control
#
[tantek]
if you have a local ID already, use that instead, and then put code in your redirection to map that to the equivalent silo ID for the redirection
#
[campegg]
Got it. I don’t really have a global id space… each content type--note, post, activity, etc--on my site has it’s own id structure (because I didn’t really think through my architecture properly), but I can see what you’re getting at. And now I think I need to go back and rebuild a whole bunch of stuff to correct some sub-optimal decisions that I’ve made
#
[tantek]
this is one of the reasons that a bunch of us (see /URL_design) went down the path of "global id space first" in our URLs, where that "ID" is actually some form of explicitly (readably) date-based ID
#
[tantek]
rather than content-type first
nertzy joined the channel
#
[campegg]
I definitely *should* have done that. But I think I can remediate the situation relatively painlessly
#
[campegg]
(Famous last words…)
#
[tantek]
others have made that transition too (cc aaronpk) 🙂
#
[tantek]
a key nice aspect of using /YYYY/ as your first segment is that it allows you the opportunity to *change* your rules/structure of your URLs every year if need be
#
@AaronGustafson
You can now use webmentions in Eleventy via a plugin rather than rolling the whole thing yourself. https://buff.ly/3PRimRK
(twitter.com/_/status/1553088722362580993)
cjw6k and nertzy joined the channel
#
[tantek]
woohoo!
#
Loqi
yay!
#
[tantek]
that's pretty huge tbh, there are plenty of people using Eleventy who don't have webmentions support and this will help
[aciccarello] joined the channel
#
[aciccarello]
That's cool. I might add that to mine
bneil joined the channel
#
aaronpk
Oh wow
cjw6k joined the channel
#
[tantek]
I feel like that needs some sort of highlighting or at least entry on /Webmention
#
gRegor
Just bookmarked on indienews
#
GWG
omz13: I'd love to see aaronpk's feedback. He keeps all this stuff in his head. I need reference material
#
gRegor
Hm, I need to update my templates. I think because the u-bookmark-of is inside e-content, indienews shows the content instead of a linked headline
#
gRegor
will see how the newsletter looks
cjw6k joined the channel
#
gRegor
looks good in newsletter
[Murray] joined the channel
#
[tantek]
what is GraphQL
#
Loqi
GraphQL is a query language for APIs and a runtime for fulfilling those queries with existing data https://indieweb.org/GraphQL
#
@mitsuhiko
I think GraphQL is quickly moving to one of my least favorite technologies. Building an efficient query system for the server is almost writing a database and as a user it has a lot of rough edges. Good idea but man is it complex.
(twitter.com/_/status/1552694954190950406)
tetov-irc and [bneil] joined the channel
#
[bneil]
the big gotcha for me was graphql throws away error codes, everything comes back from a single endpoint as 200.
nertzy and Seirdy joined the channel