Malcolm Ocean's roamblog

★ Redesigning Twitter

created 2020-04-30 · edited 2023-04-26 · open in Roam
  • type: design doc
  • status: messy & evolving
  • Redesigning Twitter for high-quality conversations
  • November 30th, 2021 I published an article just focused on MultiQT as top priority
    • I've been collecting these thoughts since mid-2018, and originally I was framing this as #​TwitterReplacement. I'm now somewhat more encouraged towards Twitter itself making some of these improvements, in part because it already has!
    • Some of this doc is wiggling its way out of date, which is cool.
      • For instance, Twitter now counts QTs in the RT count and displays "Retweets and comments" if there are some QTs not just RTs. This is one of the biggest things that many of us have been asking for! No idea to what extent our tweeting loudly about this influenced Twitter's design decisions.
      • The next main thing I'd suggest is better notifications.
        • It's important that they don't include a "mark unread" option because that's the road to becoming an inbox/todo list and would be awful.
        • But they need to bundle all notifications from a given conversation together.
        • Here's a link to some other suggestions lower down in this doc: Notifications
      • The other thing I think would be a huge gamechanger but it's much less obvious how to do it, is to have some way for Twitter conversations to converge, not just diverge.
        • Currently each reply is only a reply to one tweet, and you can only QT one tweet at once. This means it's hard to bring stuff together & come to a conclusion, and I think is partially responsible for twitter feeling chaotic & sprawling.
    • This design doc is still not very well-organized, but I've tried to clean it up a bit today because I wanted to tweet about it.
    • Things I'd like to do to improve this
      • More clear prioritization of Feature Ideas & Issues with Twitter
      • Integrate this tweetstorm (which is honestly a pretty good condensed summary of much of this page atm—I had forgotten about it until after I did the reorganizing today)
      • Think more seriously about design metaphors
  • Design Elements
    • Feature Ideas
      • Stuff to make twitter a better ~CRM
      • Probably good/straightforwardish
        • Errata
        • graph search — Ability to put in 2 tweets and see if/how they're connected in the graph
          • eg maybe they're both branches on the same tree
          • or maybe one is in a thread that quotes the other
          • or they're both quoted in the same thread
          • anything messier than that gets computationally a bit nuts, eg going up and down the stack or whatever
        • Views
          • multiquote tweet Ability to create an entity that collects N tweets together
          • Ability to reply to 2+ tweets at once
            • this is kinda bonkers on so many levels
            • let's start with multiquote tweet
              • + if you QT a (M)QT as a reply without any body, it expands the quoted tweets
        • Ability to see how many replies underlie a single reply
        • Ability to see when tweets are embedded in other tweets
          • X retweets, Y likes, Z embeds
          • Update: this basically exists now!
          • huh, could also have a thing where a tweet knows which PAGES it's embedded in too!
        • Clearer separation of retweet/fav functionality:
          • I want my followers to also see this tweet
          • I want the author of this tweet to know I read & enjoyed it
          • I want to have an easier time finding this tweet in the future
        • "Give this tweet less attention"
          • ~=Ability to downvote a tweet.
          • I don't know what if anything would show up numberwise (maybe nothing) but it would act to de-amplify the tweet—just from your followers!
          • reddit has high-Q stuff in part because low-Q stuff gets downvoted... so like a distributed version of reddit
        • events/reminders
        • volume button (see only top X% of someone's tweets, or max/day/user)
          twitter.com/KevinSimler/status/1074677158000410624 ← thread also includes other people speculating about an alternative
      • Random, fun, not super important
        • Allow forced meta-threads: each reply (including by other people) has to embed another thread
      • Needs work
        • Ability to publicly draft tweets/threads
          • ie they exist and can be viewed by (anyone? followers? mutuals)
          • but they are still editable (both the contents and the structure)
          • (this is pretty weird, maybe simply bad)
      • Maybe useful inspiration but would be dumb if implemented directly
        • #idea "say you had to pay a dollar to someone in order to retweet them"
          • to fix incentives
            • (this creates new terrible incentives, including people stealing others' jokes etc)
          • (incidentally, this would also offer a revenue model!)
          • or even this could be an increasing amount, where the first RT costs a tiny amount, but by a certain stage you just can't afford to RT
            • kind of makes it more clear that you're actually saying "even though this tweet already has a lot of visibility, I really think it should have even more"
        • Crazy idea: anonymous conversations within a small group. You select 3+ people and some sort of thing is created where the N of you can post but each post is just shown as being from that collective
          • would allow discussion of sensitive topics that people don't want to be officially associated with
      • Ability to see who engages with you most
        • Tiago: "Wanted: little meter next to each person’s profile showing how many times they’ve replied, answered polls, retweeted, and liked my tweets, so I can try to return the favor more reliably"

          twitter.com/fortelabs/status/1107833223508164608
      • Ability to re-order old threads
        • Visa: A thing that frustrates me about @Twitter is that I can't edit old threads. I don't actually need to edit individual tweets - I'd just like to be able to easily splice existing tweets into existing threads, move them about, reorder them, etc. Lots of potential value here
          twitter.com/visakanv/status/986562453902262273
      • Micro-polls, or emoji polls, or something
      • Notifications
        • (Separate tab for QTs ofc)
        • Ability to subscribe to a thread or subthread
          twitter.com/Malcolm_Ocean/status/1137018810685448192
        • Ability to unsubscribe from a thread or subthread
          • would be interesting (not necessarily *good*) if this showed on the thread that you'd extricated yourself
        • Ability to mute a thread for a period of time
          • (I don't care about this for the rest of today, but if someone comes back to it next week/month, lmk)
        • Would be organized by thread rather than just holy-shit a ton of replies
          • eg I retweeted this tweet twitter.com/Plinz/status/1108257997992554497 and the subsequent discussion started by one of my followers has generated dozens of comments, all with me in the mentions
          • but I get these as random little isolated things
          • obviously this would be fixed somewhat by having better tree-view etc
          • but it would also be good to group the notifications and have it say "18 new replies in [this thread]"
            • not sure if "this thread" should be the OP or the point at which you join
              • that's complex in general, because if you have a tiny branch you're on and the OP spawns a larger discussion, often you'd probably want to find out (and decide whether or not to follow it)
            • and you could even have it not just give the number but linearity quotients, number of participants, and who has recently joined it (particularly if it's someone you know)
      • Renounce repair tweets
      • Audio (and the ability to filter out audio or filter audio-only)
        • "What’s it gonna take to get something like Twitter for audio clips? Why hasn’t this happened? I understand some people don’t like to hear their own voice but the same is true for photos and videos. I basically want to put my AirPods in and hear a feed of my friends and people I find interesting with a simple gesture via my watch to skip or like."
        • also tweets that can only be commented on by ______
        • (some of this ruins the magic of "anyone can talk to anyone"; would need to be careful)
        • there are a lot of dimensions of how this could be done
          • "everyone who follows me right now but not future people" (a huge pain to keep track of in DB, probably)
            • vs "everyone who is following me at the time they try to access the tweet"
          • groups would include
            • followers
            • people I follow
            • mutuals
            • everyone who follows me and their followers (FoF)
            • mutuals and their followers
            • [specific ad-hoc group]
            • [list]
            • etc
    • Things that are okay & could be improved
    • Issues with Twitter
    • Thoughts for transitioning people from Twitter
      • Twitter has an "download your data" feature
        • so I could get people to use that, then upload it into the new app
        • and then use various other API features for getting all since the download!
        • that would be a lot for users with a lot of stuff
        • and I would need to re-id them in order to not have interlinks break if something went weird with twitter
          • but also since people will embed tweets from people who haven't switched, it should also be able to embed things just as tweets
          • but I guess also could
    • Thoughts for changing actual Twitter
      • What is Twitter up to?
      • High-level thinking
        • #tweet about Thread Ownership
          • Headline: Twitter is more like a blog than you think
          • replying to someone's thread is like commenting on their blog
          • new-thread-QTing is like making your own blog post as a response
          • mention the thread I made about me & _cosimia
          • also relates to the stuff about [relationships between tweets] below
        • relationships between tweets — #todo #tweet about this
          • Elaborate on this thought:
          • Attempting to list the relationships tweets could have:
            • ☑ Reply → linear flow; after that tweet, read this one
            • ☑ QT → commentary, before that tweet, read this one
            • ☒
          • Attempt 2 - focusing on the meaning, not the feature or app affordance
            (noticing after writing a fair bit here... I appear to implicitly use numbers for reply-esque relationships and x for QT-esque relationships)
            • tweets A1,A2,...,A10 form a coherent train of thought (= thread of replies)
            • tweet B' is a footnote to tweet B (where B is probably in a longer thread, or in a conversation)
              • sort of like a footnote, this could be an elaboration, a definition, a citation, or all sorts of other things
              • (this can be sort of done now, by tweeting a whole thread then later add a parenthetical. I have a few examples, maybe in my first McGilchrist thread, or in that thread where I was quoting Romeo talking about woo)
                • what can't be done now is clearly indicating the existence of such a thing. it shows up just as the fact that that tweet has 2+ replies rather than 1
                • this also is super borky in relation to thread ownership
            • tweet C2 is a tangent from tweet C1
              • this is very fucking similar to the B parenthetical above. maybe they're identical, but I wanted to explore if they would need different interfaces
              • one way that this currently gets implemented, actually, is that C2 is a new thread that QTs C1
                • and this would actually be basically fine, if it weren't for the fact that there's no natural way to get from C1 to C2!
              • related concept - tweet C2* is a parenthetical after tweet C2 before tweet C3
                • the distinguishing feature of a parenthetical being that it can be omitted without losing meaning
                • one thing I'm wanting to note is that you could very visually distinctly have a twitter thread
            • tweet D (+thread) is a new thought, inspired by tweet Dx (ie Dx is the context for thought D)
              • again, not sure how this differs from the above, but something about "this thread was inspired by this tweet" seems like a thing
              • OH! I know part of how this is different, maybe!
              • it's for when you want to have your own top-level thread that you own (though this concept is confused; better would just be the ability to reply & hoist)
                • and yet you're also implicitly replying to somebody else (including your past self)
                • blogs distinguish this via comments vs "a post on my own blog as a reply"
                • Medium handles this in a curious way, hm... #2integrate
              • so you might want to actually say "first, read this tweet" or "first, read this storm" and this gets funny because QT-embeds are below the main tweet
                • which on one level is fine, you make a tweet that says "first, read this, then keep reading for my thoughts <embed>" then another series of tweets with thoughts
            • tweet E embeds tweet Ex in another thread to make a point
              • (difference between embed-with-commentary and embed-as-whole-node in thread)
            • tweet F* is a correction/update to tweet F
              • there are a whole bunch of ways to implement this, that don't currently exist
              • people have talked about it; I probably have links to this elsewhere in this workflowy
            • tweet G brings tweets Ga,Gb,...,Gg together
              • basically this functions as "this tweet is a reply to ALL of these N tweets"
              • if you're only tracking replies, this is where twitter becomes a graph, not a tree
              • here's a crappily implemented example with links & screenshots
              • what is the point of this?
                • tweet G would show up in the replies list of Ga, Gb, etc
                • if you were looking at tweet G, you could see tweets Ga, Gb, etc
              • on reflection, there is one sense in which this could be achieved by something like
                • you can QT multiple tweets at once
                  • (maybe this needs a whole new name, call it a collection or something)
                • QTs finally have backlinks
              • but that doesn't quite capture what I'm looking at here, & it relates to this implicit framing:
              • Also this thread is relevant
            • tweet-tree (collapsible & zoomable)
              • H1
                • H1.1
                • H1.2
              • H2
                • H2.1
                  • H2.1.1
                  • H2.1.2
              • [structurally this is what workflowy is except its nodes have some differences from tweets]
                • diffs: in twitter
                  • each node has one clear author
                  • each node is non-editable and has a timestamp
                  • nodes may embed various other things including other nodes
                  • 280char limit, line breaks allowed, no main-vs-note distinction
          • [stuff about prose, now in malcolmocean roam]
            roamresearch.com/#/app/malcolmocean/page/fDzXwsNW3
          • Got some inspiration while reading this article by KK about books and thinking about what prose is. One thing it inherently is is linear.
            kk.org/thetechnium/what-books-will/
            • Multimedia prose is still prose in this sense.
              • ie text with stuff embedded (stuff = images, tweets, threads, videos, polls, flashcards, &+++)
              • because there's still a clear order in which to read it
              • also most poems are basically prose in the sense I'm using it here
                • (although something with a repeating refrain could be understood as a nonlinear piece of text!)
                  • which is then making me think of musical notation, repeat signs, and da capo
              • Here's an interesting meta-piece:
                • I find myself wanting to add the "ie text with stuff embedded" as a parenthetical after "multimedia prose"
                • but that becomes so long it ruins the clarity of the simple sentence "Multimedia prose is still prose in this sense."
                • which then makes me want a feature that lets me insert a caret or something ^ and have the parenthetical float outside the linear flow of the text
                  • tooltip-notes (like WBW & meaningness) kind of achieve this role, but it's annoying to have to actually do the hover, so in practice people often don't do it
            • So this is part of what is powerful about a thread structure. It occupies an amazing space between pure prose (100% linear) and fucking graphs that are a mess and really hard to navigate.
              • ie it has a default linearity to it, meaning you're still sharing a coherent train of thought
              • but then also because everything is nodular
                • individual links in that chain can be reused in other thought-trains later
                  • this reusability is what comes from the magic of the embed/QT, which by default a messy-ass graph doesn't have either
                • replies/comments can branch off from specific nodes
            • Then, there are multiple ways to relate prose & nonlinearity.
              • ONE is the wikipedia model. Hypertext books like meaningness are other examples. Here, there is long-form prose, just like a book or newsletter, except individual words can be linked to other long-form prose items. Some deeplinking is possible via section headings.
              • TWO is the google docs model. There is one linear flow of prose, and ALSO there's commentary on the side. This commentary can tag people or even assign some edit to someone.
              • THREE is the twitter model. Replies & embeds (both other tweets as QTs and media like youtube) allow short-form prose to compose a series of nodes. Importantly, the reification* of threading means that this isn't just a crazy graph.
                • (aside: better word than reification? affordance? function, groove, default, weight... I'm trying to point at how by replying tweets together, they kind of stick as a thread)
                  • the tweets don't change order... I can link to a thread and know that it'll continue to be the thread that it is
                • the point is, that I can make a thread and say "follow these thoughts from start to end" and then nothing can interrupt that thread. people can comment on any node in the thread, but that doesn't break the flow
                • this breaks down, however, because sometimes A makes a thread and B makes a sort of thread-of-replies but then if A replies to the first message in B's thread, then it breaks the flow of what B was saying in the main view (because A owns the thread) and there's no way to get it back. This makes it really hard to clearly see what's happening in dialogues.
                  • ideas for ways to improve this (all of these could be implemented poorly)
                    • give the Reply UI a threading feature and make those subthreads uninterruptible (ie owned by their creator)
                    • whenever someone replies to themselves, treat that differently than dialogue
                    • value order-of-reply somewhat more than thread ownership
                    • ~ when there are replies, show the avatars & first lines of those replies under the main tweet
                    • see how many total replies are under a given
                      workflowy.com/#/c56379c9c080
              • FOUR? is tables, eg like I have my blog posts in airtable.
                • not sure how this relates exactly but it feels important
                • actually, maybe even a better example than my blog posts is the harvesting models/incidents etc table that benj & I worked on summer '16
              • FIVE? is progressive summarization. A cool UI to try would be one where you can actually collapse-away the different layers
                • eg in this image, being able to hide what's not highlighted; to somehow more densely interlink the summary & remix with the original i0.wp.com/cdn-images-1.medium.com/max/800/1*cs4WrYZDSERqIfHJBZoflQ.jpe
                • in a twitter context, you could imagine this as the ability to flag tweets and then collapse thread thread to only the flagged tweets visible
                • oh shit! this is actually kind of how workflowy works!
                  • it doesn't do ProgSum and its collapsing isn't like sublime where you can instantly collapse to a certain level
                  • but it does have the ability to type something that reads linearly like prose and yet also can be collapsed to view its structure
              • SEVEN: choose your own adventure
                • largely is a thing with fiction, but the format can be (and surely has been) adapted for nonfiction
            • books have a tiny bit of nonlinearity
              • in the form of the table of contents and the index. and footnotes
                • but these are all terribly implemented!
              • kindle footnotes should use a zoom gesture or something and should shot up as a modal atop the page, not jump me to the fucking end of the book like it's made of paper and needs to be stored at the end to be kept out of the way)
                • Metamitya notes: knovigator would do this
                  • "it would open a footnote as its own first-class citizen"
                  • this seems pretty great to me
            • What I really want to have is a few really good editors for:
              • trees (workflowy!)
              • tables (airtable!)
              • prose (google docs!)
              • threads (twitter!)
              • ??
            • PLUS the ability to embed any of these anywhere within any of the others. Boom.
            • So I could write a blog post within workflowy, or embed a workflowy tree in a twitter thread, or make a twitter thread in an airtable, or have a table within a google doc.
            • @NotionHQ seems like maybe it's trying to be this but so far it's mediocre at trees/prose/tables and doesn't support threads at all.
          • aside: there's also what relation a tweet and a user can have
            • which is currently
              • from:USER
              • to:USER
            • others that could exist
              • mentions:USER
                • (I think this is currently confused with to:, but it's conceptually different. there is an obvious obvious difference between mentioning someone and addressing them)
                • I'm not sure what this would actually look like; maybe too complex to implement?
              • quotes:USER
              • ??? feels like there could be more but maybe it's that simple
      • twitter working on twttr prototype that is more convo-oriented
        techcrunch.com/2019/03/12/a-first-look-at-twitters-new-prototype-app-t…
      • what if twitter returned to having one of the best APIs and being a really powerful platform, and made up for lost ad revenue by... making users-of-apps-that-use-certain-API-features pay a subscription fee???
      • thing about @​jack being maybe more bought in
  • Examples on various levels of abstraction
  • Related stuff
  • Misc stuff re #​TwitterReplacement
    • gif search bookmarks
    • how to fund getting started? twitter.com/webdevMason/status/1132858642376536064
      "...an app to connect micro-grant funders with makers working on all sorts of cool projects. IMO, small, no-strings grants are potentially a *very* high-impact vehicle for invention."
    • Name ideas
      • for an alternate app
        • RHIZOME / rhizomatic
          • (or rhizone / ryzone)
          • this has totally the right meaning and is totally shitty by a dozen other metrics
          • oooh, roam could be though of as short for rhizome
          • ooh and there are lots of cool plants that have rhizomes, including
            • rhubarb, lotus, bamboo and bunch grasses
            • hops, asparagus, ginger, irises, lily of the valley, cannas, and sympodialorchids
          • rize or something would also be neat
      • for a layer on top of existing twitter
        • Parakeet? Perch? eh, probably something less punny is better
        • ooh, Myna, which is an Island reference
    • "There aren't any ads in the thread view on twitter"
      • (at least I don't think so)
    • Other things that might be relevant
    • Had a random thought 2020-05-21 that Twitter is kind of like... linked-list structured, in a way that other apps aren't
      • like technically this sort of amounts to a tree, but it has a different feeling, the way each tweet just points to the next rather than them all being in an array somewhere
  • Open Questions
  • Notes from May 29th, 2019 convo with Priya & GWS about future of Twitter
    • M: one thing is the PKM/Zettelkasten thing, which @​Conaw maybe will build
      • and then there's something more like Chat Client for twitter
    • G: iMapping
    • P: not PKM but Hive Mind KM
    • M: hard to put the first dot before connecting dots
    • G: thesis poster - "you need a prompt"
      • stories - tracing paths through nodes, open threads in a story
      • P: yeah, (associative) network
        • also part of what makes twitter powerful is the "you need a prompt" thing
      • M: the birds they sing, at the break of day... start again, I heard them say
        • twitter has a natural "start again" function in the form of the nowness of each tweet
        • and you can put a half-formed thought in and people might build on it or poke you to do more with it... so it gets tended to
      • ((surface area
      • M: I think I want to call my scratchpad account "raw"...?
        • "snippets"
        • "workings"
    • P: GKeep, Evernote, Twitter, Notion... texts...
      • I lose things that way
    • [ recording-as-notetaking started @ 21:56 ]
    • M: btw, you both want to make a self-sustaining software business
    • tipping points for twitter shift
      • M: my meta-stuff re TwitterReplacement
      • P: also Visa & Anna went to SF at the same time, reified InterIntellect
        • sense of room for the online relationships to be offline too, which makes them more real even if they're not actually offline
    • M: Marco Polo - can't stop the video from being sent when it's being recorded
      • different kind of nowness
      • "it's one of the only asynchronous things I'm aware of that you can't edit"
        • P: well, livestream, but yeah
        • (so MP is like a 1-on-1 livestream)
        • (oh also nexusevents.io kinda has a thing like that)
      • G: for writing... I've found it very useful to use tools like The Most Dangerous Writing App
        • M: spreeder-like thing but for writing (just shows current line)
        • G: MDWA has a mode where it hides what you've already written, but still destroys things if you stop
    • @ 22:12
    • G: question around structure of these mediums...
      • where do I start as someone who opens up twitter?
      • P: almost feel like gradual on-ramp is by-design
        • finding your way in through a node on the network
        • twitter surfaces related stuff for you... things you never expected
        • but yeah, could use better profile, and not just have the nowness there
      • M: people linking things together
        • P: yeah, and I now see if eg someone replies to one of your tweets from a year ago
        • P: and search for a book title from people I follow
          • and then there's novel stuff
          • M: ooh! #idea what if I could put in certain interests (eg McGilchrist) and then if I follow someone, it would
          • P: or auto-sourcing conversations between a new follow and some old follows
            • M: can search for that...
      • M: twitter notifications & search is like email inbox from pre-gmail conversation threading D:
      • G: now I'm like "how is email different from twitter?"
        • P: biggest one...
          • gdocs - only one layer of threading
          • email - you can do multiple layers, but you lose context
        • M: email has a mandatory "to" field
        • P: well and the character limit
    • M: if you go to this page, it looks kind of like a tweetstorm unrolled
    • P: trying to run an experiment soon... taking longer form things and turning them into essentially tweet threads
      • OnMoloch account
      • M: #idea better ability to embed on twitter a tiny piece of an article
        • maybe what they're doing with Highly?!?
    • P: limitations of search & also limitations of tables of contents
    • G: another potential option...
      • ability to identify two tweets as the same thought
      • (( M: ability to revise a tweet without deleting the old one))
    • [ different versions of alts / private accts / scratchpads etc ]
    • @ 22:55ish [ people whose private alts are more interesting than their public accts ]
      • P: I think I've had some success getting people to be more authentic
      • userstyles
        • tweetonly
        • hide notification count
        • block promoted tweets
        • Focus Twitter Permalink
          .PermalinkOverlay-modal {
            top: 0 !important;
            left: 0 !important;
            margin-left: 0 !important;
            right: 0 !important;
            width: 100%;
            height: 100%;
          }

          .PermalinkOverlay-with-background {
            background: black;
          }

          div.PermalinkOverlay-content {
            position: absolute;
            top: 60px !important;
            left: 50% !important;
            width: 640px !important;
            margin-left: -320px !important;
            right: auto !important;
          }