The Lexicon Community lexicon schemas lexicon.community

Like/dislike #1

Open opened by jauntywunderkind.bsky.social

I would love to have a like/dislike vote/downvote lexicon that can be used.

https://lexicon.garden shows a variety of vote/like lexicons already. This would be lovely to define/centralize.

Random Extras #

  • This is much more wandering in to the range of opinion, but I think it would be nifty & great to have some kind of vote rating. If we had floats I'd say 0<->1. 0<->100 integer is maybe ok but weird. We could have a maxVote.
  • Do we really want an explicit downvote? Maybe if we have range, we have like be negative value? I think there's good reason to have separate lexicon types for both.

Hey! I've built at.upvote.signal, having explicitly thought about this already! There's intentionally no downvote, as there's a lot of history of downvotes being bad for everyone.

Both the lexicons and the link aggregator website I built on top of them are open source on Tangled already, and I'd love to collaborate with folks on them. If it helps others adopt the at.upvote.signal, I'm also more than happy to do more work on it at any point ❤️

I had a similar question. I would like to integrate emoji reactions into my Bluesky client app, and I would vastly prefer to extend an established lexicon like community.lexicon.interaction.like than just roll my own obscure thing.

Perhaps something like…

{
    "lexicon": 1,
    "id": "community.lexicon.interaction.like",
    "defs": {
        "main": {
            "type": "record",
            "description": "A 'like' interaction with another AT Protocol record.",
            "key": "tid",
            "record": {
                "type": "object",
                "required": [
                    "subject",
                    "createdAt"
                ],
                "properties": {
                    "subject": {
                        "type": "ref",
                        "ref": "com.atproto.repo.strongRef"
                    },
                    "createdAt": {
                        "type": "string",
                        "format": "datetime"
                    },
                    "sentiment": {
                        "type": "string",
                        "minLength": 1,
                        "maxLength": 1,
                        "knownValues": ["🙂", "🙁", "👍", "👎", "♥️", "⭐️"]
                    },
                }
            }
        }
    }
}

btw, I love that knownValues can be a list, but is not enforced; that suits the need here perfectly.

I have been helpfully informed that minGraphemes/maxGraphemes (val 2) would be a better validation fit

Sign up or Sign in to add to the discussion.