Input knowledge level: You know how to create, read, and update term definitions in relation to your concept or mental model. Here are some guidelines: edit wiki term definitions
This section is about the source management of terms and definitions: the latest single source of truth about them in a certain scope. The elementary part is the {term}.md
file that contains (spec-up extended) markdown. We offer various ways of managing these source files while maintaining their overall integrity.
Source management culminates in the latest version of any glossary in which the term is accessible (linkable) with a permanent URL, and we have a history available that referred to this term at what time in the past.
:::info You can reference this glossary in your own write-ups and add to the general consensus about terms at the same time. :::
We want to offer multiple ways to edit term definitions. So it is not wiki or markdown or github frontend but wiki and markdown and github frontend?
The end result is always a git(hub) tracked directory with separate .md
files of a spec-up-based specification. The use cases are described below. The term definitions themselves use the spec-up markdown extensions syntax: def
, ref
and xref
.
Example given:
[[def: access control]]:
~ The process of granting or denying specific [[ref: request]]s for obtaining
and using information and related information [[xref: processing]] services.
Just to name a few reasons:
- user management in the github ecosystem instead of centralized technological island creation
- Spec-up static website generation; we don't want the introduction of databases
- Continuous Development Continuous Integration (CDCI) versus staging by hand
- Business rules and Permanent linking made possible via Github Actions
The roles involved in the use cases are editor
, production repo
master and curator
.
One person could have more than one role.
All roles have a github user account, because we need to know
- who proposes a change on what and when this occurred.
- who changes what and when. Git keeps track of us.
He/she who has write
user rights on the target repo (TrustoverIP main glossary) can directly edit and commit the latest version. Other roles will have to adapt to those results. For example merge conflicts might arise and then need to be solved.
Further guidelines:
- Editors COULD have a fork for the repo. They NEED TO have a forked target repo for options 2, 3, and 4 below.
- curators don't need to have a user github repo, only a github user account, and they use the functionality to comment on PRs.
Github Actions will pick up, and process changes as they occur and trigger staging of chancing to the production server.
This is the process diagram:
There are two main options we have use cases for:
-
A. Wiki-based = edits WITHOUT curation and PR are possible; see 1. below
-
B. PR based WITH optional curation and mandatory PRs; see options 2, 3, and 4 below.
Go to the wiki of your project repo on github.com (which is controlled by Master). The wiki offers edit functionality.
DEEP DIVE: This is what happens if you can straight away save the wiki pages you edit: The terms-definitions directory will be exported to a clone of the target repo wiki by the production repo
master
. The wiki (sub) repo of a github repo allows for different user-right settings than the repo itself.
GitHub allows the Master to configure access permissions for wikis independently of the main repository settings. Here's how the permission settings can differ:
By default, a repository's wiki inherits the permissions from the repository itself. This means that if someone has write access to your repository, they can also edit the wiki. However, GitHub provides an option to modify these permissions specifically for the wiki. Under the "Settings" tab for the repository, the Master will find a section for the wiki where he/she can choose to either:
a. Inherit permissions from the repository, meaning those with write access to the repository can edit the wiki. b. Allow everyone with a GitHub account to edit the wiki, which makes the wiki more open, regardless of their access to the repository itself.
This flexibility allows project maintainers to either keep their wikis as collaborative spaces open to the wider GitHub community or restrict them to be consistent with the access controls applied to the source code in the repository. It's worth noting that these settings can be changed at any time by the repository owner (Master) or users with admin access to the repository.
Now, editors
can use the wiki of the target repo to define the CRU term. We describe separate use cases for Create, Read, and Update (CRU). Delete (D) is very rare because the history of terms should be kept available.
Curators
could add markdown comments to the sources of the wiki.
::: note Info Note NB: Editing the target github wiki repo on your local machine is possible, but it is a rather strange way to manage sources of your terms definitions. But it can be done if you have the user rights: push the wiki repo to the target wiki repo. We advise you to choose one of the other source management options because it's more direct. :::
::: note Basic Note
After this source editing has been saved, our solution also overwrites the repo file /spec/splitted-dir/{term}.md
(if present) for syncing purposes.
:::
Editors go to the term definition they want to use for C R U on the github.com user site of the target repo (which is controlled by Master).
This way, editors can edit (after having forked the target repo to their own user account) the term definition and offer a PR to Master. After the PR is made, the curator can comment on the changes proposed and make them live and viewable on the editor's user account.
::: note Basic Note
After this source editing has been saved, our solution also overwrites the wiki repo file /{term}.md
(if present) for syncing purposes.
:::
This way, editors can edit the target repo (after having cloned it to their own user account). He/she uses a text editor to write changes in the separate .md file of the term and definitions directory. He/she uses git on the command line to add, commit, and push files to their own github user account version of the target repo. From the target repo, he/she creates a PR by hand for the curator and the Master to assess and eventually accept or decline. After the PR is made, the curator can comment on the changes proposed and make them live and viewable on the editor's user account.
::: note Basic Note
After this source editing have been saved our solution also overwrites the wiki repo file /{term}.md
(if present) for syncing purposes.
:::
An integrated Development Environment, e.g., Visual Studio Code - text file edit.
This way, editors can edit the target repo (after having cloned it to their own user account). He/she uses an IDE to write changes in the separate .md file of the term and definitions directory. He/she uses the IDE git functionality to finally create a PR on the target repo for the curator and the Master to assess and eventually accept or decline. After the PR is made, the curator can comment on the changes proposed and make them live and viewable on the editor's user account.
The input is a per-term-splitted directory of term md files The process: four options to make changes The end result two options to get the results accepted in the target repo and final spec-up html output: Via 1. Wiki and via 2,3,4: PR.
All methods have full git tracing of who did what and when.
::: note Basic Note
After this source editing have been saved our solution also overwrites the wiki repo file /{term}.md
(if present) for syncing purposes.
:::
The rest of this chapter outlines the use cases for managing term definitions in a spec-up-based specification, focusing on the roles of editors, production repo masters, and curators.
We focus only on terms and definitions. We use the term target repo for the production repo, controlled by the role master
.
- Editor: Individuals proposing changes to term definitions.
- Production Repo Master (Master): Oversees the merging of PRs and has the authority to delete term definitions.
- Curator: Engages in reviewing proposed changes to enhance quality and accuracy.
- Actor: Editor
- Process:
- Navigate to the GitHub repository page of the target repo.
- Access the Wiki section via the repository's main page menu.
- Click "New Page" to add a term, title the page with the term name, and detail the definition using markdown syntax.
- Click "Save Page" to finalize.
- Process: Similar to "Create", but select an existing term's page to edit.
- Directly view the term's page in the Wiki section. Mind you, this is an extra view & search option of the resulting glossary.
- Actor: Editor
- Process:
- Fork the target repository to your GitHub account.
- In your fork, navigate to the
terms-definitions
directory. - To add a new term, click "Add file" > "Create new file". To update, click on an existing
.md
file and then the pencil icon (Edit this file). - Make changes or add the new term using markdown syntax. Commit the changes to a new branch in your fork and start a pull request on the target repo.
- View the
.md
files directly in the target repository or through the proposed changes in pull requests.
- Actor: Editor
- Process:
- Clone your fork of the target repository to your local machine using the terminal:
git clone [Your-Fork-URL]
. - Navigate to the
terms-definitions
directory within your local repository. - Use a text editor to create a new
.md
file or update an existing one with the term definition. - Use Git commands to add (
git add .
), commit (git commit -m "your message"
), and push (git push origin main
) the changes. - Create a pull request from your GitHub fork's page.
- Clone your fork of the target repository to your local machine using the terminal:
- Actor: Editor
- Process:
- Clone your fork of the target repository into Visual Studio Code (VS Code) using its Git: Clone command.
- Navigate to the
terms-definitions
directory within the VS Code Explorer. - Create a new
.md
file or edit an existing one, using markdown for the term definition. - Commit the changes using the Source Control panel in VS Code, pushing them to your fork.
- Initiate a pull request via GitHub's website from your fork to the original repository.
- Process: Review, potentially edit, and merge pull requests. Manage and resolve any merge conflicts.
- Process:
- For deleting a term, remove the
.md
file or edit its content to reflect the term's deprecation, committing with a clear rationale. Only in exceptional cases, because it's far better to archive instead of delete. So also edit wiki term definitions. - Push the changes to the main branch and update any documentation accordingly.
- For deleting a term, remove the
- Process: Engage in PR discussions, offering feedback and suggestions to ensure clarity and correctness of term definitions.
- Merge conflicts may arise during the PR process, requiring coordination for resolution.
- All changes, including deletions, should be documented with clear commit messages and PR descriptions to maintain a transparent history of modifications.