Joel Hill's avatar

Joel Hill

@joelh.social
Software developer in the Canadian Prairies #yxe. He/him
Joel Hill's avatar
Ms Boba (rebuilding community era)
I've been thinking about this, and I feel that while #2 is definitely convenient in many ways, it really does set up the wrong mental model and incentives when it comes to the network. To me, an important point indicator of the health of the ecosystem is that it should matter as little as possible to an app(view) whether a record came from them or from a different app that's writing the same lexicon. Once you start putting a AppView as a recommend middle layer, now it suddenly does matter which AppView you talk to. Sure IF all they're doing is proxying the request to the PDS and caching a little bit of info then that will probably work out, but I can't imagine this won't end up abused in the long run. Unless there's strong "to be a good ATizen it is all you should be doing" expectations from the dev/users community, you'll get apps trending toward doing what's convenient over what's right, especially as the ecosystem grows and attracts different players.
I think you hit the nail on the head. 

You can write all the procedures you want in the Lexicon, at the end of the day records are written to PDS’s and you can’t control how users do that.

However… App Views have potential to store, index, and mutate data that doesn’t exist in PDS’s. Like an AR app that uses an open federated network of Visual Positioning Services. The App View would be a window into both the ATProto Network and the VPS’s.
Joel Hill's avatar
I am writing a custom lexicon and when it came time to implement the Client and App View this was something I was struggling with. At the moment I’m content with a hybrid approach? I write to the PDS, I read from the App View. The only benefit I would get by writing records through the app view would be to apply stricter validation than I was able to write into the lexicon rules. It seemed pointless though, since I can’t really stop anyone from writing records to their PDS, it would be fighting a losing battle for no rewards.

I do have an interesting case where I may actually need some server side processing power and a put method in the App View seems tempting, but I still may avoid it. Instead I’ll probably do quick simple writes of records, then have the app view process those events and prepare indexed data ready to consume through read requests to the App View.
Joel Hill's avatar
I’m developing an ATProto lexicon and I had not idea I could publish it via DNS like that.
Loading more comments...