-
Notifications
You must be signed in to change notification settings - Fork 351
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add guidelines for the description
field
#1036
base: main
Are you sure you want to change the base?
Conversation
I agree with your goal, and most of the suggestions you made. My main concern is how to enforce those rules without it being annoying for the team and the package authors. We should probably look at how this is done in other projects. For example, Rust documentation tends to be pretty consistent in terms of phrasing; if they can manage to do it with so many contributors, surely this is achievable here as well. |
The decision is of the maintainers, of course, but the way I see it we shouldn’t enforce these as rules but suggest them as guidelines. Maybe it’s my own political views here, but I think it’s better if (within reason) we let people accept the guidelines voluntarily: if they chose to help Typst by contributing a package or a template, it’s not unreasonable to think they will go this extra step of following the guidelines. I’m all for learning from other people, but if by ‘Rust documentation’ you mean the documentation of the language itself, I think we deal here with two different beasts:
The difference can be likened to astronomy: the Rust documentation is like a solar system, where gravity is relatively strong and everything is bound together; our Typst Universe is — well — like a universe, which is much more loose and is made of independent entities (galaxies) which don’t interact with each other much. The analogy isn’t perfect (not on the scientific side nor the software development side… 😉) but I hope it helps to get the point across. Alternatively, I didn’t understand you well and you mean the packages in crates.io, the Rust package registry, which is indeed much closer to Typst Universe in nature. |
I meant documentation for the language itself. However, you are right that crates.io is closer to Typst Universe. And there seem to be inconsistencies on crates descriptions on crates.io just like for packages descriptions on Typst Universe, so I don't think this is a good reference. Anyway, I agree with you about the fact that we should have clear guidelines rather than enforcing rules 👍 |
Not to criticise this package in particular, but I had a look at the ‘New & Hot’ section of Typst Universe where I encountered this package, which has a URL (!) in the description:
All of the information after the word ‘derived’ belongs in the readme. I think this demonstrates why guidelines are helpful. |
Love the guidelines, thank you for writing up. |
This PR slipped under my radar, but I like the guidelines put forth here. I'll bring this up in our next team meeting. |
Regarding full stop: The one with full stop is from me and the one without is from @reknih. :) I prefer to put a full stop in many places because otherwise it gets odd as soon as I need a second sentence. In this case, one could argue that it should not be more than one sentence. But that is why I nitpick all PRs on typst/typst to terminate source comments with a full stop. |
Great! 🎉 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We discussed the guidelines, and generally agree, we just have a few comments. Can you also fix the indentation to use spaces instead of tabs, as in the rest of the README?
- **Description:** Write simple, easily-understandable and succinct | ||
descriptions. | ||
- Keep it short. Try to maximise the content:length ratio and weigh your words | ||
thoughtfully. No more than 100 characters, preferably much less. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you rephrase this so that the expected length is more explicit?
thoughtfully. No more than 100 characters, preferably much less. | |
Ideally, it should be 40 to 60 characters long. |
thesis at the Unseen University` is better than `A template for writing a | ||
master’s thesis at the Unseen University`. Omit the indefinite article at | ||
the beginning of the description for conciseness. | ||
- Bilingual descriptions are welcome. If you wish to describe your package in a |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Could please you remove this guideline?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For context: We think for this to be truly useful, the README would also need to be localized, and we'd also want a more machine-readable format (like a per-language table). But that's more complexity than we want to deal with for now, so we feel like it's best to leave it out for now.
descriptions. | ||
- Keep it short. Try to maximise the content:length ratio and weigh your words | ||
thoughtfully. No more than 100 characters, preferably much less. | ||
- Avoid the word ‘Typst’, which is redundant unless your package or template |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you change these quotes to use "standard" double quotes ("
) for more consistency with the rest of the README please?
actually has to do with Typst itself or its ecosystem (like in the case of | ||
[Mantys](https://typst.app/universe/package/mantys/) or | ||
[t4t](https://typst.app/universe/package/t4t)). | ||
- Don’t terminate your description with a full stop. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you swap this point and the previous one, so that the two "Avoid…" points are next to each other?
- Templates allow the user to write certain *types* of documents; clearly | ||
indicate the type of document your template allows. For example, `Master’s | ||
thesis at the Unseen University` is better than `A template for writing a | ||
master’s thesis at the Unseen University`. Omit the indefinite article at |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It would be nice to rephrase this sentence to be explicit about what "the indefinite article" is, contributors are not necessarily familiar with English grammar.
The
description
field is defined as follows:A quick glance on the said package list reveals some inconsistencies. In order to help Typst Universe communicate professionalism and consistency even better, I suggest formulating guidelines that unify the way descriptions look. These should not be hard-set rules but guiding principles that cultivate better ways for package- and template authors to explain what their contributions are for. Practically, I think this should be done in three places:
I don’t think contacting past contributors is a good idea, but when new versions of existing packages and templates are submitted in case that’s needed it’s possible to ask the contributors if they want to reword the description.
I took the liberty of changing the
description
field of the packageexample
and the templatecharged-ieee
in the readme (but not in the actual packages) because this is just a draft.What follows is some points I think worth considering, in the order of proposed guidelines in the pull request. My thoughts are written after the horizontal line in each subsection (tl;dr: I think succinct, minimalist, short and sweet descriptions are the best — less is more). The rewording suggestions within each subsection tackle the point in question individually; some descriptions can be changed with respect to more than one point, but I wanted to keep it focused. The choice of packages and templates that serve as examples in the tables below is arbitrary and not done to criticise specific cases; I just copied and pasted the first packages I found that demonstrate the point under discussion 🙂
Long descriptions
Some descriptions are extremely long; for example:
pintorita
flyingcircus
Long descriptions are not doing the reader any favour in being over descriptive. I think there should be a hard limit of 100 characters at most; maybe even less (see this, where the limit is of 70–75 characters). At any rate package/template authors should be encouraged to maximise the content:length ratio; most packages and templates can and should have descriptions which are 50 characters or less, consisting of well-chosen words.
The above can be reworded as:
pintorita
flyingcircus
Explicit reference to Typst
Some packages and templates have an explicit reference to Typst; for example:
cades
bookletic
letter-pro
minimal-cv
Context is king. There is no reason for this redundant information, as Typst Universe contains… well… packages and templates for Typst. There is reason for such an reference in the description of the package or template in their Git repositories, but this is completely unrelated: descriptions there and here don’t have to be identical, since here we have context that’s absent there.
The above can be reworded as:
cades
letter-pro
Full stop.
Some packages and templates terminate the field with a full stop while some do not; for example:
umbra
suiji
In fact, the readme itself is not consistent:
I think terminal full stops are unnecessary and should be avoided. They create visual clutter, and the description field is not running text. As the packages are already delimited typographically, full stops don’t have a delimiting function either. Compare the following grocery list:
with this one:
The latter is much more readable.
‘(A) package/template (for/to)’
Some packages and templates have the words ‘package’ or ‘template’, respectively, in the description; for example:
game-theoryst
curryst
casual-szu-report
basic-resume
I think having these words is redundant, and it’s better to communicate directly what the package does or what the template is for, without stating they are a package or a template in the description text:
The above can be reworded as:
game-theoryst
casual-szu-report
This is closely related to the next subsection (both make the same guideline in the pull request).
Linguistic form
The corpus of package descriptions demonstrates uneven situation with regard to syntactic structures; for example:
wordometer
polylux
blinky
scrutinize
pyrunner
Templates tend to use nominal forms more often.
I think we should treat packages and templates differently here. While I said above that using the words ‘package’ and ‘template’ should be avoided as they contribute little, I do think different linguistic forms suit each of the two better.
With packages — which allow the user to do things in their document — adopting the Linux kernel guidelines and using the imperative mood seems most suitable. For example, the above can be reworded as:
wordometer
polylux
blinky
scrutinize
With templates — which provides the user with ready-made moulds for documents of different types — I think that standalone noun phrases that describe the type of document provided by the template are the most suitable. Examples of this form include:
classy-german-invoice
fh-joanneum-iit-thesis
knowledge-key
This way, the following
invoice-maker
g-exam
wonderous-book
meppp
can be reworded as
invoice-maker
g-exam
wonderous-book
meppp
Languages other than English
Some descriptions are in languages other than English; for example:
cumcm-muban
minerva-report-fcfm
roremu
Linguistic diversity is great, and some packages and templates are indeed language-specific. I think it’s best if Typst Universe supports multilingual entries, and the user can choose their preferred language(s). If there is no plan to do so in the near future, maybe it’s possible to have a temporary workaround: bilingual descriptions are welcome with a certain structure (say
ENGLISH | ADDITIONAL-LANGUAGE
).With this structure
roremu
’s description can be reworded as:roremu
Character-limit restrictions should be doubled, of course.
Spelling and standard language
This is already covered by the definition of the
description
field, cited above. I don’t want to point out individual examples, but there are many which demonstrate non-standard features which are fine in other, more colloquial contexts but make Typst Universe look less professional than it could be. Capitalisation is an issue, and I also spotted some typos and other non-standard features. IMHO dealing with this should be done tactfully, since power structures are involved and we want to cultivate a diverse and welcoming community, but when done well this can improve Typst Universe without doing any harm.Conclusion
Typst itself is meticulous, and its evident much thought has been given to making it elegant, consistent, cohesive and coherent. In contrast, Typst Universe — being a repository of user-generated content — is a mixed bag. I hope what I propose here will be accepted, at least in part, and consequentially benefit the common ‘marketplace’ of our growing community 🙂