ceramicnetwork / CIPs

The Ceramic Improvement Proposal repository
https://cips.ceramic.network/
MIT License
82 stars 22 forks source link

Collection Definition #8

Closed michaelsena closed 3 years ago

michaelsena commented 4 years ago
cip: 28
title: Collection Definition
author: Michael Sena (@michaelsena), Joel Thorstensson (@oed), Paul LeCam (@PaulLeCam)
status: Idea
category: Standards
type: RFC
created: 2020-05-22
requires: Tile Doctype (CIP-8)

🚨 This is a placeholder for an idea, and we will work to draft the CIP at a later time. Feel free to leave comments and ideas on this issue.

Simple Summary

This CIP specifies a Collection Definition which is a document created by a developer to describe the generic data model for their application's user data.

Abstract

Collection Definitions are created by developers to describe the user data model of their application in a public and transparent way. Collection Definitions include collections of stores which conform to store types, schemas, and access controllers.

Collection Definitions are complimentary to Collection References (CIP-29), which actually contain user-specific information about the generic stores described in the Collection Definition. Links to both of these documents are stored in a DID's Collections Index (CIP-16), providing a way for user data to be made interoperable across application and platforms.

Motivation

The user-centric model of application development aims to make data created by one application consumable by another. Achieving this depends on allowing application developers to publicly describe their data model in a way that can be universally access by other applications.

Decouple schemas from data stores:

Make schemas publicly discoverable:

Enable cross-application data portability:

Enable convergence around schemas:

Specification

Schema

store: A description of the data store. (i.e. Textile, OrbitDB, Ethereum, Ceramic)

storeType: The type of data store. (i.e. thread, key-value, feed, registry, transaction, doctype)

accessController: The access control system used by the store.

schema: The schema used by the store.

PaulLeCam commented 4 years ago

For collections of Ceramic documents, it might be useful to support pagination so that apps can load iteratively rather than possibly needing to load and parse a large document for a collection having lots of items. I like the ActivityStreams spec for collections, notably the difference between ordered and unordered collections, the fact the collection holds pointers to the first and last pages and each page has pointers to the next and/or previous page.

michaelsena commented 4 years ago

@PaulLeCam I think this is better suited for the Collection Reference, which actually contains user-specific information about the generic collections described by this document.

oed commented 3 years ago

Closing, stale.