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
Explain how to document a language track #3315
Merged
Merged
Changes from all commits
Commits
File filter
Filter by extension
Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
# Writing Language Track Documentation | ||
|
||
If someone is going to use Exercism to ramp up in a new programming language, they are going to need to get their local environment set up so that they can solve the problems in that language. | ||
|
||
At the very minimum, people will need to know: | ||
|
||
0. how to install the programming language on their machine | ||
0. how to install any necessary dependencies | ||
0. how to run the tests | ||
|
||
We also like to add some other goodies, for example: | ||
|
||
* **a short introduction about the language**. This helps entice people to start learning it. This should not go into too much detail, as it can link to more in-depth information. It should give a high-level idea of what kind of language it is, and what type of problems it's used to solve, or where it is typically used. The keyword here is *enticing*. We don't need to tell people everything, just get them curious enough to want to try it, or to read more about it. | ||
* **where to learn the basics**. If you're learning the language from scratch, what are some good resources that teach you about the language. Tutorials, websites, books, videos—we're looking for things that people would use to orient themselves and get a good introduction. This is often what you'd use *before* doing Exercism. | ||
* **references and resources**. As people work the exercises on Exercism, they'll probably want reference materials. Where can they find the documentation for the standard library? Are there any useful tools, such as linters or style guides? Are there forums or channels where people can meet other people and ask for help? | ||
|
||
This documentation gets included on the website on the page for each language track. You can browse the track documentation starting from [the main language page](http://exercism.io/languages). | ||
|
||
## File Structure | ||
|
||
Everything that is specific to a particular programming language lives in the repository for that particular language track, making it easy for the people who maintain the track to manage it. | ||
|
||
Since all the language track documentation gets included on the site, it needs to be standardized. We've settled on the following file structure: | ||
|
||
```bash | ||
. | ||
└── docs/ | ||
├── img/ | ||
│ ├── image-one.svg | ||
│ ├── image-two.png | ||
│ └── image-three.jpg | ||
├── ABOUT.md | ||
├── INSTALLATION.md | ||
├── LEARNING.md | ||
├── RESOURCES.md | ||
└── TESTS.md | ||
``` | ||
|
||
The mapping of topics to filenames goes like this: | ||
|
||
* `INSTALLATION.md` - how to install the language and any dependencies | ||
* `TESTS.md` - how to run the tests | ||
* `ABOUT.md` - short, enticing introduction to the language | ||
* `LEARNING.md` - where to get an introduction to the language if you're learning it for the first time | ||
* `RESOURCES.md` - references, tools, etc. | ||
|
||
Any images referenced in the markdown files need to live within the `docs/img` directory. If the directory doesn't exist, you can create it when you need it. | ||
|
||
Use the relative path to this directory when referring to the images in the markdown. E.g., if you have an image named `docs/img/dropdown.png`, then you would reference it with: | ||
|
||
``` | ||
![](/docs/img/dropdown.png) | ||
|
||
There are a number of variations on markdown image syntax. [This guide](https://daringfireball.net/projects/markdown/syntax#img) has more details. | ||
``` | ||
|
||
This will show up correctly when you browse the documentation within the repository on GitHub, and also when it is included on the Exercism website, where we rewrite the paths to refer to the correct API endpoint that serves the images. | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
@kytrinyx you're using an absolute path over here, instead of a relative one. Try using
![](docs/img/dropdown.png)
instead.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.
excellent catch, thank you!