|
| 1 | +## Contributor License Agreement |
| 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 |
| 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 | + |
| 7 | +## In a nutshell |
| 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. |
| 9 | +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. |
| 10 | + - If you know git, please fork the repo and send pull requests. |
| 11 | +3. We have 5 kinds of lists. Choose the right one: |
| 12 | + |
| 13 | + - *Books* : PDF, HTML, ePub, a gitbook.io based site, a Git repo, etc. |
| 14 | + - *Courses* : A course is a learning material which is not a book and where there is no interactive tool embedded in the site. [This is a course](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/). |
| 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). |
| 16 | + - *JavaScript Resources* : Any resources teaching a JavaScript framework or library. |
| 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 | + |
| 19 | +4. Make sure to follow the [guidelines below](#guidelines) and respect the [Markdown formatting](#formatting) of the files |
| 20 | + |
| 21 | +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. |
| 22 | + |
| 23 | +### Guidelines |
| 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 | +- insert your links in alphabetical order. If you see a misplaced link, please reorder it and submit a PR |
| 27 | +- use the link with the most authoritative source (meaning author's website is better than editor's website is better than third party website) |
| 28 | + + no file hosting services (this includes (but is not limited to) Dropbox and Google Drive links) |
| 29 | +- always prefer a `https` link over a `http` one -- as long as they are on the same domain and serve the same content |
| 30 | +- on root domains, strip the trailing slash: `http://example.com` instead of `http://example.com/` |
| 31 | +- always prefer the shortest link: `http://example.com/dir/` is better than `http://example.com/dir/index.html` |
| 32 | + + no URL shortener links |
| 33 | +- 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` |
| 34 | +- if a link has an expired certificate/self-signed certificate/SSL issue of any other kind: |
| 35 | + 1. *replace it* with its `http` counterpart if possible (because accepting exceptions can be complicated on mobile devices) |
| 36 | + 2. *leave it* if no `http` version but link still accessible through `https` by adding an exception to the browser or ignoring the warning |
| 37 | + 3. *remove it* otherwise |
| 38 | +- if a link exists in multiple format, add a separate link with a note about each format |
| 39 | +- if a resource exists at different places on the Internet |
| 40 | + + 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 |
| 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) |
| 43 | +- if the book is older, include the publication date with the title. |
| 44 | +- include the author name or names where appropriate. You can shorten author lists with "et al." |
| 45 | + |
| 46 | +### Formatting |
| 47 | +- All lists are `.md` files. Try to learn [Markdown](https://guides.github.com/features/mastering-markdown/) syntax. It's simple! |
| 48 | +- All the lists start with an Index. The idea is to list and link all sections and subsections there. Keep it in alphabetical order. |
| 49 | +- Sections are using level 3 headings (`###`), and subsections are level 4 headings (`####`). |
| 50 | + |
| 51 | +The idea is to have |
| 52 | +- `2` empty lines between last link and new section |
| 53 | +- `1` empty line between heading & first link of its section |
| 54 | +- `0` empty line between two links |
| 55 | +- `1` empty line at the end of each `.md` file |
| 56 | + |
| 57 | +Example: |
| 58 | + |
| 59 | + [...] |
| 60 | + * [An Awesome Book](http://example.com/example.html) |
| 61 | + (blank line) |
| 62 | + (blank line) |
| 63 | + ### Example |
| 64 | + (blank line) |
| 65 | + * [Another Awesome Book](http://example.com/book.html) |
| 66 | + * [Some Other Book](http://example.com/other.html) |
| 67 | + |
| 68 | +- Don't put spaces between `]` and `(` |
| 69 | + |
| 70 | +``` |
| 71 | +BAD : * [Another Awesome Book] (http://example.com/book.html) |
| 72 | +GOOD: * [Another Awesome Book](http://example.com/book.html) |
| 73 | +``` |
| 74 | + |
| 75 | +- If you include the author, use ` - ` (a dash surrounded by single spaces) |
| 76 | + |
| 77 | +``` |
| 78 | +BAD : * [Another Awesome Book](http://example.com/book.html)- John Doe |
| 79 | +GOOD: * [Another Awesome Book](http://example.com/book.html) - John Doe |
| 80 | +``` |
| 81 | + |
| 82 | +- Put a single space between the link and its format |
| 83 | + |
| 84 | +``` |
| 85 | +BAD : * [Another Awesome Book](http://example.com/book.pdf)(PDF) |
| 86 | +GOOD: * [Another Awesome Book](http://example.com/book.pdf) (PDF) |
| 87 | +``` |
| 88 | + |
| 89 | +- Author comes before format: |
| 90 | + |
| 91 | +``` |
| 92 | +BAD : * [Another Awesome Book](http://example.com/book.pdf)- John Doe |
| 93 | +GOOD: * [Another Awesome Book](http://example.com/book.pdf) - John Doe (PDF) |
| 94 | +``` |
| 95 | + |
| 96 | +- Multiple formats: |
| 97 | + |
| 98 | +``` |
| 99 | +BAD : * [Another Awesome Book](http://example.com/)- John Doe (HTML) |
| 100 | +BAD : * [Another Awesome Book](https://downloads.example.org/book.html)- John Doe (download site) |
| 101 | +GOOD: * [Another Awesome Book](http://example.com/) - John Doe (HTML) [(PDF, EPUB)](https://downloads.example.org/book.html) |
| 102 | +``` |
| 103 | + |
| 104 | +- Include publication year in title for older books: |
| 105 | + |
| 106 | +``` |
| 107 | +BAD: * [Another Awesome Book](http://example.com/book.html) - John Doe - 1970 |
| 108 | +GOOD: * [Another Awesome Book (1970)](http://example.com/book.html) - John Doe |
| 109 | +``` |
0 commit comments