commit c236caa20d9b1a48665ed3549308828c05f7840d Author: khuxkm Date: Thu Aug 9 00:40:24 2018 -0400 Initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..36c7e13 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/vendor/ +composer.phar + diff --git a/README.md b/README.md new file mode 100644 index 0000000..84088bc --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# rfcs + +Similar to [khuxkm's previous attempt](https://github.com/tildetown/tilde-rfcs), this project will bring an RFC-style proposals system to the the tildeverse. + +However, unlike that attempt, this system will use YAML front-matter. + +See [RFC 0](https://rfc.tildeverse.org/rfc.php?number=0) for more info. diff --git a/apple-icon.png b/apple-icon.png new file mode 100644 index 0000000..df43444 Binary files /dev/null and b/apple-icon.png differ diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..ed8bfd9 --- /dev/null +++ b/composer.json @@ -0,0 +1,6 @@ +{ + "require": { + "mnapoli/front-yaml": "^1.6", + "michelf/php-markdown": "^1.8" + } +} diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..ee74d16 --- /dev/null +++ b/composer.lock @@ -0,0 +1,262 @@ +{ + "_readme": [ + "This file locks the dependencies of your project to a known state", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "This file is @generated automatically" + ], + "content-hash": "f693531fd51bd92297c17d6a290a6f16", + "packages": [ + { + "name": "erusev/parsedown", + "version": "1.7.1", + "source": { + "type": "git", + "url": "https://github.com/erusev/parsedown.git", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35" + }, + "type": "library", + "autoload": { + "psr-0": { + "Parsedown": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" + } + ], + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2018-03-08T01:11:30+00:00" + }, + { + "name": "michelf/php-markdown", + "version": "1.8.0", + "source": { + "type": "git", + "url": "https://github.com/michelf/php-markdown.git", + "reference": "01ab082b355bf188d907b9929cd99b2923053495" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/michelf/php-markdown/zipball/01ab082b355bf188d907b9929cd99b2923053495", + "reference": "01ab082b355bf188d907b9929cd99b2923053495", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Michelf\\": "Michelf/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Michel Fortin", + "email": "michel.fortin@michelf.ca", + "homepage": "https://michelf.ca/", + "role": "Developer" + }, + { + "name": "John Gruber", + "homepage": "https://daringfireball.net/" + } + ], + "description": "PHP Markdown", + "homepage": "https://michelf.ca/projects/php-markdown/", + "keywords": [ + "markdown" + ], + "time": "2018-01-15T00:49:33+00:00" + }, + { + "name": "mnapoli/front-yaml", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/mnapoli/FrontYAML.git", + "reference": "24070ace8b741247bb3161cbb38ecc541268b296" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mnapoli/FrontYAML/zipball/24070ace8b741247bb3161cbb38ecc541268b296", + "reference": "24070ace8b741247bb3161cbb38ecc541268b296", + "shasum": "" + }, + "require": { + "erusev/parsedown": "~1.0", + "php": ">=5.4.0", + "symfony/yaml": "~2.1|^3.0|^4.0" + }, + "require-dev": { + "league/commonmark": "~0.7", + "phpunit/phpunit": "~4.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Mni\\FrontYAML\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "time": "2017-10-29T19:29:55+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.9.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" + }, + { + "name": "symfony/yaml", + "version": "v4.1.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "46bc69aa91fc4ab78a96ce67873a6b0c148fd48c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/46bc69aa91fc4ab78a96ce67873a6b0c148fd48c", + "reference": "46bc69aa91fc4ab78a96ce67873a6b0c148fd48c", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-07-26T11:24:31+00:00" + } + ], + "packages-dev": [], + "aliases": [], + "minimum-stability": "stable", + "stability-flags": [], + "prefer-stable": false, + "prefer-lowest": false, + "platform": [], + "platform-dev": [] +} diff --git a/footer.php b/footer.php new file mode 100644 index 0000000..819d876 --- /dev/null +++ b/footer.php @@ -0,0 +1,6 @@ +

+ + + + + diff --git a/header.php b/header.php new file mode 100644 index 0000000..83c273a --- /dev/null +++ b/header.php @@ -0,0 +1,21 @@ + + + + + + + tildeverse RFCs | <?=($title ?? 'the tildeverse RFC system')?> + + + + + + + + + + + + +
+ diff --git a/index.php b/index.php new file mode 100644 index 0000000..e99fc24 --- /dev/null +++ b/index.php @@ -0,0 +1,25 @@ + +

Tildeverse RFC system

+
+

...The RFC system for tilde boxes will be hosted at https://rfc.tildeverse.org/ and on the tildeverse gitea as tildeverse/rfcs...

+

...RFC documents are simply requests. They are for simple things like defining how something should work or how something should be done.

+

Standards documents are like mandates. They require something. For example, this document requires a would-be submitter to follow this +format for RFCs. A Standards document can be amended by RFC documents, and any RFC documents in violation of a Standards document, +unless otherwise stated within the Standards document, are invalid.

+ +
+ +This system aims to help codify some things about Tildeverse tilde servers. + +

Submission guidelines (from the standard)

+ +

An RFC should be submitted as a PR to the git repo.

+ +

Until your RFC gets assigned a number, give it a draft name. For example, a draft name for an RFC to make tilde.chat allow IRC connections without SSL could be draft-tilde-chat-without-ssl.

+ +

Your RFC stays a draft until it is accepted. If or when an RFC is accepted, it will be given a number (at which time it must be renamed rfcX.md, where X is +the number). The status must be changed to Accepted and the number tag must contain the assigned number. When you +finish doing this, the PR will be merged.

+ diff --git a/navbar.php b/navbar.php new file mode 100644 index 0000000..f446715 --- /dev/null +++ b/navbar.php @@ -0,0 +1,26 @@ + + diff --git a/rfc.php b/rfc.php new file mode 100644 index 0000000..4fbc58f --- /dev/null +++ b/rfc.php @@ -0,0 +1,34 @@ +{$filename}

"; + include 'footer.php'; + die(); + } + $document = $parser->parse(file_get_contents($filename)); + $yml = $document->getYAML(); + $content = $document->getContent(); + $title = ($yml['title'] ?? 'invalid'); + $description = "RFC {$yml['number']}: {$yml['title']} by {htmlspecialchars($yml['author'])}"; + include 'header.php'; +?> +

RFC :

+

Author:
+ +Updates: {$num}"; if(next($arr)) { echo ", "; }}?>
+ + +Updated by: {$num}"; if(next($arr)) { echo ", "; }}?>
+ + + diff --git a/rfc0.md b/rfc0.md new file mode 100644 index 0000000..3f84858 --- /dev/null +++ b/rfc0.md @@ -0,0 +1,74 @@ +--- +title: "Standard 1: RFC Format and Semantics" +number: 0 +author: Robert Miles +status: Approved +--- +## Abstract {#abstract} + +This RFC defines the format used by an RFC. RFCs in this system are stored as Markdown files with YAML front-matter. RFC files MAY be stored with any extension commonly used by markdown files. + +This RFC also defines the semantics of how the RFC system will work. + +## Front-matter format {#front-matter-format} + +The front-matter MUST contain the following key-value pairs: + + - `title`: The title of the document. Standards documents should be titled in the format `Standards X: Y` where X is the standards number and Y is the title of the standard. ([See below for an explanation of standards.](#standards)) + + - `number`: The canonical number of the RFC. Starts at 0 (this document) and counts up in decimal. + + - `author`: The author of the document. May contain email. + + - `status`: The status of this document. Should be `Accepted` or `Proposed`. (Rejected documents are not made a part of the repository.) + +The front-matter MAY contain the following key-value pairs: + + - `updates`: A comma-seperated list of RFCs this RFC updates. + + - `updated-by`: A comma-seperated list of RFCs that update this RFC. + +Note that the two lists should be added to in sequence; if RFC 2 updates RFC 1, then RFC 2 needs to have 1 in its `updates` and RFC 1 needs 2 in its `updated-by`. + +## Semantics of the RFC System {#semantics-of-system} + +The RFC system for tilde boxes will be hosted at https://rfc.tildeverse.org/ and on the tildeverse gitea as [tildeverse/rfcs](//git.tildeverse.org/tildeverse/rfcs). + +### Types of Documents {#doc-types} + +RFC documents are simply requests. They are for simple things like defining how something should work or how something should be done. + +Standards documents are like mandates. They require something. For example, this document requires a would-be submitter to follow this +format for RFCs. A Standards document can be amended by RFC documents, and any RFC documents in violation of a Standards document, +unless otherwise stated within the Standards document, are invalid. + +### Procedural Section {#procedural-section} + +Every RFC and Standards document should end with a procedural information section (id tagged as [#procedures](#procedures)). + +There are 2 sub-sections to the procedural info section: + + - Security Considerations (tagged [#security](#security)) - If there are any security reasons/concerns for the document, they MUST be subsections of this. + + - Configuration Considerations (tagged [#config](#config)) - For example, if configs need to be changed due to the RFC. + +### Submission guidelines {#submission} + +An RFC should be submitted as a PR to the [git repo](https://git.tildeverse.org/tildeverse/rfcs). RFCs MUST come with a draft name. + +For example, a draft name for an RFC to make tilde.chat allow IRC connections without SSL could be `draft-tilde-chat-without-ssl`. + +The only time an RFC can omit the number tag in its front-matter is when it is a draft. Drafts do not have numbers and are of the +status `Proposed`. If or when an RFC is accepted, it will be given a number (at which time it MUST be renamed `rfcX.md`, where X is +the number). The status MUST be changed to `Accepted` and the number tag MUST contain the assigned number. When the former draft +meets these requirements, the PR will be merged. + +## Procedural Information {#procedures} + +### Security Considerations {#security} + +There are no security considerations to this document. + +### Configuration Considerations {#config} + +A subdomain of tildeverse.org has been provisioned for the RFC project, and a repo has been created, in accordance with this document. diff --git a/rfclist.php b/rfclist.php new file mode 100644 index 0000000..497c97a --- /dev/null +++ b/rfclist.php @@ -0,0 +1,17 @@ + +

RFC List

+ +