Survey or Poll lexicon

Howdy! I’m building a survey/poll app for ATProto and non-ATProto users. Since I’m creating a new lexicon, figured I’d see if it would fit here instead of in my own namespace. Feedback requested.

Context

I run an event and group organizing platform that already federates on the community lexicons for events and RSVPs. Now I need surveys so groups can set goals and events can do planning polls (“what time works?”, “what topics should we discuss?”).

I put something together over the past week - it’s working for my needs, but there’s plenty of room for fresh eyes. Links on request.

I’ve got no professional experience with surveying/polling, so I encourage anyone with domain experience to share input here.

Prior art

Bluesky polls: poll.blue and blueskypolls.xyz store data centrally rather than on PDS.

ActivityPub/Mastodon: Uses Question type with oneOf/anyOf for options. Single-question only.

SurveyJS: Open source JSON schema with 24+ question types. Comprehensive but complex; freemium business model.

Commercial: Google Forms, SurveyMonkey, Typeform (general surveys); Doodle, Rallly (scheduling polls).

Current approach

I have three lexicons in my own namespace (net.openmeet.survey):

  1. net.openmeet.survey - Survey definition (multi-question, supports single/multi choice and free text)
  2. net.openmeet.survey.response - User responses (stored on voter’s PDS via strongRef)
  3. net.openmeet.survey.results - Finalized anonymized results, captured at survey end time

Source: https://github.com/OpenMeet-Team/survey/tree/main/lexicon

Questions

  1. Anyone else working on poll/survey stuff who wants to collaborate on the schema?
  2. Thoughts on trying to adopt the SurveyJS model instead of rolling a new one
  3. Any feedback on the lexicons I’m proposing?

Would love to federate on surveys the same way we do with events!