Our lists provide a minimal set of metadata: titles, URLs, creators, platforms, and access notes.
我们的清单提供了一组最小的元资料:标题、URL、创建者、平台和存取注释。
##### Titles
##### 标题
- No invented titles. We try to take titles from the resources themselves; contributors are admonished not to invent titles or use them editorially if this can be avoided. An exception is for older works; if they are primarily of historical interest, a year in parentheses appended to the title helps users know if they are of interest.
- No ALLCAPS titles. Usually title case is appropriate, but when doubt use the capitalization from the source
- International URLs should be escaped. Browser bars typically render these to Unicode, but use copy and paste, please.
- Secure (`https`) URLs are always preferred over non-secure (`http`) urls where HTTPS has been implemented.
- We don't like URLs that point to webpages that don't host the listed resource, but instead point elsewhere.
- 我们不允许使用短链。
- 必须从网址中删除追踪代码。
- 国际网址应进行转义。浏览器列通常会将这些内容呈现为 Unicode,但请使用复制和贴上。
- 在支持 HTTPS 的网站,安全的(https)URL总是优于非安全的(http)URL。
- 我们不喜欢网址指向不托管所列资源的网页,而是指向其他地方。
##### Creators
##### 创作者
- We want to credit the creators of free resources where appropriate, including translators!
- For translated works the original author should be credited. We recommend using [MARC relators](https://loc.gov/marc/relators/relaterm.html) to credit creators other than authors, as in this example:
* [A Translated Book](http://example.com/book-zh.html) - John Doe, `trl.:` Mike The Translator
* [译作](http://example.com/book-zh.html) - John Doe,`trl.:` 译者麦克
```
这里,注解「trl.:」使用「翻译器」的 MARC 相关程式码。
- 使用逗号「,」来分隔作者清单中的每个项目。
- 您可以使用「`et al.`」来缩短作者清单。
- 我们不允许为创作者提供链接。
- 对于编译或混音作品,「创作者」可能需要描述。例如,「GoalKicker」或「RIP Tutorial」书籍被标记为「`Compiled from StackOverflow Documentation`」。
here, the annotation `trl.:` uses the MARC relator code for "translator".
- Use a comma `,` to delimit each item in the author list.
- You can shorten author lists with "`et al.`".
- We do not permit links for Creators.
- For compilation or remixed works, the "creator" may need a description. For example, "GoalKicker" or "RIP Tutorial" books are credited as "`Compiled from StackOverflow documentation`".
- Courses. Especially for our course lists, the platform is an important part of the resource description. This is because course platforms have different affordances and access models. While we usually won't list a book that requires a registration, many course platforms have affordances that don't work without some sort of account. Example course platforms include Coursera, EdX, Udacity, and Udemy. When a course depends on a platform, the platform name should be listed in parentheses.
- YouTube. We have many courses which consist of YouTube playlists. We do not list YouTube as a platform, we try to list the YouTube creator, which is often a sub-platform.
- YouTube videos. We usually don't link to individual YouTube videos unless they are more than an hour long and are structured like a course or a tutorial.
- Leanpub. Leanpub hosts books with a variety of access models. Sometimes a book can be read without registration; sometimes a book requires a Leanpub account for free access. Given quality of the books and the mixture and fluidity of Leanpub access models, we permit listing of the latter with the access note `*(Leanpub account or valid email requested)*`.
The first rule in deciding which list a resource belongs in is to see how the resource describes itself. If it calls itself a book, then maybe it's a book.
Because the Internet is vast, we don't include in our lists:
- blogs
- blog posts
- articles
- websites (except for those that host LOTS of items that we list).
- videos that aren't courses or screencasts.
- book chapters
- teaser samples from books
- IRC or Telegram channels
- Slacks or mailing lists
##### 书籍与其他东西
Our competitive programming lists are not as strict about these exclusions. The scope of the repo is determined by the community; if you want to suggest a change or addition to the scope, please use an issue to make the suggestion.
我们对书本性并不那么挑剔。以下是一些表示资源是一本书的属性:
- 它有一个 ISBN(国际标准书号)
- 它有一个目录
- 提供可下载版本,尤其是 ePub 档案。
- 它有版本
- 它不依赖互动内容或视频
- 它试图全面涵盖一个主题
- 它是独立的
##### Books vs. Other Stuff
我们列出的许多书籍不具备这些属性;这可能取决于上下文。
We're not that fussy about book-ness. Here are some attributes that signify that a resource is a book:
- it has an ISBN (International Standard Book Number)
- it has a Table of Contents
- a downloadable version is offered, especially ePub files.
- it has editions
- it doesn't depend on interactive content or videos
- it tries to comprehensively cover a topic
- it's self-contained
##### 书与课程
There are lots of books that we list that don't have these attributes; it can depend on context.
Courses often have associated textbooks, which we would list in our books lists. Courses have lectures, exercises, tests, notes or other didactic aids. A single lecture or video by itself is not a course. A powerpoint is not a course.
如果您可以将其打印出来并保留其精髓,那么它就不是交互式教程。
##### Interactive Tutorials vs. Other stuff
### 自动化
If you can print it out and retain its essence, it's not an Interactive Tutorial.
- 格式化规则的执行是通过以下方式自动执行的 [GitHub Actions](https://github.com/features/actions) 用 [fpb-lint](https://github.com/vhf/free-programming-books-lint) (see [`.github/workflows/fpb-lint.yml`](../.github/workflows/fpb-lint.yml))
- Formatting rules enforcement is automated via [GitHub Actions](https://github.com/features/actions) using [fpb-lint](https://github.com/vhf/free-programming-books-lint) (see [`.github/workflows/fpb-lint.yml`](../.github/workflows/fpb-lint.yml))
- You may specify more than one file to check, using a single space to separate each entry.
- If you specify more than one file, results of the build are based on the result of the last file checked. You should be aware that you may get passing green builds due to this so be sure to inspect the build log at the end of the Pull Request by clicking on "Show all checks" -> "Details".
- - 您可以指定多个要检查的文件,使用单个空格分隔每个条目。
- 如果您指定了多个文件,构建的结果将基于最后一个检查的文件的结果。您应该注意,由于这个原因,您可能会得到通过的绿色构建,所以请确保在拉取请求结束时检查构建日志,点击 “Show all checks”->“Details”。