2015-10-23 21:25:42 +03:00
|
|
|
# Contributing
|
|
|
|
|
2016-02-16 01:47:35 +03:00
|
|
|
All contributions are welcome, from the tiniest typo to a brand new article.
|
|
|
|
Translations in all languages are welcome (or, for that matter, original
|
|
|
|
articles in any language). Send a pull request or open an issue any time of day
|
|
|
|
or night.
|
2015-10-23 21:25:42 +03:00
|
|
|
|
2016-02-16 01:47:35 +03:00
|
|
|
**Please prepend the tag `[language/lang-code]` to your issues and pull
|
|
|
|
requests.** For example, `[python/en]` for English Python. This will help
|
|
|
|
everyone pick out things they care about.
|
2015-10-23 21:25:42 +03:00
|
|
|
|
2016-02-16 01:47:35 +03:00
|
|
|
We're happy for any contribution in any form, but if you're making more than one
|
|
|
|
major change (i.e. translations for two different languages) it would be super
|
|
|
|
cool of you to make a separate pull request for each one so that someone can
|
|
|
|
review them more effectively and/or individually.
|
2015-10-23 21:25:42 +03:00
|
|
|
|
|
|
|
## Style Guidelines
|
|
|
|
|
2022-11-30 16:04:36 +03:00
|
|
|
* **Keep lines under 80 chars**
|
2022-11-30 16:07:56 +03:00
|
|
|
* Try to keep **line length in code blocks to 80 characters or fewer**.
|
|
|
|
* Otherwise, the text will overflow and look odd.
|
2022-11-30 16:28:20 +03:00
|
|
|
* This and other potential pitfalls to format the content consistently are
|
|
|
|
identified by the freely available
|
|
|
|
[markdownlint](https://github.com/markdownlint/markdownlint).
|
2022-11-30 16:04:36 +03:00
|
|
|
* **Prefer example to exposition**
|
2022-11-30 16:07:56 +03:00
|
|
|
* Try to use as few words as possible.
|
|
|
|
* Code examples are preferred over exposition in all cases.
|
2022-11-30 16:04:36 +03:00
|
|
|
* **Eschew surplusage**
|
2022-11-30 16:07:56 +03:00
|
|
|
* We welcome newcomers, but the target audience for this site is programmers
|
2022-11-30 16:15:44 +03:00
|
|
|
with some experience.
|
2022-11-30 16:07:56 +03:00
|
|
|
* Try to avoid explaining basic concepts except for those specific to the
|
2022-11-30 16:15:44 +03:00
|
|
|
language in question.
|
2022-11-30 16:07:56 +03:00
|
|
|
* Keep articles succinct and scannable. We all know how to use Google here.
|
2022-11-30 16:04:36 +03:00
|
|
|
* **Use UTF-8**
|
2022-11-30 16:15:44 +03:00
|
|
|
* For translations (or EN articles with non-ASCII characters) please ensure
|
|
|
|
your file is UTF-8 encoded.
|
2024-04-03 14:16:08 +03:00
|
|
|
* Leave out the byte-order-mark (BOM) at the start of the file (in Vim, use
|
2022-11-30 16:15:44 +03:00
|
|
|
`:set nobomb`).
|
2022-11-30 16:07:56 +03:00
|
|
|
* You can check if the file contains a BOM on Linux/Unix systems by running
|
2016-10-26 11:19:06 +03:00
|
|
|
`file language.html.markdown` You will see this if it uses a BOM:
|
2022-11-30 16:01:21 +03:00
|
|
|
`UTF-8 Unicode (with BOM) text`.
|
2015-10-23 21:25:42 +03:00
|
|
|
|
2016-02-16 01:47:35 +03:00
|
|
|
### Header configuration
|
2015-10-23 21:25:42 +03:00
|
|
|
|
2016-02-16 01:47:35 +03:00
|
|
|
The actual site uses Middleman to generate HTML files from these Markdown ones.
|
|
|
|
Middleman, or at least the custom scripts underpinning the site, requires that
|
|
|
|
some key information be defined in the header.
|
2015-10-23 21:25:42 +03:00
|
|
|
|
2016-02-16 01:47:35 +03:00
|
|
|
The following fields are necessary for English articles about programming
|
|
|
|
languages:
|
|
|
|
|
2022-11-30 16:04:36 +03:00
|
|
|
* **language** The *programming language* in question
|
|
|
|
* **contributors** A list of [author, URL] lists to credit
|
2015-10-23 21:25:42 +03:00
|
|
|
|
|
|
|
Other fields:
|
|
|
|
|
2022-11-30 16:04:36 +03:00
|
|
|
* **category**: The category of the article. So far, can be one of *language*,
|
2019-03-08 19:24:13 +03:00
|
|
|
*tool* or *Algorithms & Data Structures*. Defaults to *language* if omitted.
|
2022-11-30 16:04:36 +03:00
|
|
|
* **filename**: The filename for this article's code. It will be fetched, mashed
|
2016-02-16 01:47:35 +03:00
|
|
|
together, and made downloadable.
|
2024-04-03 14:16:08 +03:00
|
|
|
* For non-English articles, *filename* should have a language-specific
|
2022-11-30 16:15:44 +03:00
|
|
|
suffix.
|
2022-11-30 16:04:36 +03:00
|
|
|
* **lang**: For translations, the human language this article is in. For
|
2016-02-16 01:47:35 +03:00
|
|
|
categorization, mostly.
|
2015-10-23 21:25:42 +03:00
|
|
|
|
|
|
|
Here's an example header for an Esperanto translation of Ruby:
|
|
|
|
|
|
|
|
```yaml
|
2022-11-30 16:04:36 +03:00
|
|
|
*--
|
2024-10-21 00:46:35 +03:00
|
|
|
language: Ruby
|
2015-10-23 21:25:42 +03:00
|
|
|
filename: learnruby-epo.ruby
|
|
|
|
contributors:
|
|
|
|
- ["Doktor Esperanto", "http://example.com/"]
|
|
|
|
- ["Someone else", "http://someoneelseswebsite.com/"]
|
|
|
|
lang: ep-ep
|
2022-11-30 16:04:36 +03:00
|
|
|
*--
|
2015-10-23 21:25:42 +03:00
|
|
|
```
|
2017-11-14 00:45:40 +03:00
|
|
|
|
2024-04-03 14:16:08 +03:00
|
|
|
### Syntax highlighter
|
|
|
|
|
2024-04-19 12:49:22 +03:00
|
|
|
[Pygments](https://pygments.org/languages/) is used for syntax highlighting through
|
|
|
|
[pygments.rb](https://github.com/pygments/pygments.rb).
|
2024-04-03 14:16:08 +03:00
|
|
|
|
|
|
|
### Should I add myself as a contributor?
|
2017-11-14 00:45:40 +03:00
|
|
|
|
|
|
|
If you want to add yourself to contributors, keep in mind that contributors get
|
|
|
|
equal billing, and the first contributor usually wrote the whole article. Please
|
2022-01-03 18:57:54 +03:00
|
|
|
use your judgment when deciding if your contribution constitutes a substantial
|
2017-11-14 00:45:40 +03:00
|
|
|
addition or not.
|
2018-11-17 16:34:43 +03:00
|
|
|
|
|
|
|
## Building the site locally
|
|
|
|
|
2020-01-31 23:20:14 +03:00
|
|
|
You can build the site locally to test your changes. Follow the steps below.
|
2018-11-17 16:34:43 +03:00
|
|
|
|
2022-11-30 16:22:46 +03:00
|
|
|
* Install Ruby language runtime and RubyGems. See
|
|
|
|
[here](https://middlemanapp.com/basics/install/)
|
|
|
|
for more details.
|
|
|
|
* Clone or zip download the
|
|
|
|
[learnxinyminutes-site](https://github.com/adambard/learnxinyminutes-site)
|
|
|
|
repository.
|
2022-11-30 16:15:44 +03:00
|
|
|
* `git clone https://github.com/adambard/learnxinyminutes-site`
|
2018-11-17 16:34:43 +03:00
|
|
|
* Install Middleman and other required dependencies using Bundler.
|
2022-11-30 16:15:44 +03:00
|
|
|
* `cd learnxinyminutes-site/`
|
|
|
|
* `bundle install`
|
2018-11-17 22:02:47 +03:00
|
|
|
* Get the source in place
|
2022-11-30 16:15:44 +03:00
|
|
|
* Copy the contents of your clone of the fork of learnxinyminutes-docs repo
|
|
|
|
into the `source/docs` folder. There shouldn't be a `learnxinyminutes-docs`
|
|
|
|
folder inside the `docs` folder, it should just contain all the repo
|
|
|
|
contents.
|
|
|
|
* Checkout your fork of the learnxinyminutes-docs repo as `source/docs`.
|
2022-11-30 16:18:56 +03:00
|
|
|
* `cd source/docs/`
|
|
|
|
* `git clone https://github.com/YOUR-USERNAME/learnxinyminutes-docs ./source/docs/`
|
2018-11-17 16:34:43 +03:00
|
|
|
* Build the site or run a development server to test your changes (NOTE: run
|
2022-11-30 16:22:46 +03:00
|
|
|
these commands at `learnxinyminutes-site/`).
|
2022-11-30 16:15:44 +03:00
|
|
|
* Build - `bundle exec middleman build`
|
|
|
|
* Dev server - `bundle exec middleman --force-polling --verbose`
|