CONTRIBUTING.md 6.8 KB
Newer Older
1
## Contributor License Agreement
E
eric 已提交
2
By contributing you agree to the [LICENSE](https://github.com/EbookFoundation/free-programming-books/blob/master/LICENSE) of this repository.
3

4
## Contributor Code of Conduct
E
eric 已提交
5
By contributing you agree to respect the [Code of Conduct](https://github.com/EbookFoundation/free-programming-books/blob/master/CODE_OF_CONDUCT.md) of this repository.
6

V
Victor Felder 已提交
7
## In a nutshell
T
Thomas Cort 已提交
8
1. "A link to easily download a book" is not always a link to a *free* book. Please only contribute free content. Make sure it's free.
V
Victor Felder 已提交
9 10
2. You don't have to know git: if you found something of interest which is *not already in this repo*, please open an issue with your links propositions.
    - If you know git, please fork the repo and send pull requests.
11
3. We have 5 kinds of lists. Choose the right one:
V
victor felder 已提交
12

V
Victor Felder 已提交
13
    - *Books* : PDF, HTML, ePub, a gitbook.io based site, a Git repo, etc.
E
eshellman 已提交
14
    - *Courses* : A course is a learning material which is not a book. [This is a course](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/).
V
Victor Felder 已提交
15
    - *Interactive Tutorials* : An interactive website which lets the user type code or commands and evaluates the result (by "evaluate" we don't mean "grade"). e.g.: [Try Haskell](http://tryhaskell.org), [Try Github](http://try.github.io).
E
eshellman 已提交
16
    - *Podcasts and Screencasts* : Podcasts and screencasts.
V
Victor Felder 已提交
17
    - *Problem Sets & Competitive Programming* : A website or software which lets you assess your programming skills by solving simple or complex problems, with or without code review, with or without comparing the results with other users.
18

V
Victor Felder 已提交
19
4. Make sure to follow the [guidelines below](#guidelines) and respect the [Markdown formatting](#formatting) of the files
20

E
eshellman 已提交
21 22
5. Travis CI will run tests to make sure your lists are alphabetized and formatting rules are followed. Be sure to check that your changes pass the tests.

V
Victor Felder 已提交
23
### Guidelines
E
eshellman 已提交
24
- make sure a book is free. Double-check if needed. It helps the admins if you comment in the PR as to why you think the book is free.
25
- we don't accept files hosted on google drive, dropbox, mega, scribd, issuu and other similar file upload platforms
26 27
- insert your links in alphabetical order. If you see a misplaced link, please reorder it and submit a PR
- use the link with the most authoritative source (meaning author's website is better than editor's website is better than third party website)
V
Victor Felder 已提交
28
    + no file hosting services (this includes (but is not limited to) Dropbox and Google Drive links)
29 30 31 32 33 34 35 36 37 38 39 40
- always prefer a `https` link over a `http` one -- as long as they are on the same domain and serve the same content
- on root domains, strip the trailing slash: `http://example.com` instead of `http://example.com/`
- always prefer the shortest link: `http://example.com/dir/` is better than `http://example.com/dir/index.html`
    + no URL shortener links
- usually prefer the "current" link over the "version" one: `http://example.com/dir/book/current/` is better than `http://example.com/dir/book/v1.0.0/index.html`
- if a link has an expired certificate/self-signed certificate/SSL issue of any other kind:
  1. *replace it* with its `http` counterpart if possible (because accepting exceptions can be complicated on mobile devices)
  2. *leave it* if no `http` version but link still accessible through `https` by adding an exception to the browser or ignoring the warning
  3. *remove it* otherwise
- if a link exists in multiple format, add a separate link with a note about each format
- if a resource exists at different places on the Internet
    + use the link with the most authoritative source (meaning author's website is better than editor's website is better than third party website)
41
    + if they link to different editions and you judge these editions are different enough to be worth keeping them, add a separate link with a note about each edition (see [Issue #2353](https://github.com/EbookFoundation/free-programming-books/issues/2353) to contribute to the discussion on formatting.)
42
- prefer atomic commits (one commit by addition/deletion/modification) over bigger commits. No need to squash your commits before submitting a PR. (We will never enforce this rule as it's just a matter of convenience for the maintainers)
E
eshellman 已提交
43 44
- if the book is older, include the publication date with the title. 
- include the author name or names where appropriate. You can shorten author lists with "et al."
45
- if the book is not finished, and is still being worked on, add the "in process" notation, as described [below.](#in_process)
46 47

### Formatting
V
Victor Felder 已提交
48
- All lists are `.md` files. Try to learn [Markdown](https://guides.github.com/features/mastering-markdown/) syntax. It's simple!
49 50
- All the lists start with an Index. The idea is to list and link all sections and subsections there. Keep it in alphabetical order.
- Sections are using level 3 headings (`###`), and subsections are level 4 headings (`####`).
51 52

The idea is to have
53 54 55 56 57 58
- `2` empty lines between last link and new section
- `1` empty line between heading & first link of its section
- `0` empty line between two links
- `1` empty line at the end of each `.md` file

Example:
59

60
    [...]
V
Victor Felder 已提交
61
    * [An Awesome Book](http://example.com/example.html)
V
Victor Felder 已提交
62 63
                                    (blank line)
                                    (blank line)
V
Victor Felder 已提交
64
    ### Example
V
Victor Felder 已提交
65
                                    (blank line)
V
Victor Felder 已提交
66 67
    * [Another Awesome Book](http://example.com/book.html)
    * [Some Other Book](http://example.com/other.html)
68

V
Victor Felder 已提交
69
- Don't put spaces between `]` and `(`
V
victor felder 已提交
70

V
Victor Felder 已提交
71 72 73 74
```
BAD : * [Another Awesome Book] (http://example.com/book.html)
GOOD: * [Another Awesome Book](http://example.com/book.html)
```
75

E
eshellman 已提交
76
- If you include the author, use ` - ` (a dash surrounded by single spaces)
77

V
Victor Felder 已提交
78
```
V
Victor Felder 已提交
79 80
BAD : * [Another Awesome Book](http://example.com/book.html)- John Doe
GOOD: * [Another Awesome Book](http://example.com/book.html) - John Doe
V
Victor Felder 已提交
81
```
82

83
- Put a single space between the link and its format
84

V
Victor Felder 已提交
85
```
86 87
BAD : * [A Very Awesome Book](https://example.org/book.pdf)(PDF)
GOOD: * [A Very Awesome Book](https://example.org/book.pdf) (PDF)
V
Victor Felder 已提交
88
```
89

V
Victor Felder 已提交
90
- Author comes before format:
91

V
Victor Felder 已提交
92
```
93 94
BAD : * [A Very Awesome Book](https://example.org/book.pdf)- Jane Roe
GOOD: * [A Very Awesome Book](https://example.org/book.pdf) - Jane Roe (PDF)
V
Victor Felder 已提交
95
```
96 97 98 99 100 101 102 103

- Multiple formats:

```
BAD : * [Another Awesome Book](http://example.com/)- John Doe (HTML)
BAD : * [Another Awesome Book](https://downloads.example.org/book.html)- John Doe (download site)
GOOD: * [Another Awesome Book](http://example.com/) - John Doe (HTML) [(PDF, EPUB)](https://downloads.example.org/book.html)
```
E
eshellman 已提交
104 105 106 107

- Include publication year in title for older books:

```
108 109 110 111 112 113 114 115 116
BAD: * [A Very Awesome Book](https://example.org/book.html) - Jane Roe - 1970
GOOD: * [A Very Awesome Book (1970)](https://example.org/book.html) - Jane Roe
```

<a name="in_process"></a>
- In-process books 

```
GOOD: * [Will Be Awesome Soon Book](http://example.com/book2.html) - John Doe (HTML) (:construction: *in process*)
E
eshellman 已提交
117
```