Kami sangat senang dan berterima kasih bila anda ikut berkontribusi dalam repositori ini. Semua boleh ikut berkontribusi walaupun hal kecil dengan pengecualian sebagai berikut:
- Hasil pekerjaan kamu adalah buatan kamu sendiri dan tidak ada hak cipta dari orang lain.
- Jika ditemukan kesamaan, maka tidak akan kami
merge
.
- Jika ditemukan kesamaan, maka tidak akan kami
- Hasil kerja kamu akan berlisensi MIT ketika permintaan pull kamu sudah di merged.
- Hasil kerja kamu wajib mengikuti standar dan style koding dari kami.
- Penggunaan nama file bersifat
camelCase
dan berlaku juga untuk variable dan identifier. - Menggunakan output
console.log()
. - Menghindari penggunaan library pada koding (jika dibutuhkan silahkan diskusi di issue).
Algoritma adalah langkah-langkah untuk menyelesaikan suatu pekerjaan di mana terdiri dari 3 bagian utama, yaitu:
- Input/masukan, sebelum menjalankan sebuah algoritma maka hal yang pertama harus dilakukan adalah menerima masukan, input dapat berasal dari pengguna ataupun dari langkah sebelumnya.
- Proses, bagian utama dari algoritma yang melakukan pengolahan input yang akan menghasilkan output.
- Output/keluaran, output adalah hasil dari bagian proses, output ini juga bisa digunakan untuk langkah selanjutnya (jika masih ada).
Algoritma harus dikemas sedemikian rupa sehingga memudahkan pembaca untuk memasukkannya ke dalam program yang lebih besar.
Algoritma harus:
- Memiliki nama kelas dan fungsi intuitif yang memperjelas tujuannya bagi pembaca
- Menggunakan konvensi penamaan Javascript dan nama variabel intuitif untuk memudahkan pemahaman
- Fleksibel untuk mengambil nilai input yang berbeda
- Memiliki docstrings dengan penjelasan yang jelas dan/atau URL ke materi sumber
- Berisi doctests yang menguji nilai input yang valid dan salah
- Kembalikan semua hasil perhitungan alih-alih mencetak atau memplotnya
Untuk mengikuti standar dari kode kami, kami menggunakan doctesting untuk mengeceknya
Kita sudah ada testing bawaan untuk mengecek apakah kode kamu masuk standar kami atau belum, sudah ada npm script tinggal pakai. Terdapat prettier dan eslint untuk merapikan juga menguji apakah kode dapat diterima.
Lakukan instalasi terlebih dahulu
npm install
# or yarn install
Untuk memudahkan doctest, ada mode watch yang bisa digunakan. Jika file javascript di save, maka otomatis doctest berjalan.
npm run doctest-watch
# or yarn doctest-watch
Untuk mengecek linting kode, Jalankan
npm run lint
# or yarn lint
Kemudian, untuk menjaga struktur kode tetap rapih, jalankan prettier.
npm run prettier
# or yarn prettier
Jika tidak ada prettier di code editor, bisa juga menjalankan prettier dengan mode watch.
npm run prettier-watch
# or yarn prettier-watch
Testing penting bagi kami untuk mengecek apakah kode kamu bisa digunakan atau tidak, jika testing gagal maka kami akan mengecek kembali.
- Lakukan fork pada repository kami
- Setelah melakukan fork kamu dibebaskan untuk mengubah atau menambah algoritma
- Untuk pull request merubah diusahakan kamu menerapkan algoritma yang lebih baik dan lebih mudah
- Setelah merubah, menambah, atau perbaikan dokumentasi, usahakan kamu membuat branch baru
git checkout -b <branch_name>
git add .
git commit -m "add: menambahkan algoritma baru"
- Lakukan push ke branch kamu dan kemudian open pull request
Pesan / message commit harus mengikuti conventional commit. Kami menggunakan bot label agar tidak susah dalam labeling. Berikut adalah jenis - jenis pesan commit.
fix:
untuk memperbaiki bug (labelbug
).feat:
untuk menambahkan algoritma terbaru (labelenhancement
).docs:
untuk menambahkan dokumentasi (labeldocumentation
).fix(UnknownScope):
memperbaiki algoritma yang sudah ada (labelfix
).
Referensi: Conventional Commits
git commit -m "docs: menambahkan dokumentasi"
git commit -m "feat: menambahkan algoritma terbaru"
Pull request merged
jika:
- Mengikuti standar dan arahan dari
CONTRIBUTING.md
- Lulus test dan cek dari beberapa test yang sudah kami siapkan
Jika kamu menambahkan kode yang memerlukan html dan ada console.log
didalamnya, wajib tambahkan kode dibawah ini, tambahkan kodenya di bagian head
dari htmlnya.
<script>
const _log = console.log;
const encoder = new TextEncoder();
console.log = function (...rest) {
window.parent.postMessage(
{
source: "iframe",
message: rest.map((d) => encoder.encode(d))
},
"*"
);
_log.apply(console, arguments);
};
</script>
- Jika ada kendala atau masalah dalam pull request, kamu bisa laporkan masalah pada issue
- Jika ada test yang tidak lewat atau gagal, kami akan mengecek kembali perubahan.
Untuk pull request kami sarankan untuk menjelaskan secara detail yang kamu ubah atau tambahkan, dan bersikap sopan, serta selalu berterima kasih, itu salah satu bentuk tata krama yang baik terhadap sesama contributor dan programmer lainnya.terima kasih sudah berkontribusi di Javascript.