Skip to content

[RFC] At a conference #1114

Open
Open

Description

@jubianchi

Inspired by @offskip-dave live-committing from Vue Fes Japan from Tokyo and in the spirit of the "Go Live" feature, I'd like to propose this one.

Why?

This morning, @offskip-dave live-committed Vue Fes Japan from Tokyo: "Heading to VueFes Japan now!", the keynote by Evan You, the tres.js talk, the panel moderated by Anthony Fu, and "If you are VueFes Japan, say hi!". From Italy, @zangetsu02 followed along ("antfu the goat").

  • Conferences are where devs meet, and live-commits are great to follow from afar.
  • Today nothing connects them. /dev/null shows who's streaming ("Live now"), but not that someone you follow is at a conference right now, or that 3 other nullers are in the same venue as you. "Say hi!" only reaches the people who happen to scroll past that commit.
  • It's cheap. "Go live" already has the right shape: a time-boxed status on the profile, a marker on the avatar, a sidebar block.

The mockups below replay that morning on a local copy (so the counts are off). Every other user is made up.

To be clear, this is not about tagging commits. You keep committing as usual. The status only says where you are, and groups you with the other nullers who are there.

Ideas

Saying you're there

From the same "…" menu as "Go live":

Image
  • Conference link (required): the conference's website or event page
  • Name: prefilled from the page title (link preview), editable
  • Until: today (a one-day conference like Vue Fes) up to 5 days, ending at the end of the day in your profile's time zone
Image

Leaving early is one click in the same menu. Like "Go live", the status clears itself once it ends.

A conference is identified by its link

No catalog to maintain, nothing to moderate up front: two people who paste the same link are at the same conference.

  • The link is normalized: scheme, www., query string, fragment and trailing slash are dropped
  • https://vuefes.jp/2026/ → /confs/vuefes.jp/2026
  • The path matters: vuefes.jp redirects to vuefes.jp/2026/, and next year's edition is vuefes.jp/2027/. Following redirects before normalizing would merge both spellings.
  • The dialog says "3 nullers are already at vuefes.jp/2026" as soon as the link matches, so people converge on the same link

A ticket on the avatar

A conference lasts days, not hours, so the marker is quieter than the red LIVE ring: a small ticket on the avatar's corner, in the log, hover cards and profiles. Both markers can coexist when someone streams from the venue.

Image

Profile

Image Image

"At a conference" in the sidebar

Right under "Live now": the people you follow, grouped by conference, the biggest group first.

Image

Conference page

Everyone who's there right now, people you follow first, with Follow buttons: Dave's "say hi!", for everyone in the venue. When you're not there, "I'm here too" opens the dialog with the link prefilled.

Desktop Phone
Image Image

The page only exists while someone is there.

How it fits with other RFCs

Privacy & moderation

  • You're sharing where you physically are, in real time. The status is opt-in for each conference, coarse (the conference, never the exact location), and ends on its own.
  • Blocks and mutes apply as for "Live now": people you blocked, or who blocked you, never see you in a conference list.
  • The name is free text shown on a public page, so it follows the same rules as the bio. The link follows the same rules as the website: http(s) only, nofollow.

Open questions

  1. A live log on the conference page? It would show the commits posted by the people there, during their stay. That's the real "live-commit" view, without tagging anything, but it also pulls in off-topic commits.
  2. Notifications? None in the first version, like "Go live". Later, maybe "@offskip-dave is also at Vue Fes Japan" when you're both there.
  3. Visibility: everyone, or only followers?
  4. Duration: is 5 days enough? or too mmuch?
  5. Phones: the sidebar is desktop-only. Should the conference block also appear somewhere in the mobile menu?
  6. Normalization: keep the full path, or only its first segment? How do we handle redirects and typos that split a group?

Activity

  1. jubianchi commented on Oct 24, 2026

    @jubianchi
    ContributorAuthor

    Related: #151 (events attached to commits) also brings conferences and meetups to /dev/null, but from a different angle. It's about a planned event that someone hosts, while this RFC is about where you are right now.

    The two don't depend on each other, but there may be bridges between them. For example, saying "Going" to an event could offer to set the "At a conference" status on the day, or an event could show who's there right now.

  2. zangetsu02 commented on Oct 24, 2026

    @zangetsu02
    Contributor

    We could also use commit tags (#hashtags) to group commits by event.

    When creating an event, you could choose which tags to associate with it, so all matching commits are automatically grouped in its feed.

  3. mnapoli commented on Oct 24, 2026

    @mnapoli
    Member

    I 100% agree this could be a good idea. I would generalize that to "events" so that could cover meetups, conferences, live events online, etc. Anything time-bound, /dev/null could be a place for the community of that conference to discover/find each other.

    Very good idea.

  4. jubianchi commented on Oct 24, 2026

    @jubianchi
    ContributorAuthor

    Following @mnapoli's suggestion, this RFC now covers events: conferences, meetups, online live events, anything time-bound. The core doesn't change: a time-boxed status like "Go live", identified by a link, with a page listing who's there.

    What changes

    1. The link stays the only identifier. No link, no group. That keeps out "events" that aren't meant to be public.
    2. On site or online, per person. You say how you're there, not what the event is, so a hybrid event simply has both. On site shows a ticket on your avatar, online a screen.
    3. From 1 hour to 5 days. A meetup or a stream lasts a few hours, a conference a few days.
    4. /at/… instead of /confs/…, e.g. /at/vuefes.jp/2026, so the page doesn't collide with the events of feat: host events with an issue-like page, a Watch-style going button and a milestone agenda #997 and feat: events attached to commits #151.
    5. Meetups and streams work with the same rule. Meetup pages usually have one link per occurrence (lu.ma/…, meetup.com/…/events/…), and stream links can reuse the YouTube and Twitch parsing "Go live" already does.
    6. Privacy depends on the mode. On site, you share where you physically are. Online, only what you're following.
    7. The link unfurls as you type it. The page's meta tags show the same link card as in the log (image, site, title), and its title prefills the name. You can check it's the right event before saying you're there.
    Image
    Event page Phone
    Image Image
    Image

    What doesn't change

    • It stores as little as "Go live": the link, the name, on site or online, and the end time, cleared when it ends. No history of where you've been.
    • "Who was there" (keeping the list after the event, to find each other afterwards) would need that history, so it stays a later evolution, out of the first version.
    • No commit tagging. @zangetsu02, hashtags were ruled out in feat: group posts into topics by their hashtags #9 and Hashtags, baby #791, but open question 1 (a live log of the commits posted by the people there, during the event) would give the same grouped view without any new syntax. With all the AI in /dev/null we could probably automatically classify commits from people at the event to display on the event page 🤔
  5. xHeaven commented on Oct 25, 2026

    @xHeaven
    Member

    @offskip-dave While trying to delete my own comment, I successfully deleted yours... any chance you remember when you wrote? 😅 I feel so dumb right now

  6. offskip-dave commented on Oct 25, 2026

    @offskip-dave

    @xHeaven It's all good. :)

    I was saying that this live commenting (committing in this case I guess) is very common in Japan, but it needs a mechanism to group/categorize commits that extend beyond the time of the event itself, since people commit about events before and after the actual event duration and date (before: event announcements, driving hype, after: sharing materials, insights etc.)

  7. Akiyo974 commented on Oct 25, 2026

    @Akiyo974
    Contributor

    Love this, and the "the link is the event" rule is what keeps it in the spirit of /dev/null: no catalog, nothing to moderate up front. A take on the open questions, plus a way to keep it as light as "Go live":

    1. A live log on the event page? Yes, but not in the first version. The page is useful on its own ("who's here, follow them"). Later, the log could show the commits posted by the people there during their stay, with a toggle between "everything they posted" and nothing at all, rather than AI classification: a wrong guess would hide the commit that mattered. @offskip-dave's point about before/after posts is real, but a time window keeps it predictable, and quoting a commit still works for the hype and the recap.

    2. Notifications? None in v1, like "Go live". The first one worth adding is the one that triggers the "say hi!": when someone you follow sets the same event as you, on site. Never for online events, it would be noise.

    3. Visibility: depends on the mode, as the RFC already hints. Online: everyone, like "Live now". On site: you share where you physically are, so I'd default to the people you follow back (mutuals), with "everyone" as a choice in the dialog. The event page then shows the count of everyone, but only the faces you're allowed to see.

    4. Duration: 1 hour to 5 days sounds right. Most conferences are 1–3 days, and the few longer ones can be set again. Ending at the end of the day in your time zone avoids the status vanishing during the after-party.

    5. Phones: a sidebar block isn't needed there. The ticket on the avatar already shows in the log, and the event page could be reached from the profile and from a line in the menu only while someone you follow is at an event, the same way the Starred tab only matters once you have stars.

    6. Normalization: keep the full path. Dropping to the first segment would merge vuefes.jp/2026 and vuefes.jp/2027, and meetup.com/…/events/123 with every other meetup. To avoid split groups, the dialog's "3 nullers are already at…" hint does most of the work, and following redirects before normalizing (as proposed) handles the rest. Typos just make a group of one, which is harmless.

    Keeping it fast, the same shape as "Go live":

    • Four columns on users next to the live_* ones (at_key, at_name, at_mode, at_ends_at), not a new table. One status per person, nothing to clean up: every query filters at_ends_at > now(), as LiveFollowingQuery does with live_ends_at.
    • An index on (at_key, at_ends_at), so the event page is a single indexed query with cursor pagination.
    • The sidebar block is a lazy shared prop like liveFollowing: the people you follow, minus mutes and blocks, grouped by at_key. Not computed on pages without the aside.
    • The name prefill reuses the link preview unfurling, and online events reuse the YouTube/Twitch parsing from "Go live".

    If it helps, I'm happy to take a piece of it once the shape is settled, for example the phone side (question 5).

  8. mnapoli commented on Oct 25, 2026

    @mnapoli
    Member

    FYI I'll cover this a little bit later today on stream (https://dev-null.sh/@mnapoli/commits/01a17318-afdc-71af-afc2-9cce8344dd68) if you want to join. It will not be 100% of what's described here, but it will be indirectly related in case you're curious to pitch in during the stream

  9. pinned this issue on Oct 27, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions