Moving beyond NFTs for content ownership
Building an open social graph as an infrastructure layer for Web3
The internet needs a single open social graph, not many different ones, if it wants to have real content “ownership”, composability, and interoperability.
Today every large social or content-based network has its own graph. On Meta, you have friends. On LinkedIn, you have connections. On Medium, you follow publishers. On YouTube and Twitch, you follow channels. On SoundCloud, you follow artists. Digging deeper, though these networks have different names associated with creators (e.g. artists, channels, publishers) and the connections between people (e.g. friend, follower), their graphs represent fundamentally similar things. If we could redesign these systems, we could eliminate this redundancy.
Enabling “content ownership”
Web3 has presented several new ideas to enable people to “own” their content and data, which today is often trapped in walled gardens. We can simplify the concept of “ownership” into two areas - A) the ability to take content across platforms while preserving full functionality, and B) the ability to monetize content.
One popular approach is minting content as NFTs. For example, mirror.xyz lets users mint NFTs for their writing1. Tools are also emerging to turn posts from traditional platforms like Twitter2 and Instagram3 into NFTs. While minting content as NFTs certainly enables monetization, it doesn’t magically enable the content to be fully functioning if moved across platforms. Consider a simple case - if we minted a NFT of an Instagram post, would it magically translate into a fully functioning Twitter post, as people would normally expect it?
Assume Twitter lets you import an NFT containing the post - what would happen to the comments section? Assuming the NFT captures that as well, what if the original commenters don’t have accounts on Twitter? How would you even know, without the ability to find their corresponding accounts? Assuming the comment section carries over, if you edited the post or someone added a new comment on Twitter, would it update on Instagram as well? While there are more messy details to consider, fundamentally interoperability requires far more technical consideration than simple NFTs implementations containing content and engagement data.
Aside from problems associated with content itself, the pure NFT-based approach also ignores the importance of distribution. If you wanted to switch platforms, it might take you a really long time to accumulate the same following or re-build all your connections. More sophisticated approaches to content ownership therefore also capture the social graph. Lens Protocol has a particularly clever implementation which not only stores all of a user’s posts and comments on a “profile NFT”4, and implements “follows” as NFTs on the chain5. Despite some concerns about scalability, as most “writes” to the protocol occur on-chain (social media can generate vast amounts of data), and privacy since some forms of content require privacy not afforded by on-chain implementations, the open and publicly available graph is a strong starting point.
Building a open universal social graph
Lens Protocol’s setup is admirable - but to optimize interoperability, perhaps it can be taken even further to the extreme.
Lens Protocol is optimized for a Twitter-like setup (as far as I can tell), supporting “public” social media where all users and content is publicly visible and connections are implemented as uni-directional “follows”. “Public social media” (which also includes Reddit) however represents only one subtype within the category of social media (which also includes “private” social media like Facebook), which is itself a subtype within broader media overall (which includes things like Medium). If Lens Protocol is essentially creating decentralized Twitter, what about the many other startups looking to rebuild Youtube, Reddit, Tik Tok, Medium, etc? What if they each created separate on-chain graphs using NFTs, or if separate graphs were created on-chain based for each distinct use-case - is that the best we can do?
A better possible solution would be to create the graph layer as an open infrastructure service which is flexible enough to accommodate variations required between different content types and networks. If an open standard can be agreed upon that defines connections based on connection type (“follow” vs. “friend”), relationship context (personal vs. professional), privacy (public, private), or even content type (although this could arguably be tracked separately), then there would be sufficient initial coverage to accommodate a wide variety of use cases.
The nuance is necessary to accommodate what we’ve observed about networks in the real world. Connection type is needed as networks may have connections that are either unidirectional (e.g. Twitter follows) or mutual (e.g. Facebook friends). Relationship context is a necessary input as it’s been said that LinkedIn largely exists because people want to keep their work-related lives separate from their personal lives. Otherwise for some types of content, it could be useful to have the option to keep the connection private - for example if I want to subscribe to a controversial publication or podcast friends may not agree with.
Within this setup, content-specific apps like Youtube or Twitch become simple “apps” on top of an open shared social graph, which is controlled by underlying users. Users control the graph, and hopefully their content, while applications shift their focus more to business-related functionality like content ranking, recommendations for new connections and monetization.
From universal graph to universal RSS feed
With an open social graph layer made publicly available, content creators would be able to port their content across applications, without losing functionality, while content consumers would receive a more unified view of everything they’re subscribed to.
For content creators, since they rather than closed platforms would now own their social graphs, audiences would be fully portable out of the box. They could share content from a new app they just started trying today (call this Twitchy) with their entire audience they spent years developing on another social media app (call this Twitterify). By comparison, today if a popular Twitter user was experimenting with livestreaming on Twitch, their options for reaching their Twitter audience would be to manually post a new Twitch video link each time, or asking repeatedly reminding users to follow them on the new platform. With this new setup, creators could ask fans to follow them once, rather than to follow them separately across Twitter, TikTok, Youtube, Snapchat, etc. If a particular follower was only interested in text rather than video content, based on the “content type” controls tied to the connection, they should be able to “uncheck” video content subscriptions as an option.
As a content consumer, imagine being able to parse a “universal RSS feed” where you could see in a single place all the content you are subscribed to across all channels. Instead of needing to log into closed platforms like TikTok, Youtube, and Twitch separately, all your video feeds could show up in a single place. While the graph itself does not itself provide this functionality by itself, having the interoperability originating from a shared graph would make this a lot easier to implement. Otherwise, account discovery would also be much improved, since discovering accounts on other apps for creators you already follow in one place becomes “free”, as long the the party you are connected to doesn’t have a privacy-related problem with this.
Can you enable interoperability without having a unified open social graph, but instead by connecting multiple smaller open social graphs together? To some degree, yes. The Ethereum Name Service (ENS), which is notably growing quickly in popularity6, lets you tie together aspects of your digital presence like domain names, wallet addresses, and logins behind a single username. Though it’d certainly be possible for a network to import a social graph by leverage ENS to lookup and authenticate with a user’s account on another network, this would rely upon the underlying networks being open to allowing exports and then investing in supporting such functionality.
Remaining questions
How is this all related to decentralized identity? Just as connections may have different contexts (personal vs. professional) and privacy settings, identities may as well. This would suggest that it may be worth exploring how to tie identity and the social graph together.
A broader thesis worth exploring is how to meaningfully decentralize Web 2.0 social and content platforms, of which social graphs are only an important part:
Profile, social graph, content (posts + interactions), recommendations for connections, monetization, content ranking (e.g. newsfeed or timeline)
Since “identity” maps well to “profile” and can also be linked directly to content posted by the identity, the first half of the list is mostly accounted for. The remaining unaccounted for aspects may be best tackled by clients or apps.
Will the combination of decentralized identity, an open social graph, and some RSS-like protocol be sufficient to decentralize the internet again?