mirror of
https://github.com/EbookFoundation/free-programming-books.git
synced 2024-12-22 11:26:14 +00:00
5974ea2554
* add explicit multiple format example in reference to https://github.com/vhf/free-programming-books/pull/2023 * .pdf link wasn't html doh
5.9 KiB
5.9 KiB
Contributor License Agreement
By contributing you agree to the LICENSE of this repository.
Contributor Code of Conduct
By contributing you agree to respect the Code of Conduct of this repository.
In a nutshell
-
"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.
-
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.
-
We have 5 kinds of lists. Choose the right one:
- Books : PDF, HTML, ePub, a gitbook.io based site, a Git repo, etc.
- 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.
- 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, Try Github.
- JavaScript Resources : Any resources teaching a JavaScript framework or library.
- 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.
-
Make sure to follow the guidelines below and respect the Markdown formatting of the files
Guidelines
- make sure a book is free. Double-check if needed
- we don't accept files hosted on google drive, dropbox, mega, scribd, issuu and other similar file upload platforms
- 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)
- no file hosting services (this includes (but is not limited to) Dropbox and Google Drive links)
- always prefer a
https
link over ahttp
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 ofhttp://example.com/
- always prefer the shortest link:
http://example.com/dir/
is better thanhttp://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 thanhttp://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:
- replace it with its
http
counterpart if possible (because accepting exceptions can be complicated on mobile devices) - leave it if no
http
version but link still accessible throughhttps
by adding an exception to the browser or ignoring the warning - remove it otherwise
- replace it with its
- 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)
- 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
- 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)
Formatting
- All lists are
.md
files. Try to learn Markdown syntax. It's simple! - 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 (####
).
The idea is to have
2
empty lines between last link and new section1
empty line between heading & first link of its section0
empty line between two links1
empty line at the end of each.md
file
Example:
[...]
* [An Awesome Book](http://example.com/example.html)
(blank line)
(blank line)
### Example
(blank line)
* [Another Awesome Book](http://example.com/book.html)
* [Some Other Book](http://example.com/other.html)
- Don't put spaces between
]
and(
BAD : * [Another Awesome Book] (http://example.com/book.html)
GOOD: * [Another Awesome Book](http://example.com/book.html)
- If you wish to mention the author, use
-
(a dash surrounded by single spaces)
BAD : * [Another Awesome Book](http://example.com/book.html)- John Doe
GOOD: * [Another Awesome Book](http://example.com/book.html) - John Doe
- Put a single space between the link and its format
BAD : * [Another Awesome Book](http://example.com/book.pdf)(PDF)
GOOD: * [Another Awesome Book](http://example.com/book.pdf) (PDF)
- Author comes before format:
BAD : * [Another Awesome Book](http://example.com/book.pdf)- John Doe
GOOD: * [Another Awesome Book](http://example.com/book.pdf) - John Doe (PDF)
- 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)