1. "Tautan untuk mengunduh buku dengan mudah" tidak selalu merujuk pada buku yang *gratis*. Harap hanya memberikan konten yang gratis. Pastikan itu benar-benar gratis. Kami tidak menerima tautan ke halaman yang *meminta* alamat email yang valid untuk mengunduh buku, tetapi kami menyambut daftar situs yang meminta alamat email.
2. Anda tidak harus terbiasa dengan Git: jika Anda menemukan sesuatu yang menarik *dan belum ada di repositori ini*, silakan buka [Isu](https://github.com/EbookFoundation/free-programming-books/issues) dengan proposal tautan Anda.
- Jika Anda sudah familiar dengan Git, fork repositori dan kirimkan Pull Request (PR) Anda.
- *Kursus*: Kursus menggambarkan materi pembelajaran yang bukan berupa buku. [Ini adalah contoh kursus](http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/).
- *Tutorial interaktif*: Situs web interaktif yang memungkinkan pengguna memasukkan kode sumber perintah dan mengevaluasi hasilnya (dengan "mengevaluasi" kami tidak bermaksud "menilai"). misalnya: [Coba Haskell](http://tryhaskell.org), [Coba Git](https://learngitbranching.js.org).
- *Playgrounds*: Situs web interaktif, permainan, atau perangkat lunak desktop untuk belajar pemrograman. Anda dapat menulis, mengkompilasi (atau menjalankan), dan membagikan potongan kode. Playgrounds seringkali memperbolehkan Anda untuk membuat salinan (fork) dan membebaskan Anda untuk bermain dengan kodenya.
- *Kumpulan Masalah & Pemrograman Kompetitif*: Situs web atau perangkat lunak yang memungkinkan Anda mengukur kemampuan pemrograman Anda dengan menyelesaikan masalah-masalah sederhana atau kompleks, dengan atau tanpa tinjauan kode, dengan atau tanpa membandingkan hasilnya dengan pengguna lain.
5. GitHub Actions akan menjalankan pengujian untuk **memastikan bahwa daftar yang Anda buat diurutkan secara alfabetis** dan **mengikuti aturan format**. **Pastikan** untuk memeriksa bahwa perubahan yang Anda buat lulus uji coba tersebut.
- Pastikan bahwa buku yang Anda tambahkan benar-benar gratis. Periksa dua kali jika perlu. Ini akan membantu para admin jika Anda memberikan komentar di PR mengenai alasan Anda menganggap buku tersebut gratis.
- Kami tidak menerima file yang bersumber dari Google Drive, Dropbox, Mega, Scribd, Issuu, dan platform unggah file serupa lainnya.
- Masukkan tautan Anda dalam urutan alfabetis, seperti yang dijelaskan [di bawah](#alphabetical-order).
- Gunakan tautan dengan sumber yang paling otoritatif (artinya situs web penulis lebih baik daripada situs web penyunting, yang lebih baik daripada situs web pihak ketiga).
- Jangan gunakan layanan hosting file (termasuk namun tidak terbatas pada tautan Dropbox dan Google Drive).
- Selalu gunakan protokol tautan `https` daripada tautan `http` -- selama keduanya berada di domain yang sama dan menyajikan konten yang sama.
- Pada domain root, hapus garis miring di akhir: `http://example.com` alih-alih `http://example.com/`
- Pilih tautan ke "versi terbaru" alih-alih menautkan ke "versi tertentu": `http://example.com/dir/book/current/` lebih baik daripada `http://example.com/dir/book/v1.0.0/index.html`.
- Jika sebuah tautan memiliki sertifikat yang sudah kedaluwarsa/sertifikat buatan sendiri/masalah SSL lainnya:
1.*Gantilah* dengan versi `http` jika memungkinkan (karena prosesi pengecualian / bypass bisa jadi rumit di perangkat seluler).
2.*Biarkan apa adanya* jika versi `http` tidak tersedia, tetapi tautan dapat diakses melalui `https` dengan mengabaikan peringatan di browser atau menambahkan pengecualian.
3.*Hapus* jika tidak ada pilihan lain.
- Jika sebuah tautan ada dalam beberapa format, tambahkan tautan terpisah dengan catatan tentang setiap format.
- Jika sebuah sumber ada di berbagai tempat di Internet:
- Gunakan tautan dengan sumber yang paling otoritatif (artinya situs web penulis lebih baik daripada situs web penyunting, yang lebih baik daripada situs web pihak ketiga).
- Jika mereka merujuk ke edisi yang berbeda, dan Anda menganggap edisi tersebut cukup berbeda sehingga layak untuk tetap mempertahankannya, tambahkan tautan terpisah dengan catatan tentang setiap edisi (lihat [Issue #2353](https://github.com/EbookFoundation/free-programming-books/issues/2353) untuk berpartisipasi dalam diskusi tentang pemformatan).
- Utamakan komit atomik (satu komit per-penambahan/penghapusan/modifikasi) daripada komit yang lebih besar. Tidak perlu menggabungkan komit-komit Anda sebelum mengirimkan PR. (Kami tidak akan pernah menegakkan aturan ini karena ini hanya masalah kenyamanan bagi para pengelola).
- Jika buku sudah lama diterbitkan, sertakan tanggal publikasinya bersama dengan judulnya.
- Sertakan nama atau nama-nama penulis yang sesuai. Anda dapat memendekkan daftar penulis dengan "`et al.`".
- Jika buku belum selesai, dan masih dalam tahap pengerjaan, tambahkan keterangan "`dalam proses`" seperti yang dijelaskan [di bawah ini](#in_process).
- Jika suatu sumber dipulihkan menggunakan [*Internet Archive's Wayback Machine*](https://web.archive.org) (atau serupa), tambahkan keterangan "`terarsip`" seperti yang dijelaskan [di bawah](#archived). Versi terbaik untuk digunakan adalah versi terbaru dan lengkap.
- Jika alamat email atau pengaturan akun diperlukan sebelum pengunduhan, tambahkan catatan sesuai dengan bahasa yang tepat dalam tanda kurung, misalnya: `(alamat email *diminta*, tidak wajib)`.
- Format lebih dari satu (Kami lebih suka satu tautan untuk setiap sumber. Ketika tidak ada tautan tunggal yang dapat diakses lebih mudah ke format yang berbeda, beberapa tautan lebih diutamakan. Namun, setiap tautan yang kami tambahkan akan menambah beban pemeliharaan sehingga kami mencoba menghindarinya.)
BAIK : * [A Way-backed Interesting Book](https://web.archive.org/web/20211016123456/http://example.com/) - John Doe (HTML) *(:card_file_box: archived)*
- Ketika terdapat beberapa judul yang dimulai dengan huruf yang sama, urutkan berdasarkan yang kedua, dan seterusnya. Sebagai contoh: `aa` muncul sebelum `ab`.
Meskipun dasar-dasarnya relatif sederhana, ada keragaman besar dalam sumber daya yang kami daftarkan. Berikut adalah beberapa catatan tentang bagaimana kita menghadapi keragaman ini.
#### Metadata
Daftar kami menyediakan kumpulan metadata minimal: judul, URL, pembuat, platform, dan catatan akses.
- Tidak menggunakan judul yang diciptakan. Kami mencoba menggunakan judul dari sumber daya itu sendiri; kontributor diharapkan untuk tidak membuat judul atau menggunakan judul secara editorial jika hal ini dapat dihindari. Sebuah pengecualian adalah untuk karya-karya lama; jika mereka utamanya dari minat sejarah, tahun dalam tanda kurung yang ditambahkan ke judul membantu pengguna mengetahui jika mereka menarik minat.
- Tidak menggunakan judul dengan HURUF KAPITAL. Biasanya, judul yang ditulis dengan huruf kapital awal adalah yang sesuai, tetapi jika ragu, gunakan kapitalisasi yang sesuai dari sumbernya.
- URL internasional harus diubah menjadi format yang benar (escaped). Biasanya, bilah peramban akan menampilkan ini dalam bentuk Unicode, namun, untuk menghindari kesalahan, harap menggunakan salin dan tempel (copy and paste).
- URL yang aman (`https`) selalu diutamakan daripada URL yang tidak aman (`http`) di tempat-tempat di mana HTTPS telah diimplementasikan.
- Untuk karya terjemahan, penulis asli harus dikreditkan. Kami rekomendasikan menggunakan [kode relator MARC](https://loc.gov/marc/relators/relaterm.html) untuk mengkredit pencipta selain penulis, seperti dalam contoh ini:
- Untuk karya kompilasi atau campuran, "pencipta" mungkin memerlukan deskripsi. Misalnya, buku "GoalKicker" atau "RIP Tutorial" dikreditkan sebagai "`Dikompilasi dari dokumentasi StackOverflow`" (dalam Bahasa Inggris: `Compiled from StackOverflow documentation`).
- Kursus. Khususnya untuk daftar kursus kami, platform merupakan bagian penting dari deskripsi sumber daya. Hal ini karena platform kursus memiliki keterjangkauan dan model akses yang berbeda. Meskipun kami biasanya tidak akan mencantumkan buku yang memerlukan pendaftaran, banyak platform kursus memiliki keterjangkauan yang tidak berfungsi tanpa akun tertentu. Contoh platform kursus termasuk Coursera, EdX, Udacity, dan Udemy. Ketika sebuah kursus bergantung pada suatu platform, nama platform tersebut harus dicantumkan dalam tanda kurung.
- YouTube. Kami memiliki banyak kursus yang terdiri dari daftar putar YouTube. Kami tidak mencantumkan YouTube sebagai sebuah platform, kami mencoba mencantumkan kreator YouTube, yang seringkali merupakan sub-platform.
- Video YouTube. Kami biasanya tidak mengaitkan tautan ke video YouTube individu kecuali jika video tersebut berdurasi lebih dari satu jam dan disusun seperti kursus atau tutorial. Jika ini adalah kasusnya, pastikan untuk mencatatnya dalam deskripsi PR.
- Leanpub. Leanpub menyediakan buku dengan berbagai model akses. Terkadang sebuah buku bisa dibaca tanpa registrasi; terkadang sebuah buku memerlukan akun Leanpub untuk akses gratis. Mengingat kualitas buku dan campuran serta kelenturan model akses Leanpub, kami mengizinkan penulisan yang terakhir dengan catatan akses `*(Akun Leanpub atau alamat email valid diminta)*`
Aturan pertama dalam menentukan daftar mana sebuah sumber daya masuk adalah melihat bagaimana sumber daya itu menggambarkan dirinya sendiri. Jika sumber daya tersebut menyebut dirinya sebagai buku, bisa jadi sumber daya tersebut adalah buku.
Daftar pemrograman kompetitif kami tidak seketat pengecualian ini. Lingkup repositori ini ditentukan oleh komunitas; jika Anda ingin menyarankan perubahan atau penambahan pada lingkup, harap gunakan isu (issue) untuk memberikan saran.
Kursus sering kali memiliki buku teks terkait, yang akan kami daftarkan dalam daftar buku kami. Kursus memiliki kuliah, latihan, tes, catatan atau alat bantu didaktik lainnya. Sebuah kuliah atau video dengan sendirinya bukanlah sebuah kursus. Sebuah powerpoint bukanlah kursus.
- Penegakan aturan format dilakukan secara otomatis melalui [GitHub Actions](https://github.com/features/actions) menggunakan [fpb-lint](https://github.com/vhf/free-programming-books-lint) (lihat [`.github/workflows/fpb-lint.yml`](../.github/workflows/fpb-lint.yml)).
- Anda dapat menentukan lebih dari satu berkas untuk diperiksa, dengan menggunakan spasi tunggal untuk memisahkan setiap entri.
- Jika Anda menentukan lebih dari satu berkas, hasil build didasarkan pada hasil berkas terakhir yang diperiksa. Anda harus memperhatikan bahwa Anda mungkin mendapatkan hasil build yang berhasil, jadi pastikan Anda memeriksa log pembangunan pada akhir Pull Request dengan mengklik "Show all checks" -> "Details".