Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Connections Index #17

Closed
michaelsena opened this issue May 22, 2020 · 1 comment
Closed

Connections Index #17

michaelsena opened this issue May 22, 2020 · 1 comment

Comments

@michaelsena
Copy link
Member

michaelsena commented May 22, 2020

cip: 18
title: Connections Index
author: Michael Sena (@michaelsena), Joel Thorstensson (@oed)
status: Draft
category: Standards
type: RFC
created: 2020-05-22
requires: Tile Doctype (CIP-8), StringMap (CIP-9)

Simple Summary

Connections Index simply stores links to other documents that contain various aspects of a DID's social graph.

Abstract

Connections are an important aspect of one's identity and can take many forms such as follows lists, friends, contacts, family, etc. In a user-centric model, this information should be controlled by a user and portable across applications. This eliminates the need for users to rebuild their entire social graph on every platform that they use.

Connections Index provides a standard interface for discovering and routing to various documents that represent different aspects of a DID's complete social graph. Connections Index does not store the social graph information itself, but rather stores pointers to documents that do.

Connections Index is a subdirectory of the Identity Index (IDX) (CIP-11) and is often linked from the Root Index (CIP-12).

Motivation

  • Connections are a critical aspect of one's identity
  • Connections should exist independent from any platform
  • There will be many different types of connections lists
  • There should be a standard interface for applications to locate and query these connections lists

Specification

The Connections Index specification consists of a doctype, schema, table, and tags.

Connections Index Diagram

Doctype

Connections Index is a Tile Doctype (CIP-8).

Schema

Connections Index utilizes the String Map (CIP-9) schema, which simply stores a list of strings which map to other strings. In this context, the key string should contain the name of the social graph resource, and the value string should contain its location. A reference to this schema should be included in your Connections Index document when it is created.

Table

The Connections Index Table (to be created at a later time) contains the standard set of properties that may be contained in any given Connections Index. New properties can be added to the table by following the steps below. Additional properties not found in this table may be stored in any Connections Index, however they may be less interoperable since others may not know what they represent. Here are some common examples of properties stored in the Connections Index:

  • follows: the DocId of a Follows List (CIP-N), which contains a list of DIDs that this DID is following
  • contacts: the DocId of a Contacts List (CIP-N), which contains a list of contacts
  • family: the DocId of a Family List, which contains a list of family members

How to add a new property to the Connections Index Table

  1. Choose a unique, descriptive property name.
  2. Add a description for your property.
  3. Submit a PR to the CIP repository updating the Connections Index Table with your property.
  4. Mention the authors of this CIP in the comments of your PR.

Tags

When creating a Connections Index document, add ConnectionsIndex to the tags field.

Example

An example Connections Index document.

"doctype": "tile"
"schema": "<insert canonical schema for String Map>"
"tags": ["ConnectionsIndex", "StringMap"]
"content": {
  "follows": "ceramic://bafyljsdf1...",
  "contacts": "ceramic://bafysdfoijwe2...",
  "family": "ceramic://bafysdfoijwe3..."
}

Suggested Usage

Root Index: Connections Index provides a directory of connections lists, however connections are just one type of resource that can be associated with a DID. The Root Index (CIP-12) provides a top-level root directory for resources, and can contain a property called connections which stores a link to a Connections Index document. The recommended path for mapping from a DID to the Connections Index is: DID/Root Index/Connections Index.

Rationale

Extensibility & Flexibility: It is impossible to predict all of the types of connections that need to be associated with any particular DID. Therefore Connections Index was designed to be an infinitely extensible directory that can support any number of connections lists.

Decentralization & Trust: Connections directory information is data that needs to be globally-available, censorship-resistant, and live permissionlessly in the public domain (not on any single server). Additionally this information should be owned by a DID and will need to be updated from time to time. These requirements make Ceramic the most appropriate platform for publishing this content.

Implementation

String Map Schema: Find the String Map Schema here.

Connections Index Table: Find the table containing standard Connections Index properties here (to be updated when available).

Libraries: Not yet available.

Copyright

Copyright and related rights waived via CC0.

@michaelsena michaelsena changed the title CRC: Connections Document CRC: Connections Schema May 23, 2020
@michaelsena michaelsena mentioned this issue May 25, 2020
@michaelsena michaelsena changed the title CRC: Connections Schema CRC: Connections Document May 25, 2020
@michaelsena michaelsena changed the title CRC: Connections Document Connections Routing Document Jun 25, 2020
@michaelsena michaelsena changed the title Connections Routing Document Connections Index Jul 6, 2020
@oed
Copy link
Member

oed commented Sep 28, 2020

Stale, closing.

@oed oed closed this as completed Sep 28, 2020
# for free to join this conversation on GitHub. Already have an account? # to comment
Projects
None yet
Development

No branches or pull requests

2 participants