aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEuAndreh <eu@euandre.org>2021-07-14 06:44:20 -0300
committerEuAndreh <eu@euandre.org>2021-07-14 06:48:24 -0300
commit592b5ac53d56d00b3724c9ef3f4de90ec5f07f0f (patch)
treef3eed767c8e8af2d467608496fd0482f081258d2
parentTODOs.md: s/user/consumer/ (diff)
downloadgit-permalink-592b5ac53d56d00b3724c9ef3f4de90ec5f07f0f.tar.gz
git-permalink-592b5ac53d56d00b3724c9ef3f4de90ec5f07f0f.tar.xz
TODOs.md: Stick to 80 columns on text
Diffstat (limited to '')
-rw-r--r--TODOs.md187
1 files changed, 129 insertions, 58 deletions
diff --git a/TODOs.md b/TODOs.md
index 9309da6..bbd1fd3 100644
--- a/TODOs.md
+++ b/TODOs.md
@@ -30,10 +30,14 @@ From roff(7):
---
-For the translations that I write myself, I can do things such as give warnings and even enforce that they stay up-to-date.
-I can't do the same for contributed translation, both because I shouldn't enforce things, but also people may always leave.
+For the translations that I write myself, I can do things such as give warnings
+and even enforce that they stay up-to-date.
+I can't do the same for contributed translation, both because I shouldn't
+enforce things, but also people may always leave.
-Having two tiers of translations would allow for contributions to fit in the workflow when available, be updated when possible, and included when requested, without creating trouble for the ones I maintain.
+Having two tiers of translations would allow for contributions to fit in the
+workflow when available, be updated when possible, and included when requested,
+without creating trouble for the ones I maintain.
Things to consider from the viewpoint of the contributor:
- <input type="checkbox" disabled /> visibility when translations are missing;
@@ -44,7 +48,9 @@ Things to consider from the viewpoint of the contributor:
## DONE Investigate the accessibility and need for ARIA elements for manpages and markdown {#task-55fe6623-2bfc-49dd-061c-3899ae2b1c68}
- DONE in 2021-07-13
- As I found out, ARIA stands for "Accessible Rich Internet Applications", but since markdown and manpages include no JavaScript, the HTML itself being semantic is already accessible.
+ As I found out, ARIA stands for "Accessible Rich Internet Applications", but
+ since markdown and manpages include no JavaScript, the HTML itself being
+ semantic is already accessible.
This isn't even a "WONTFIX", but a "NONISSUE".
- TODO in 2021-07-06
@@ -54,16 +60,19 @@ Things to consider from the viewpoint of the contributor:
Eligible for investigations are:
- manpages (I'd expect those to be standard, but who knows);
- HTML from manpages as generated by pandoc;
-- HTML from markdown, also as generated by pandoc, both for `commonmark.sh` and `TODOs.sh`.
+- HTML from markdown, also as generated by pandoc, both for `commonmark.sh` and
+ `TODOs.sh`.
-Test them with a desktop screen reader, talkback and maybe a browser screen reader such as ChromeVox (or its free alternative).
+Test them with a desktop screen reader, talkback and maybe a browser screen
+reader such as ChromeVox (or its free alternative).
## CANCELLED Add `EXIT_STATUS` section to manpage {#task-d6f1ddb3-2111-bcdb-1873-0a414a5f7157}
- CANCELLED in 2021-06-27
This was already implemented :)
- In fact, this is a duplicate of [`#task-de34e119-049f-67a0-da8b-e0103ed24a2b`](#task-de34e119-049f-67a0-da8b-e0103ed24a2b).
+ In fact, this is a duplicate of
+ [`#task-de34e119-049f-67a0-da8b-e0103ed24a2b`](#task-de34e119-049f-67a0-da8b-e0103ed24a2b).
- TODO in 2021-06-27
## DOING Translate README.md and CHANGELOG.md {#task-7c5cd2aa-6d92-0423-bfa7-81f2e8436586}
@@ -75,23 +84,33 @@ Test them with a desktop screen reader, talkback and maybe a browser screen read
---
-Unlike `doc/git-permalink.*.1.in` files, these two don't need to be commited into the repository.
+Unlike `doc/git-permalink.*.1.in` files, these two don't need to be commited
+into the repository.
-The reason why the manpages are is to lessen the requirement on the consumer when they're on the canonical `make && make install` path.
-They can even `make check` before installing (or uninstalling), and all of those targets are specifically kept with minimal requirements, so that the user can build, test and install the software without requiring extra dependencies.
-Due to that, the translated manpages are kept in the repository so that users don't need `po4a` or `gettext`.
+The reason why the manpages are is to lessen the requirement on the consumer
+when they're on the canonical `make && make install` path.
+They can even `make check` before installing (or uninstalling), and all of those
+targets are specifically kept with minimal requirements, so that the user can
+build, test and install the software without requiring extra dependencies.
+Due to that, the translated manpages are kept in the repository so that users
+don't need `po4a` or `gettext`.
The same is not true for the `public` target.
This is meant for building the HTML pages of the website.
-Even though all of the code that generates those pages live in the repository under `aux/`, `make public` isn't part of the canonical steps required for users to install software.
+Even though all of the code that generates those pages live in the repository
+under `aux/`, `make public` isn't part of the canonical steps required for users
+to install software.
-Because of that, `{README,CHANGELOG}.{pt,fr,eo}.md` don't need to live in the repository, and can be generated on the fly under the `public` target.
+Because of that, `{README,CHANGELOG}.{pt,fr,eo}.md` don't need to live in the
+repository, and can be generated on the fly under the `public` target.
-As with manpages, the actual file will be `README.en.md`, and `README.md` is a symlink to that.
+As with manpages, the actual file will be `README.en.md`, and `README.md` is a
+symlink to that.
I should also add links to the translated versions on each translation.
-This should bring an accompanying change to `aux/workflow/assert-readme.sh` and `aux/workflow/assert-changelog.sh`.
+This should bring an accompanying change to `aux/workflow/assert-readme.sh` and
+`aux/workflow/assert-changelog.sh`.
## DONE Remove hard coded `public/` path in some files under `aux/` {#task-f09dedb7-1b25-0b5e-2520-910a9aa32562}
- DONE in 2021-06-22
@@ -161,25 +180,42 @@ Options:
## CANCELLED Use `gettext` for translating `src/git-permalink.sh` texts {#task-717fa8b7-1c92-5766-8872-280ae061bf4b}
- CANCELLED in 2021-06-21
- I've considered this, and I even started working on it, but I've chosen not to pursue it further, as I now think this is a mistake.
+ I've considered this, and I even started working on it, but I've chosen not to
+ pursue it further, as I now think this is a mistake.
- Regardless of gettext's power and usefulness, it is definitely an overkill for for this application.
- It would bring more things to the project, both in build time (requiring the generation of message files and friends) but also in run time (loading the message files themselves).
- This could certainly be done via `$PREFIX/libexec/$lang.sh` or something equivalent, but this would also be increasing the installation complexity, too.
- Expecting a sane installation environment is sane (but not always true), but the reasoning behind doing is just "because".
+ Regardless of gettext's power and usefulness, it is definitely an overkill for
+ for this application.
+ It would bring more things to the project, both in build time (requiring the
+ generation of message files and friends) but also in run time (loading the
+ message files themselves).
+ This could certainly be done via `$PREFIX/libexec/$lang.sh` or something
+ equivalent, but this would also be increasing the installation complexity,
+ too.
+ Expecting a sane installation environment is sane (but not always true), but
+ the reasoning behind doing is just "because".
The same functionality can be implemented with less, and it already is.
- It may be true that for bigger programs the same trade-off reasoning would tip the balance to the other side, and make choosing gettext a *better* decision, but this is not the case.
+ It may be true that for bigger programs the same trade-off reasoning would tip
+ the balance to the other side, and make choosing gettext a *better* decision,
+ but this is not the case.
For the modest purpose of this software, the current solution is good enough.
- Maybe it could be less restrictive of country or encoding, but the fundamental idea of embedded variables with an `eval` to define the relevant one stays the same.
- Changing from an `eval` to a `case` statement builds upon the same underlying principle: of having string variables on the same file, and keep them in sync in a completely manual process.
-
- Consider the cost and complexity of building tooling around the [quotation of the `don't` text][quotation], and one can envision one of the challenges that including in specialized i18n tooling might bring along.
- Those tools have their usages and places, they do exist for a good reason, and they should be used when applicable, but this is not it.
-
- This isn't really about POSIX sh, implementation language, or even the size of the program, but about the trade-off analysis of this use case, where I'm the one writing the code and the translations on a tiny piece of POSIX sh code.
+ Maybe it could be less restrictive of country or encoding, but the fundamental
+ idea of embedded variables with an `eval` to define the relevant one stays the same.
+ Changing from an `eval` to a `case` statement builds upon the same underlying
+ principle: of having string variables on the same file, and keep them in sync
+ in a completely manual process.
+
+ Consider the cost and complexity of building tooling around the
+ [quotation of the `don't` text][quotation], and one can envision one of the
+ challenges that including in specialized i18n tooling might bring along.
+ Those tools have their usages and places, they do exist for a good reason, and
+ they should be used when applicable, but this is not it.
+
+ This isn't really about POSIX sh, implementation language, or even the size of
+ the program, but about the trade-off analysis of this use case, where I'm the
+ one writing the code and the translations on a tiny piece of POSIX sh code.
This analysis makes me choose **not** to use `gettext`.
[quotation]: https://git.euandreh.xyz/git-permalink/tree/src/git-permalink.sh?id=caaac9ffb8c80432ef41ad9434762d3e3401f01a#n11
@@ -216,7 +252,8 @@ See `man man.1` for reference.
## DONE Use `hunspell` for checking spelling mistakes in translations {#task-4ae91595-6e6d-be17-d882-754a478da878}
- DONE in 2021-06-25
- It is not included in the `dev-check` target because of errors of `iconv` and UTF-8:
+ It is not included in the `dev-check` target because of errors of `iconv` and
+ UTF-8:
```text
$ ./aux/guix/with-container.sh 'make spellcheck'
@@ -264,7 +301,8 @@ public/fr/git-permalink.1.html:54: Locate: git | Try: g
## CANCELLED Consider `-?` flag for showing the help message {#task-fbc4e2cc-b9e0-53e2-6b0a-8ec118962046}
- CANCELLED in 2021-06-21
- It may have been true and conventional historically, but neither [POSIX], nor [TAOUP], nor [Conventions for Command Line Options] instruct that.
+ It may have been true and conventional historically, but neither [POSIX], nor
+ [TAOUP], nor [Conventions for Command Line Options] instruct that.
[POSIX]: https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap12.html
[TAOUP]: http://www.catb.org/~esr/writings/taoup/html/ch10s05.html
@@ -279,7 +317,8 @@ public/fr/git-permalink.1.html:54: Locate: git | Try: g
- TODO in 2021-06-22
Actually, I didn't implement this.
- What I did was add `getopts` to `src/git-permalink.sh.in`, not to `aux/workflow/manpages.sh`.
+ What I did was add `getopts` to `src/git-permalink.sh.in`, not to
+ `aux/workflow/manpages.sh`.
- DONE in 2021-06-22
Done <del>kind of</del> in
@@ -288,7 +327,8 @@ public/fr/git-permalink.1.html:54: Locate: git | Try: g
---
-Instead of the current <del>confusing</del> positional argument with some optional one.
+Instead of the current <del>confusing</del> positional argument with some
+optional one.
## DONE Fix missing signature link {#task-eb65cbf1-bff9-be13-f185-3ea53333aa6f}
- DONE in 2021-06-19
@@ -314,7 +354,8 @@ Instead of the current <del>confusing</del> positional argument with some option
## DONE Fix tests in CI {#task-1e18a7cc-1055-bd09-3060-c03292ba583b}
- DONE in 2021-06-12
- There was a test that was too brittle, and it was removed. See [CI logs before] and [CI logs after].
+ There was a test that was too brittle, and it was removed.
+ See [CI logs before] and [CI logs after].
Done in
[`cd7bd39b1b6ce7d958f48d63b42ba3ab5fdf6f21`](https://git.euandreh.xyz/git-permalink/commit/?id=cd7bd39b1b6ce7d958f48d63b42ba3ab5fdf6f21).
@@ -322,7 +363,9 @@ Instead of the current <del>confusing</del> positional argument with some option
---
-For some reason, running them locally with `./aux/guix/with-container.sh 'make clean public dev-check'` passes, but the same command doesn't on CI.
+For some reason, running them locally with
+`./aux/guix/with-container.sh 'make clean public dev-check'` passes, but the
+same command doesn't on CI.
[CI logs before]: https://euandreh.xyz/git-permalink/ci-logs/2021-06-12T22:51:21+00:00-07a75e37a4564ed13bc2f50ab84009df137bc223.log
[CI logs after]: https://euandreh.xyz/git-permalink/ci-logs/2021-06-12T23:15:22+00:00-cd7bd39b1b6ce7d958f48d63b42ba3ab5fdf6f21.log
@@ -343,8 +386,9 @@ For some reason, running them locally with `./aux/guix/with-container.sh 'make c
The `description` was already good enough.
- The `long-description` has better content over the previous duplication of whatever was in `description`.
- Done in
+ The `long-description` has better content over the previous duplication of
+ whatever was in `description`.
+ Done in
[`9e089d29ec64936df39b9b1a0e385f988d843416`](https://git.euandreh.xyz/git-permalink/commit/?id=9e089d29ec64936df39b9b1a0e385f988d843416).
The `README.md` is less empty, but still missing a "Usage" section.
@@ -355,13 +399,18 @@ For some reason, running them locally with `./aux/guix/with-container.sh 'make c
## DONE Write tests {#task-fd654661-fa97-83db-1d49-83a66866ccfa}
- DONE in 2021-06-12
- I didn't find a simple way to test without getting too much into the weeds with mocking Git, and I don't think it is worth it.
+ I didn't find a simple way to test without getting too much into the weeds
+ with mocking Git, and I don't think it is worth it.
- The tests I created are actually just exercising the help and versions flags, and asserting that other flags are ignored.
- For effectiveness this is pretty shallow and pretty useless, but I'm fine with the state of not testing the core functionality.
+ The tests I created are actually just exercising the help and versions flags,
+ and asserting that other flags are ignored.
+ For effectiveness this is pretty shallow and pretty useless, but I'm fine with
+ the state of not testing the core functionality.
- To do that it would require me to split `src/git-permalink.sh` into two files, one with the function definitions and the other as a runner.
- But then I would have to glue them together on the `install` target, and more similar complications.
+ To do that it would require me to split `src/git-permalink.sh` into two files,
+ one with the function definitions and the other as a runner.
+ But then I would have to glue them together on the `install` target, and more
+ similar complications.
Given all that, I chose not to write more tests, and call this done.
@@ -435,27 +484,39 @@ part of the first version:
Using the language only is better, period.
- There are special cases where the country actually helps specify two different languages, such as zh_CN and zh_TW.
- But the default should be the language encompassing universally all countries that speak that language.
+ There are special cases where the country actually helps specify two different
+ languages, such as zh_CN and zh_TW.
+ But the default should be the language encompassing universally all countries
+ that speak that language.
Regionalisms are avoided to better inclusivity of less populated countries.
- BONUS: The golden rule is to make the translation unit to be the sentence rather than words.
- This is just a general comment on translation logistics, and has nothing to do with including the country.
+ BONUS: The golden rule is to make the translation unit to be the sentence
+ rather than words.
+ This is just a general comment on translation logistics, and has nothing to do
+ with including the country.
- TODO in 2021-07-06
---
-Wikipedia has the best approach to translations, in my opinion, and I'm considering following it, or do something inspired by it.
+Wikipedia has the best approach to translations, in my opinion, and I'm
+considering following it, or do something inspired by it.
-The main concept is do translate content based on the language, but not the country.
-So instead of having a `pt_PT` and a `pt_BR` version, there is only one `pt` version, and local differences are included in the translation itself.
+The main concept is do translate content based on the language, but not the
+country.
+So instead of having a `pt_PT` and a `pt_BR` version, there is only one `pt`
+version, and local differences are included in the translation itself.
-Other than the obvious benefit of requiring less translations to exist, I like the fact that they are capable of capturing the language, without excluding different countries or communities that speak them.
+Other than the obvious benefit of requiring less translations to exist, I like
+the fact that they are capable of capturing the language, without excluding
+different countries or communities that speak them.
-Everywhere else I see the country as part of the language identifier or the translation, and I don't like it.
-Personally, I'd rather have a text that is a little bit less idiomatic to a country, but is universal to the language.
+Everywhere else I see the country as part of the language identifier or the
+translation, and I don't like it.
+Personally, I'd rather have a text that is a little bit less idiomatic to a
+country, but is universal to the language.
-Wikipedia has other decisions that I disagree with, such as serving different content for desktop and mobile, from different DNS addresses ([1], [2]).
+Wikipedia has other decisions that I disagree with, such as serving different
+content for desktop and mobile, from different DNS addresses ([1], [2]).
That is just to say that I want to take some of their ideas, but not all.
[1]: https://diff.wikimedia.org/2009/06/30/wikimedia-mobile-launch/
@@ -503,11 +564,16 @@ itself.
---
-This is an anti-pattern in the viewpoint of the category of files that should exist in the repository, but this is made strictly for one rule: reducing the dependencies of the project for consumers (and not for developers), namely, gettext.
+This is an anti-pattern in the viewpoint of the category of files that should
+exist in the repository, but this is made strictly for one rule: reducing the
+dependencies of the project for consumers (and not for developers), namely,
+gettext.
-Since gettext itself isn't standard (see [discussion] on this topic), adding this requirement to the consumer (user or packager) isn't desirable.
+Since gettext itself isn't standard (see [discussion] on this topic), adding
+this requirement to the consumer (user or packager) isn't desirable.
-So here I'm optimizing for more things being commited in the repository in the name of less requirements.
+So here I'm optimizing for more things being commited in the repository in the
+name of less requirements.
[discussion]: https://www.austingroupbugs.net/view.php?id=1122
@@ -519,7 +585,9 @@ So here I'm optimizing for more things being commited in the repository in the n
No.
- Pandoc is too lenient with man, and knows only about man and not about the rest of troffs toolchain (`tbl`, `eqn`, `pic`, etc.), but groff is worst on Unicode, so we stick to pandoc.
+ Pandoc is too lenient with man, and knows only about man and not about the
+ rest of troffs toolchain (`tbl`, `eqn`, `pic`, etc.), but groff is worst on
+ Unicode, so we stick to pandoc.
- TODO in 2021-07-10
## DONE Is an empty blank line in groff the same as a `.P` request? {#question-e3b7748d-2e67-b60b-e966-ad80c754ea58}
@@ -531,7 +599,9 @@ So here I'm optimizing for more things being commited in the repository in the n
---
-When reading the manpage with `man` or looking at the final output generated with `pandoc`, it seems to me that an empty line behaves and mean the same thing as a `.P` request.
+When reading the manpage with `man` or looking at the final output generated
+with `pandoc`, it seems to me that an empty line behaves and mean the same thing
+as a `.P` request.
If this is true, these two snippets are equivalent:
```troff
@@ -554,7 +624,8 @@ The second paragrah.
The third paragraph.
```
-I find the second option to be much more readable, and if both are equivalent I prefer writing that.
+I find the second option to be much more readable, and if both are equivalent I
+prefer writing that.
In fact, I don't see any reason at all to use `.PP`.
# Resources