See https://bsky.app/profile/henryzoo.com/post/3lndvzwoawc2i
https://www.pfrazee.com/blog/lexicon-guidance
https://fediversereport.com/atproto-explained-lexicons-and-video/
tradeoff between reusing feed.post and introducing a new lexicon for any app.
- positive: chicken/egg issue with users for a new app is reduced since interop + network effect of bsky app itself. also moderation, search, etc is handled. posts on bsky automatically show up in the extension, even without them knowing in a sense.
- negative: constrained by bsky schema (limited char count for annotations), and future changes.
new lexicon:
- complete flexibility in schema.
- fragmentation, versioning, maintenance.
skylight re-use's video lexicon, reelo created own.
example with reddit-like voting
- it could be the exact same as a "like" but the
direction property?
- other idea would be to add
direction to app.bsky.feed.like as an unspecced field? One could assume that a like is automatically an "upvote" and the extra field just indicates whether it's a downvote
{
"lexicon": 1,
- "id": "app.bsky.feed.like",
+ "id": "com.henryzoo.feed.vote",
"defs": {
"main": {
"type": "record",
"description": "Record declaring an upvote or downvote of a piece of subject content.",
"key": "tid",
"record": {
"type": "object",
- "required": ["subject", "createdAt"],
+ "required": ["subject", "createdAt", "direction"],
"properties": {
"subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" },
"createdAt": { "type": "string", "format": "datetime" },
+ "direction": {
+ "type": "string",
+ "description": "vote direction",
+ "enum": ["up", "down"]
+ }
}
}
}
}
}
tradeoff between reusing
feed.postand introducing a new lexicon for any app.new lexicon:
skylight re-use's video lexicon, reelo created own.
example with reddit-like voting
directionproperty?directiontoapp.bsky.feed.likeas an unspecced field? One could assume that a like is automatically an "upvote" and the extra field just indicates whether it's a downvote{ "lexicon": 1, - "id": "app.bsky.feed.like", + "id": "com.henryzoo.feed.vote", "defs": { "main": { "type": "record", "description": "Record declaring an upvote or downvote of a piece of subject content.", "key": "tid", "record": { "type": "object", - "required": ["subject", "createdAt"], + "required": ["subject", "createdAt", "direction"], "properties": { "subject": { "type": "ref", "ref": "com.atproto.repo.strongRef" }, "createdAt": { "type": "string", "format": "datetime" }, + "direction": { + "type": "string", + "description": "vote direction", + "enum": ["up", "down"] + } } } } } }