gemini-tinylog-rfc/README.md

140 lines
4.1 KiB
Markdown
Raw Normal View History

2021-06-08 00:15:01 +02:00
# RFC: TinyLogs format
2021-06-08 00:10:15 +02:00
Status: Draft
2021-07-06 00:39:35 +02:00
Last update: 2021-07-05
2021-06-08 00:10:15 +02:00
2021-06-08 00:15:01 +02:00
## Introduction
2021-06-08 00:10:15 +02:00
A Tinylog is a simple file with all "microblog" style entries to share small contents and interact with other geminauts' tinylog.
2021-06-08 00:10:15 +02:00
The original idea and most "rules" comes from Drew/uoou/Friendo:
2021-06-08 00:19:03 +02:00
2021-06-08 00:10:15 +02:00
=> gemini://friendo.monster/log/lace.gmi
The goal of this RFC is to standardize the tinylog format for better coherence between authors by providing a consistent approach.
This will also allow better tools around tinylogs to improve both authors and readers experience reading micro entries.
2021-06-08 00:15:01 +02:00
## Tinylog format
2021-06-08 00:10:15 +02:00
This tinylog format proposal is composed of a mandatory part that tinylogs must be compatible with and optional information that author could add as meta information about their tinylog.
2021-06-08 00:15:01 +02:00
### Mandatory format
2021-06-08 00:10:15 +02:00
Each tinylog entry must be formated as follow:
```
2021-06-21 00:18:19 +02:00
## <Date>
2021-06-08 00:10:15 +02:00
<Content>
```
2021-06-21 00:18:19 +02:00
It starts with a second level header (`##`), followed by a space and then `<date>`.
2021-06-08 00:10:15 +02:00
`<Date>` format: The format extend the date format of the [gemini feed standard](https://gemini.circumlunar.space/docs/companion/subscription.gmi) (YYYY-MM-DD):
2021-06-08 00:10:15 +02:00
2021-06-08 00:28:33 +02:00
```
YYYY-MM-DD hh:mm TZ
2021-06-08 00:10:15 +02:00
```
`TZ` should either be:
2021-06-08 00:28:33 +02:00
* A [timezone abbreviation](https://en.wikipedia.org/wiki/List_of_time_zone_abbreviations) like UTC, CEST, ET, BST, …
* A valid UTC offset (eg: +02:00 for CEST, -06:00 for ET, …).
2021-06-08 20:10:57 +02:00
**Note**: Timezone abbreviations are not standards (eg BST is an abbreviations of 3 different timezone). For better comprehension for any tools, the UTC offset is usually better.
2021-06-08 00:28:33 +02:00
If the timezone is not precised, UTC should be assumed.
2021-06-08 00:28:33 +02:00
Entries should be in order from newest to oldest.
2021-06-08 20:10:57 +02:00
2021-06-08 00:10:15 +02:00
2021-07-17 00:49:26 +02:00
`<Content>` format: Any text without 2 new lines. Can content any valid text/gemini formatting except `#` and `##`. `###`, lists, links, etc can be used in `<Content>`.
2021-06-08 00:10:15 +02:00
Each entry must be separated with 2 new lines (ie paragraph break).
2021-06-08 00:28:33 +02:00
Example:
```
## 2021-06-20 20:40 +0200
2021-06-08 00:28:33 +02:00
A small thought to share.
## 2021-06-20 20:30 CEST
2021-06-08 00:28:33 +02:00
A first tinylog entry
```
2021-06-08 00:10:15 +02:00
2021-06-08 00:15:01 +02:00
### Optional information
2021-06-08 00:10:15 +02:00
#### Optional Header information
2021-06-08 00:10:15 +02:00
Additional informations could be added at the top of your tinylog file:
```
# <Tinylog Title>
2021-06-10 00:09:38 +02:00
<description>
2021-06-08 00:10:15 +02:00
author: <author>
2021-06-10 23:19:44 +02:00
avatar: <emoji>
licence: <licence>
2021-06-08 00:10:15 +02:00
```
2021-06-08 00:19:03 +02:00
`<Tinylog Title>` Can be any text without a line break.
2021-06-08 00:10:15 +02:00
2021-06-10 00:09:38 +02:00
`<description>`: Can be any text without 2 line breaks (= paragraph break). Description can be before or after the metadata but not between.
2021-06-10 23:19:44 +02:00
`<author>` format: `@authorName[@capsule.tld]` with authorName the tinylog author name and "capsule.tld" the url of the author capsule. The emoji and capsule url are optional. This intends to simplify communication between authors as well as discovery of new tinylog feeds.
2021-06-08 00:10:15 +02:00
Example:
```
2021-06-10 00:06:37 +02:00
author: @bacardi55
2021-06-08 00:10:15 +02:00
author: @bacardi55@gmi.bacardi55.io
2021-06-10 23:19:44 +02:00
```
2021-06-10 23:19:44 +02:00
`<emoji>` format: emoji [emoji description]. The description is optional.
Example:
```
avatar: 🦪
avatar: 🦪 (:oyster:, U+1F9AA)
2021-06-08 00:10:15 +02:00
```
2021-06-10 23:19:44 +02:00
`<licence>` format: the name of the licence.
2021-06-08 00:10:15 +02:00
2021-06-10 00:06:37 +02:00
Other additional metadata could be added but shouldn't be expected.
#### Optional response information
2021-07-06 00:36:54 +02:00
It's common in the gemini world to respond to a particular entry of an author. In that case, author should add a line below the header line with formatted
```
[=> linkToOriginalEntry ]RE: @author[@capsule.tld] <Date of the original article>
```
The link to the original entry (and thus the => prefix) are optional.
Note that the `Re` part is case insensitive, which means either one of `Re`, `RE`, `re`, or even `rE` can be used.
Example:
```
2021-07-06 00:36:54 +02:00
## 2021-06-20 22:30 CEST
=> gemini://capsule.tld/tinylog.gmi Re: @user 2021-06-20 22:30 CEST
A response to @user: hello, cool post!
## 2021-06-20 22:30 CEST
=> gemini://capsule.tld/tinylog.gmi Re: @user@capsule.tld 2021-06-20 22:30 CEST
A response to @user: hello, cool post!
## 2021-06-20 22:30 CEST
Re: @user 2021-06-20 22:30 CEST
A response to @user: hello, cool post!
## 2021-06-20 22:30 CEST
Re: @user@capsule.tld 2021-06-20 22:30 CEST
A response to @user: hello, cool post!
```
It will be up to the client to decide whether to use this information or not.
2021-06-10 00:06:37 +02:00
# Additional information
2021-06-10 00:14:16 +02:00
* [Tools around the tinylog format](Tools.md)
* [Unofficial list of tinylogs](Known-tinylogs.md)