This page was machine-translated. Spotted a mistake?Help improve it.
Skip to content

การมีส่วนร่วม

ขอบคุณที่สนใจมีส่วนร่วม คู่มือนี้อธิบายว่าจะเข้าร่วมได้อย่างไร เรารับอะไรบ้าง และจะเริ่มต้นอย่างไร

วิธีมีส่วนร่วม

Issue (ไม่ต้องตั้งค่าอะไร)

  • รายงานบั๊ก - มีบางอย่างเสียหายไหม? เปิด รายงานบั๊ก พร้อมขั้นตอนการทำซ้ำ
  • คำขอฟีเจอร์ - มีไอเดียไหม? เริ่ม การสนทนา เพื่อให้ชุมชนได้แสดงความเห็นและโหวตสนับสนุน
  • ปัญหาเรื่องการแปล - เจอคำแปลที่ผิดหรือขาดหายไหม? เปิด issue เรื่องการแปล
  • ปัญหาเรื่องเอกสาร - มีอะไรผิดพลาดในเอกสารไหม? เปิด issue เรื่องเอกสาร

โค้ด (ต้องมี CLA)

เรารับ pull request สำหรับ:

ประเภทขั้นตอน
การแก้บั๊กเปิด PR ได้เลย (ลิงก์ไปยัง issue ถ้ามี)
การแปลใหม่เปิด PR ได้เลย (ดู คู่มือการแปล)
การปรับปรุงเอกสารเปิด PR ได้เลย
การปรับปรุงความครอบคลุมของเทสต์เปิด PR ได้เลย
เครื่องมือหรือฟีเจอร์ใหม่เริ่ม การสนทนา ก่อน ผู้ดูแลจะแปลงไอเดียที่อนุมัติแล้วเป็น issue ที่ติดตามได้ก่อนที่คุณจะเขียนโค้ด
การ refactor หรือเปลี่ยนสถาปัตยกรรมเริ่ม การสนทนา ก่อนและรอให้ผู้ดูแลอนุมัติก่อนเขียนโค้ด

สิ่งที่เราจะไม่รับ

  • การเปลี่ยนแปลง workflow ของ CI/CD, การตั้งค่า release หรือการตั้งค่า linter/compiler
  • PR ที่ไม่มีการลงนาม Contributor License Agreement
  • PR ที่มีการเปลี่ยนแปลงเกิน 400 บรรทัด (แบ่งงานใหญ่ออกเป็น PR ย่อย)
  • ฟีเจอร์ที่ไม่ได้ถูกอภิปรายและอนุมัติก่อน
  • การเปลี่ยนแปลง packages/ai/ โดยไม่มีการอภิปรายก่อน

Contributor License Agreement

ก่อนที่เราจะรวม PR แรกของคุณได้ คุณต้องลงนาม Individual CLA ของเรา นี่เป็นข้อกำหนดที่ทำเพียงครั้งเดียว

ทำไม: SnapOtter มีสัญญาอนุญาตแบบคู่ (AGPLv3 + commercial) CLA ให้สิทธิ์เราในการแจกจ่ายการมีส่วนร่วมของคุณภายใต้สัญญาอนุญาตทั้งสองแบบ คุณยังคงเป็นเจ้าของลิขสิทธิ์เต็มรูปแบบในผลงานของคุณ

อย่างไร: เมื่อคุณเปิด PR แรก บอท CLA Assistant จะแสดงความคิดเห็นพร้อมลิงก์ คลิกลิงก์ ทบทวนข้อตกลง และลงนามด้วยบัญชี GitHub ของคุณ ใช้เวลา 30 วินาที

หากคุณมีส่วนร่วมในนามของนายจ้างและนายจ้างของคุณคงไว้ซึ่งสิทธิ์ในทรัพย์สินทางปัญญาเหนือผลงานของคุณ กรุณาติดต่อ [email protected] เพื่อจัดทำ Corporate CLA ก่อนส่ง

เริ่มต้นใช้งาน

สิ่งที่ต้องมีก่อน

  • Node.js 22+
  • pnpm 9+
  • Python 3.11+ (สำหรับเครื่องมือ AI เท่านั้น)
  • Docker (ไม่บังคับ สำหรับการทดสอบ integration เต็มรูปแบบ)

การตั้งค่า

bash
# Fork and clone
git clone https://github.com/<your-username>/snapotter.git
cd snapotter

# Start Postgres + Redis for local dev
docker compose -f docker-compose.dev.yml up -d

# Install dependencies
pnpm install

# Start dev servers (web on :1349, API on :13490)
pnpm dev

การรันการตรวจสอบ

ก่อนส่ง PR ให้แน่ใจว่าการตรวจสอบทั้งหมดผ่านในเครื่องของคุณ:

bash
pnpm lint          # Biome lint + format check
pnpm typecheck     # TypeScript across monorepo
pnpm test          # Vitest unit + integration tests

ขั้นตอน pull request

  1. Fork repo และสร้าง branch จาก main (feat/my-feature หรือ fix/issue-123)
  2. ทำการเปลี่ยนแปลงของคุณในคอมมิตที่โฟกัสและตรวจสอบได้ง่ายโดยใช้ conventional commits
  3. เพิ่มหรืออัปเดตเทสต์สำหรับการเปลี่ยนแปลงของคุณ
  4. รัน pnpm lint && pnpm typecheck && pnpm test ในเครื่อง
  5. เปิด PR เทียบกับ main และกรอกแม่แบบ
  6. ลงนาม CLA หากได้รับแจ้ง
  7. รอให้ CI ผ่านและผู้ดูแลตรวจทาน

สิ่งที่คาดหวังจากการตรวจทาน

  • เราตั้งเป้าจะตอบ PR ภายใน 7 วัน
  • PR ที่เล็กและโฟกัสจะได้รับการตรวจทานเร็วกว่า
  • หากไม่ได้รับการตอบกลับภายใน 7 วัน ให้แสดงความคิดเห็นเพื่อเตือนในเธรด
  • เราอาจขอให้เปลี่ยนแปลง แนะนำแนวทางอื่น หรือปิด PR หากไม่สอดคล้องกับทิศทางของโปรเจกต์

หลังจาก PR ของคุณถูกรวมแล้ว

การมีส่วนร่วมของคุณจะถูกรวมไว้ในการรีลีสถัดไปและได้รับเครดิตใน changelog

Issue ที่เหมาะกับผู้เริ่มต้น

กำลังมองหางานทำอยู่ไหม? ดู good first issues ของเราสำหรับงานที่เหมาะกับผู้เริ่มต้น หรือ help wanted สำหรับงานใหญ่ที่เรายินดีรับความช่วยเหลือจากชุมชน

รูปแบบโค้ด

  • Biome จัดการการฟอร์แมตและ linting (double quotes, semicolons, การเยื้อง 2 ช่องว่าง)
  • Pre-commit hook จะรัน biome check --write กับไฟล์ที่ staged โดยอัตโนมัติ
  • หาก linter ร้องเรียน ให้แก้ไขโค้ด (อย่าแก้ไขการตั้งค่า Biome)
  • ES modules ทุกที่ (import/export)
  • Conventional commits: feat:, fix:, refactor:, docs:, test:, chore:

สำหรับรายละเอียดสถาปัตยกรรมทั้งหมด ดู คู่มือนักพัฒนา

ความปลอดภัย

อย่าเปิด PR หรือ issue สาธารณะสำหรับช่องโหว่ด้านความปลอดภัย รายงานเป็นการส่วนตัวผ่าน GitHub Security Advisories หรืออีเมล [email protected] ดู SECURITY.md สำหรับรายละเอียดทั้งหมด

มีคำถาม?