# Documentation categories

**URL:** <https://racket.discourse.group/t/documentation-categories/2065>\
**Category:** General\
**Tags:** documentation, call-for-action\
**Created:** [July 1, 2023, 5:45pm UTC](https://racket.discourse.group/t/documentation-categories/2065 "2023-07-01T17:45:06Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [July 1, 2023, 5:45pm UTC](https://racket.discourse.group/t/documentation-categories/2065/1 "2023-07-01T17:45:06Z")

</div>

Hi all

I recently noticed that we have documentation for many collections/packages listed in the _Miscellaneous Libraries_ section of [https://docs.racket-lang.org/](https://docs.racket-lang.org/)

There are lots of useful categories available so if you maintain a package or want to help a maintainer help users find their package please make a PR to set an appropriate category.

I’ve put some examples and copied the list of categories below to help you get started but please don’t hesitate to ask if you need a hand.

Best regards  
Stephen :beetle:

* * *

The example I noticed was SICP (`#lang sicp`) was not listed in the category “Other Languages in the Racket Environment”, but ended up in the catch-all of _Miscellaneous Libraries_.

This is easy to fix by adding the category to the third part of the definition of `scribblings` in `info.rkt` file for the collection/package documentation.

Some examples of setting a category:

- Qi docs: [https://github.com/drym-org/qi/blob/main/qi-doc/info.rkt](https://github.com/drym-org/qi/blob/main/qi-doc/info.rkt)

- SICP collections:

```scheme
#lang info

(define scribblings '(("sicp-manual.scrbl" (multi-page) (language))))

```

This is documented in **`raco`: Racket Command-Line Tools** section [6.3 Controlling raco setup with "info.rkt" Files](https://docs.racket-lang.org/raco/setup-info.html#%28idx._%28gentag._16._%28lib._scribblings%2Fraco%2Fraco..scrbl%29%29%29):

> The category list specifies how to show the document in the root table of contents. The list must start with a category, which determines where the manual appears in the root documentation page. A category is either a string or a symbol. If it is a string, then the string is the category label on the root page. If it is a symbol, then a default category label is used. The available symbols and the order of categories on the root documentation page is as below:
> 
> - 'getting-started : High-level, introductory documentation, typeset at the same level as other category titles.
> - 'language : Documentation for a prominent programming language.
> - 'tool : Documentation for an executable.
> - 'gui-library : Documentation for GUI and graphics libraries.
> - 'net-library : Documentation for networking libraries.
> - 'parsing-library : Documentation for parsing libraries.
> - 'tool-library : Documentation for programming-tool libraries (i.e., not important enough for the more prominent 'tool category).
> - 'interop : Documentation for interoperability tools and libraries.
> - All string categories as ordered by [string\<=?](https://docs.racket-lang.org/reference/strings.html#%28def._%28%28quote._~23~25kernel%29._string~3c~3d~3f%29%29).
> - 'library : Documentation for libraries; this category is the default and used for unrecognized category symbols.
> - 'legacy : Documentation for deprecated libraries, languages, and tools.
> - 'experimental : Documentation for an experimental language or library.
> - 'other : Other documentation.
> - 'omit : Documentation that should not be listed on the root page or indexed for searching.
> - 'omit-start : Documentation that should not be listed on the root page but should be indexed for searching.

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [July 1, 2023, 7:42pm UTC](https://racket.discourse.group/t/documentation-categories/2065/2 "2023-07-01T19:42:06Z")

</div>

On the topic of categories...

If use a string for the category in `scribblings` you can create a category for the package,  
e.g. `(define scribblings '(["scripty.scrbl" () ("Scripting")]))` in [https://github.com/lexi-lambda/scripty/blob/master/scripty-doc/scribblings/info.rkt](https://github.com/lexi-lambda/scripty/blob/master/scripty-doc/scribblings/info.rkt) creates

 ![image](https://global.discourse-cdn.com/free1/uploads/racket/original/2X/8/814059d057ddd5492c7abc30cb83ba16035ad651.png)

Please do this! - but check for other packages that and use the same category string.

Best regards,

Stephen

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [July 1, 2023, 9:03pm UTC](https://racket.discourse.group/t/documentation-categories/2065/3 "2023-07-01T21:03:04Z")

</div>

I got excited and started creating PR's to specify categories, but @sorawee suggested:

> A perhaps better approach is to introduce a new symbol that `raco setup` understands. This would be better discussed on Discourse.

I've made a PR that adds a category `drracket-plugin` to be rendered as "Dr Racket Plugins" ([https://github.com/racket/racket/pull/4687](https://github.com/racket/racket/pull/4687)) for discussion as suggested.

best regards,  
Stephen

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [July 16, 2023, 10:30pm UTC](https://racket.discourse.group/t/documentation-categories/2065/4 "2023-07-16T22:30:20Z")

</div>

I'm thinking a bit about this PR and the upcoming release. I'm a bit worried that this creates a compatibility problem where libraries that use this symbol will now cause errors when installed on earlier versions of Racket, because they use an unknown symbol. This is not really a problem with this PR, so much, it's a general problem with adding _any_ symbols to the list of acceptable ones.

Perhaps someone has already anticipated this problem; does the current racket build ignore unknown symbols, or signal an error? I will investigate, if I don't hear back from y'all.

---

<div class="post-metadata">

**Author:** ![sorawee](https://avatars.discourse-cdn.com/v4/letter/s/ea5d25/32.png) [@sorawee](https://racket.discourse.group/u/sorawee)\
**Post date:** [July 16, 2023, 10:48pm UTC](https://racket.discourse.group/t/documentation-categories/2065/5 "2023-07-16T22:48:28Z")

</div>

I raised this backward compat issue in [https://github.com/Metaxal/quickscript/pull/69](https://github.com/Metaxal/quickscript/pull/69). IIUC, it defaults to "Misc" if the symbol is not recognized.

---

<div class="post-metadata">

**Author:** ![jbclements](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/jbclements/32/11_2.png) [@jbclements](https://racket.discourse.group/u/jbclements)\
**Post date:** [July 16, 2023, 11:21pm UTC](https://racket.discourse.group/t/documentation-categories/2065/6 "2023-07-16T23:21:50Z")

</div>

Oh, excellent. That solves that problem, thanks!

---

<div class="post-metadata">

**Author:** ![spdegabrielle](https://yyz2.discourse-cdn.com/free1/user_avatar/racket.discourse.group/spdegabrielle/32/95_2.png) [@spdegabrielle](https://racket.discourse.group/u/spdegabrielle)\
**Post date:** [July 17, 2023, 9:09am UTC](https://racket.discourse.group/t/documentation-categories/2065/7 "2023-07-17T09:09:10Z")

</div>

I’ve been meaning to add a note to the manual to make it clear

> Libraries using symbols not in the list below are added to the _Miscellaneous Libraries_ category on the documentation index page.

> <https://github.com/racket/racket/blob/1aa7d3d8098a322ae95268616e9b576c61beadc7/pkgs/racket-doc/scribblings/raco/setup.scrbl#L554>

S.
