changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > org > docs / annotate ulang.org

changeset 4: 1c57e053f043
parent: 7895e9b82917
child: bb51c61e4d4b
author: ellis <ellis@rwest.io>
date: Mon, 20 Nov 2023 19:02:47 -0500
permissions: -rw-r--r--
description: org publishing
1
ellis <ellis@rwest.io>
parents:
diff changeset
1
 #+TITLE: ulang
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
2
 #+OPTIONS: toc:nil
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
3
 This document describes a *U-Language* as described by the late great
1
ellis <ellis@rwest.io>
parents:
diff changeset
4
 Haskell Curry:
ellis <ellis@rwest.io>
parents:
diff changeset
5
 
ellis <ellis@rwest.io>
parents:
diff changeset
6
 #+begin_quote
ellis <ellis@rwest.io>
parents:
diff changeset
7
 Every investigation, including the present one, has to be communicated
ellis <ellis@rwest.io>
parents:
diff changeset
8
 from one person to another by means of language. It is expedient to
ellis <ellis@rwest.io>
parents:
diff changeset
9
 begin our study by calling attention to this obvious fact, by giving a
ellis <ellis@rwest.io>
parents:
diff changeset
10
 name to the language being used, and by being explicit about a few of
ellis <ellis@rwest.io>
parents:
diff changeset
11
 its features. We shall call the language being used the
ellis <ellis@rwest.io>
parents:
diff changeset
12
 U-Language. [...] There would be no point in calling attention to it,
ellis <ellis@rwest.io>
parents:
diff changeset
13
 if it were not for the fact that language is more intimately related
ellis <ellis@rwest.io>
parents:
diff changeset
14
 to our job than of most others.
ellis <ellis@rwest.io>
parents:
diff changeset
15
 #+end_quote
ellis <ellis@rwest.io>
parents:
diff changeset
16
 
ellis <ellis@rwest.io>
parents:
diff changeset
17
 There is a natural reader/writer relationship that exists in countless
ellis <ellis@rwest.io>
parents:
diff changeset
18
 places, but is rarely examined because it is rarely necessary. However
ellis <ellis@rwest.io>
parents:
diff changeset
19
 there is a wide array of significantly complex code and prose projects
ellis <ellis@rwest.io>
parents:
diff changeset
20
 out there which would benefit greatly from such an investigation.
ellis <ellis@rwest.io>
parents:
diff changeset
21
 
ellis <ellis@rwest.io>
parents:
diff changeset
22
 I would also like to humbly clarify on our interpretation of a *job*
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
23
 as Curry puts it. 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
24
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
25
 We all have the same job really - to be curious, and to solve
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
26
 problems. It is the *problems* I would like to shine a light on, if
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
27
 just for a moment, because it's important. 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
28
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
29
 Just as Curry thinks of languages, we can think of problems. There
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
30
 exists the *problem of problems* which is the subject of our
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
31
 investigations. This *U-Problem* is what we are solving for at all
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
32
 times. In this light, we can view the *U-Language* as a means of
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
33
 bringing both the /reader/ and /writer/ as close as possible to the
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
34
 *U-Problem*.
1
ellis <ellis@rwest.io>
parents:
diff changeset
35
 
ellis <ellis@rwest.io>
parents:
diff changeset
36
 For convenience, our *U-Problem* is undecidable, but we model and
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
37
 solve for it using ~computers~, or more abstractly ~machines~. Thus,
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
38
 our *U-Language* helps bring the /reader/ and /writer/ closer to our
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
39
 ~machines~ as well as expedite communications between reader and
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
40
 writer.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
41
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
42
 :summary:
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
43
 - /Why do we need a U-Language?/ :: To bring both the /reader/ and
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
44
   /writer/ closer to our *U-Problem*.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
45
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
46
 - /What is our U-Problem?/ :: Undecidable, but we use /computers/ as a
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
47
   model of the *U-Problem*. When we are dealing with the *U-Problem*
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
48
   we are speaking in terms of /computation/ and the ability of a given
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
49
   machine to /compute/.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
50
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
51
 - /How do we solve our U-Problem?/ :: With /computers/, by developing
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
52
   accurate models and finding optimal solutions.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
53
 :end:
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
54
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
55
 * ulang
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
56
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
57
 :CUSTOM_ID: 8447a560-7f77-45c7-bd14-2a2af6ad2abc
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
58
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
59
 As the title suggest we refer to our *Universal Language* as
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
60
 ulang. When I say something along the lines of "Please refer to
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
61
 [[Links][ulang:links]]", I am referencing the section named /Links/ of this
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
62
 document.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
63
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
64
 This is a "living" document. In other words, it is incomplete. I may
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
65
 include additional elements in the ulang, or modify the specification
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
66
 of existing ones.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
67
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
68
 Each section of this document describes an element of the ulang. It is
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
69
 recommended to skim through the top-level sections ([[Org-mode][Org-mode]] and
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
70
 [[Elements][Elements]]) and review the element sub-headings as needed.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
71
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
72
 #+TOC: headlines 3
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
73
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
74
 ** Org-mode
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
75
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
76
 :CUSTOM_ID: 98a02bb2-3f39-49c6-898a-68ccd8f3cbe1
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
77
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
78
 [[https://www.gnu.org/software/emacs/][GNU Emacs]] is our text editor, so naturally [[https://orgmode.org/][Org Mode]] is our
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
79
 documentation engine. 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
80
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
81
 If you are already familiar with Emacs and org-mode, I recommend
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
82
 opening the source file of this document in Emacs and following along.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
83
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
84
 If not, I recommend browsing through the [[https://orgmode.org/worg/][Worg resources]], but we're not
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
85
 getting too deep into tribal hacker knowledge of Emacs. The choice of
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
86
 Org is arbitrary and the concepts here would apply to other formats
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
87
 (LaTeX, Markdown, etc).
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
88
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
89
 Let us first consider /Org the syntax/.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
90
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
91
 Org syntax is much less popular than Markdown and lacks parsing
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
92
 utilities in popular programming languages[fn:1]. Perhaps Org is not
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
93
 suited as a /universal/ text format because it's arguably harder to
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
94
 parse, making it less interoperable and intimidating to adopt.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
95
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
96
 Regardless, we are committed to it as a foundation because it is the
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
97
 most hackable documentation engine available. With enough experience
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
98
 you can morph Org into whatever system you want, and that is /exactly/
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
99
 our intention.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
100
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
101
 [fn:1] The ecosystem is changing though, thanks to the dedication of
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
102
 some excellent hackers: [[https://github.com/karlicoss/orgparse][python]], [[https://github.com/tecosaur/Org.jl][julia]]
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
103
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
104
 *** TODO organ
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
105
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
106
 :CUSTOM_ID: 22474039-5c18-4179-82aa-a6731e6313a2
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
107
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
108
 - State "TODO"       from              [2023-11-05 Sun 19:21]
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
109
 Org is the designated text representation of our ulang. Org-mode
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
110
 depends on Emacs (it's written in Emacs Lisp) but that doesn't mean we
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
111
 have to. To solve the issue of interoperability between different
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
112
 systems, we are developing a modular tool called [[https://lab.rwest.io/comp/core/-/tree/branch/default/lisp/lib/organ][organ]]. The purpose of
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
113
 =organ= is to provide an external API for Org documents that doesn't
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
114
 depend on GNU Emacs.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
115
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
116
 If we were designing a /personal/ note-taking system, I would argue
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
117
 that we don't need this tool. The problem is it's not personal - we
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
118
 have a much wider intended audience - it's business. This means
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
119
 thinking about hundreds to thousands of documents instead of tens,
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
120
 about processing those documents into a full-text search database, and
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
121
 reducing cost along the way.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
122
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
123
 Emacs can do all of these things, but do you really want it to? I
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
124
 don't. Emacs should remain close to the developer and we can outsource
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
125
 the tricky bits to =organ=.
1
ellis <ellis@rwest.io>
parents:
diff changeset
126
 
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
127
 ** Elements
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
128
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
129
 :CUSTOM_ID: 4aa3ec2a-b360-43ae-b2d8-f9735f211290
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
130
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
131
 *** Keywords
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
132
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
133
 :CUSTOM_ID: 2cadda9a-22a3-4b42-ad4e-d7a774f74cba
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
134
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
135
 The ulang *Keywords* are a superset of those defined by [[https://datatracker.ietf.org/doc/html/rfc2119][RFC-2119]]. The
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
136
 definition of a keyword from the original spec is ultimately
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
137
 unchanged:
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
138
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
139
 #+begin_quote
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
140
 In many standards track documents several words are used to signify
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
141
 the requirements in the specification.  These words are often
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
142
 capitalized.  This document defines these words as they should be
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
143
 interpreted in IETF documents.  Authors who follow these guidelines
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
144
 should incorporate this phrase near the beginning of their document:
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
145
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
146
 The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
147
 NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED",  "MAY", and
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
148
 "OPTIONAL" in this document are to be interpreted as described in
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
149
 RFC 2119.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
150
 #+end_quote
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
151
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
152
 We can't be bothered to include these with every document, so here
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
153
 they are - don't forget!
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
154
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
155
 #+begin_quote
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
156
 1. MUST   This word, or the terms "REQUIRED" or "SHALL", mean that the
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
157
    definition is an absolute requirement of the specification.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
158
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
159
 2. MUST NOT   This phrase, or the phrase "SHALL NOT", mean that the
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
160
    definition is an absolute prohibition of the specification.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
161
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
162
 3. SHOULD   This word, or the adjective "RECOMMENDED", mean that there
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
163
    may exist valid reasons in particular circumstances to ignore a
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
164
    particular item, but the full implications must be understood and
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
165
    carefully weighed before choosing a different course.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
166
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
167
 4. SHOULD NOT   This phrase, or the phrase "NOT RECOMMENDED" mean that
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
168
    there may exist valid reasons in particular circumstances when the
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
169
    particular behavior is acceptable or even useful, but the full
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
170
    implications should be understood and the case carefully weighed
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
171
    before implementing any behavior described with this label.
1
ellis <ellis@rwest.io>
parents:
diff changeset
172
 
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
173
 5. MAY   This word, or the adjective "OPTIONAL", mean that an item is
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
174
    truly optional.  One vendor may choose to include the item because a
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
175
    particular marketplace requires it or because the vendor feels that
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
176
    it enhances the product while another vendor may omit the same item.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
177
    An implementation which does not include a particular option MUST be
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
178
    prepared to interoperate with another implementation which does
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
179
    include the option, though perhaps with reduced functionality. In the
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
180
    same vein an implementation which does include a particular option
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
181
    MUST be prepared to interoperate with another implementation which
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
182
    does not include the option (except, of course, for the feature the
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
183
    option provides.)
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
184
 #+end_quote
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
185
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
186
 One of the important features of keywords is that we use them as Org
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
187
 [[https://orgmode.org/manual/Workflow-states.html][Workflow states]]. You may use any of the keywords above or below as the
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
188
 first word in a heading to signify a requirement or a workflow state:
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
189
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
190
 6. TBD   A task to be done at a later date.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
191
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
192
 7. TODO   A task yet to be done.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
193
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
194
 8. WIP   Work In Progress task.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
195
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
196
 9. NOTE   Designates a note item.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
197
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
198
 10. DRAFT   Designates a draft item.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
199
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
200
 11. NOPE   Item that will not be completed.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
201
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
202
 12. DONE   Completed task.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
203
 
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
204
 *** Abbrevs
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
205
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
206
 :CUSTOM_ID: b4c326ba-f74c-4409-9314-8d32df61fc5e
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
207
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
208
 Abbrevs include domain-specific acronyms and slang such as /DB/ for
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
209
 database or /M$/ for Microsoft. They're abbreviations, but even lazier
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
210
 (we can't even be bothered to spell out the name). By defining them in
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
211
 one place we can use Emacs to lookup abbrevs on the fly, and we can
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
212
 automatically generate help text and references to abbrev definitions
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
213
 for our readers.
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
214
 *** Operators
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
215
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
216
 :CUSTOM_ID: f91ca826-2c72-4d00-810c-2d61aa073658
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
217
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
218
 *** Links
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
219
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
220
 :CUSTOM_ID: 7bd8eeaa-9f21-4ab4-ba6e-be118e68d36a
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
221
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
222
 *** Timestamps
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
223
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
224
 :CUSTOM_ID: 4faf913e-7c15-4937-9547-b50a6c8ba896
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
225
 :END:
2
7895e9b82917 ulang update
ellis <ellis@rwest.io>
parents: 1
diff changeset
226
 *** Macros
4
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
227
 :PROPERTIES:
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
228
 :CUSTOM_ID: cdb4976b-1d0d-49df-bfb1-3dbd5d99590e
1c57e053f043 org publishing
ellis <ellis@rwest.io>
parents: 2
diff changeset
229
 :END: