CIP-142: Linkfeed - a content feed abstraction standard Source

Author Zhixiong Pan, Liang Qiao, dugubuyan, Alex Wu
Discussions-To https://forum.ceramic.network/t/linkfeed-schema-rfc-wip/1199
Status Draft
Category RFC
Created 2023-06-28

Simple Summary

Linkfeed is a feed abstraction standard built on top of Ceramic’s ComposeDB. This standard enables the generation of link references both within and outside the Ceramic Network. By curating a collection of such links, anyone can construct a feed-like protocol or application. This could cover a range of applications, including social media platforms or any kind of news feed. An older version was implemented using TileDocument here https://github.com/chainfeeds/linkfeed.

Abstract

This CIP propose a canonical ComposeDB data model for sharing links on the internet, inspired by popular platforms like Reddit, Hacker News, Digg, and del.icio.us / Pinboard. The proposed data model aims to facilitate interoperability among these platforms, enabling seamless sharing and aggregation of link-based content.

The ComposeDB data model incorporates key components such as the URL, title, description, thumbnail/image, tags, metadata.

Motivation

Web feed is a common concept. Many types of information can be shaped into this form, which allows for the creation of various applications. The main purpose of this standard is to enhanced interoperability through the use of common data fields and structures, enabling smooth data exchange between platforms. This promotes cross-platform integration, allowing users to share links seamlessly across multiple platforms and facilitating the aggregation of link-based content from diverse sources.

Specification

type Linkfeed @createModel(accountRelation: LIST, description: "A feed abstraction standard.") {
  title: String! @string(maxLength: 2000) 
	content: String! @string(maxLength: 100000)
  url: URI! #source_url
  uuid: String! @string(maxLength: 120) # application context specific UUID
  status: String @string(maxLength: 20) # life cycle status of the link, eg. pending, published
  metadata: String @string(maxLength: 100000) # meta field
	tags: [String] # annotation for the link
  version: CommitID! @documentVersion
  createAt: DateTime
  modifiedAt: DateTime
}

Rationale

By adopting this standardized data model, platforms can achieve consistency in representing shared links, making it easier for users to navigate and interact with content across different platforms. This is achieved by using a canonical ComposeDB data model, so that platforms can unlock the potential for greater collaboration, user engagement, and content discovery. It paves the way for a more connected and interoperable internet landscape, where link-sharing platforms can interact harmoniously while providing users with a unified experience across various services.

Backwards Compatibility

N/A

Implementation

A referenece implementation https://component-doc.s3.xyz/. An older version was implemented using TileDocument here https://github.com/chainfeeds/linkfeed/.

Security Considerations

N/A

Copyright and related rights waived via CC0.

Citation

Please cite this document as:

Zhixiong Pan, Liang Qiao, dugubuyan, Alex Wu, "CIP-142: Linkfeed - a content feed abstraction standard [DRAFT]," Ceramic Improvement Proposals, no. 142, June 2023. [Online serial]. Available: https://github.com/ceramicnetwork/CIPs/blob/main/CIPs/cip-142.md