diff options
author | zPlus <zplus@peers.community> | 2019-05-31 22:41:41 +0200 |
---|---|---|
committer | zPlus <zplus@peers.community> | 2019-05-31 22:41:41 +0200 |
commit | b53641c1fa4806d6274a4d05347aa9ed0573ac15 (patch) | |
tree | f675e7c10892256ef6c278f852a20e928fe72848 | |
parent | 2fd63b44ac268738e818f924e99adb22c373a886 (diff) |
Improve specification.
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | specification/forgefed-vocabulary.md (renamed from specification.md) | 45 | ||||
-rw-r--r-- | specification/forgefed.md | 85 |
3 files changed, 116 insertions, 18 deletions
@@ -2,7 +2,6 @@ !.gitignore !COPYING !README.md -!specification.md !doc doc/* @@ -17,6 +16,9 @@ python/* !python/forgefed_wsgi.py !python/run-dev-server +!specification/ +!specification/* + !vocabulary/ !vocabulary/* !vocabulary/COMMENT.md diff --git a/specification.md b/specification/forgefed-vocabulary.md index 9b0f273..403c6f8 100644 --- a/specification.md +++ b/specification/forgefed-vocabulary.md @@ -1,4 +1,4 @@ -# ForgeFed Specification - DRAFT +# ForgeFed Vocabulary - DRAFT **Editors:** @@ -25,10 +25,12 @@ and provides additional vocabulary for federation of version control services. 1. [Introduction](#Introduction) 2. [Types](#Types) 3. [Properties](#Properties) -4. [Client to Server Interactions](#Client to Server Interactions) ## Introduction +The ForgeFed Vocabulary describes a set of types and properties to be used by +platforms that support the ForgeFed protocol. + ## Types Base URI: `https://peers.community/ns/repo-fed-vocab#` @@ -39,7 +41,9 @@ Base URI: `https://peers.community/ns/repo-fed-vocab#` **URI:** `https://www.w3.org/ns/activitystreams#Follow` -**Notes:** used by a user who wants to follow a repository +**Notes:** used by a user who wants to follow a repository. +This activity doesn't define a new type (the `Follow` Activity is defined in +ActivityPub) but it's here for reference. **Example:** @@ -48,19 +52,20 @@ Base URI: `https://peers.community/ns/repo-fed-vocab#` "summary": "Alice followed Bob", "type": "Follow", "actor": "https://localhost/alice", - "object": "https://remotehost/bob" + "object": "https://remotehost/bob/repository" } #### Push **URI:** `https://peers.community/ns/repo-fed-vocab#Push` -**Notes:** +**Notes:** Indicates that new content has been pushed to the repository. The +Activity's object MUST contain a list of Commits. **Example:** { - "@context": "https://www.w3.org/ns/activitystreams", + "@context": "https://peers.community/ns/repo-fed-vocab", "type": "Push", "actor": "https://localhost/alice/repo2", "object": [ @@ -75,13 +80,27 @@ Base URI: `https://peers.community/ns/repo-fed-vocab#` ### Actor Types +#### Repository + +**URI:** `https://peers.community/ns/repo-fed-vocab#Repository` + +**Notes:** Represents a single repository. + +**Example:** + + { + "@context": "https://peers.community/ns/repo-fed-vocab#", + "type": "Repository", + "name": "Homeworks-2019" + } + ### Object Types #### Commit **URI:** `https://peers.community/ns/repo-fed-vocab#Commit` -**Notes:** +**Notes:** Represents a single Commit in a Repository. **Example:** @@ -97,7 +116,8 @@ Base URI: `https://peers.community/ns/repo-fed-vocab#` **URI:** `https://peers.community/ns/repo-fed-vocab#Ticket` -**Notes:** +**Notes:** Represents a single ticket (aka "issue") for a Repository. Tickets +are used to track ideas, enhancements, tasks, or bugs. **Example:** @@ -114,13 +134,4 @@ Base URI: `https://peers.community/ns/repo-fed-vocab#` ## Properties -## Client to Server Interactions - -### Follow Activity - -The `Follow` activity is used to subscribe to the activities of a repository. - -### Push Activity -The `Push` activity is used to notify followers of new code that has been -pushed to a repository. diff --git a/specification/forgefed.md b/specification/forgefed.md new file mode 100644 index 0000000..07aa4a8 --- /dev/null +++ b/specification/forgefed.md @@ -0,0 +1,85 @@ +# ForgeFed - DRAFT + +**Editors:** + +- deesix +- fr33domlover +- zPlus +- ... add other editors + +**Repository:** + +- [NotABug](https://notabug.org/peers/forgefed) + +**Copyright:** + +2019 ... + +## Abstract + +This document describes the ForgeFed protocol. ForgeFed is an extension of the +[ActivityPub](https://www.w3.org/TR/activitypub/) protocol for delivering +notifications and content for federation of version control systems. +The purpose of this specification is to describe a protocol that can be integrated +into source code management for enabling collaboration across different +platforms. + +## Table of Contents +1. [Overview](#Overview) +2. [Conformance](#Conformance) +3. [Objects](#Objects) +4. [Actors](#Actors) +5. [Client to Server Interactions](#Client to Server Interactions) +6. [Server to Server Interactions](#Server to Server Interactions) +7. [Acknowledgements](#Acknowledgements) + +## Overview + +ForgeFed is an extension of [ActivityPub](https://www.w3.org/TR/activitypub/) +and follows the same "actors" model, with a client-to-server protocol and a +server-to-server protocol. + +## Conformance + +The key words MAY, MUST, MUST NOT, SHOULD, and SHOULD NOT are to be interpreted +as described in [RFC2119]. + +## Objects + +Objects are the core concept around which both ActivityPub and ForgeFed are built. +Examples of Objects are Note, Ticket, or Image. +Objects are wrapped in Activities, a subtype of Object that describes some form +of action that may happen, is currently happening, or has already happened. +Examples of Activities are Create, Delete, or Follow. + +## Actors + +A ForgeFed implementation MUST provide an Actor of type `Repository` for every +repository that should support federation. + +A ForgeFed implementation SHOULD provide an Actor of type `Person` for every user +of the platform. + +## Client to Server Interactions + + TODO: how are these different than AP? + +## Server to Server Interactions + + TODO: how are these different than AP? + +## Acknowledgements + + + + +--- PUT THESE IN THE CORRECT PLACE + +### Follow Activity + +The `Follow` activity is used to subscribe to the activities of a repository. + +### Push Activity + +The `Push` activity is used to notify followers of new code that has been +pushed to a repository. |