ไม่ว่าคุณจะเพิ่มฟังก์ชันการสูญเสีย ปรับปรุงความครอบคลุมในการทดสอบ หรือเขียน RFC สำหรับการเปลี่ยนแปลงการออกแบบครั้งสำคัญ คู่มือผู้สนับสนุนส่วนนี้จะช่วยคุณในการเริ่มต้น ขอบคุณสำหรับการทำงานและความสนใจในการปรับปรุง TensorFlow
ก่อนที่คุณจะเริ่มต้น
ก่อนที่คุณจะส่งซอร์สโค้ดให้กับโปรเจ็กต์ TensorFlow โปรดตรวจสอบไฟล์ CONTRIBUTING.md
ใน GitHub repo ของโปรเจ็กต์ ตัวอย่างเช่น ดูไฟล์ CONTRIBUTING.md ใน repo หลักของ TensorFlow ผู้ร่วมให้ข้อมูลโค้ดทั้งหมดจะต้องลงนามใน ข้อตกลงใบอนุญาตผู้ให้การสนับสนุน (CLA)
เพื่อหลีกเลี่ยงไม่ให้งานซ้ำซ้อน โปรดตรวจสอบ RFC ปัจจุบัน หรือ ที่เสนอ และติดต่อนักพัฒนาในฟอรัม TensorFlow ( Developers@tensorflow.org ) ก่อนที่คุณจะเริ่มทำงานกับฟีเจอร์ที่ไม่สำคัญ เราค่อนข้างจะเลือกสรรเมื่อตัดสินใจที่จะเพิ่มฟังก์ชันการทำงานใหม่ และวิธีที่ดีที่สุดในการสนับสนุนและช่วยเหลือโครงการคือการทำงานกับปัญหาที่ทราบ
ปัญหาสำหรับผู้มีส่วนร่วมใหม่
ผู้มีส่วนร่วมรายใหม่ควรมองหาแท็กต่อไปนี้เมื่อค้นหาการสนับสนุนครั้งแรกในฐานรหัส TensorFlow เราขอแนะนำอย่างยิ่งให้ผู้มีส่วนร่วมรายใหม่จัดการกับโครงการ "ฉบับแรกที่ดี" และ "ยินดีต้อนรับการมีส่วนร่วม" ก่อน สิ่งนี้จะช่วยให้ผู้ร่วมให้ข้อมูลคุ้นเคยกับขั้นตอนการทำงานช่วยเหลือ และเพื่อให้ผู้พัฒนาหลักทำความคุ้นเคยกับผู้ร่วมให้ข้อมูล
หากคุณสนใจที่จะสรรหาทีมเพื่อช่วยจัดการกับปัญหาขนาดใหญ่หรือคุณลักษณะใหม่ โปรดส่งอีเมลไปที่ กลุ่ม developer@ และตรวจสอบรายชื่อ RFC ในปัจจุบันของเรา
ตรวจสอบรหัส
คุณลักษณะใหม่ การแก้ไขจุดบกพร่อง และการเปลี่ยนแปลงอื่นๆ ในฐานโค้ดจะต้องได้รับการตรวจสอบโค้ด
การตรวจสอบโค้ดมีส่วนสนับสนุนโครงการเนื่องจากคำขอดึงเป็นองค์ประกอบสำคัญของการพัฒนา TensorFlow เราสนับสนุนให้ทุกคนเริ่มตรวจสอบโค้ดที่ส่งโดยนักพัฒนารายอื่น โดยเฉพาะอย่างยิ่งหากฟีเจอร์นั้นเป็นสิ่งที่คุณน่าจะใช้
ต่อไปนี้คือคำถามบางส่วนที่ควรทราบในระหว่างกระบวนการตรวจสอบโค้ด:
- เราต้องการสิ่งนี้ใน TensorFlow หรือไม่ มีแนวโน้มจะใช้หรือไม่? คุณในฐานะผู้ใช้ TensorFlow ชอบการเปลี่ยนแปลงและตั้งใจจะใช้หรือไม่ การเปลี่ยนแปลงนี้อยู่ในขอบเขตของ TensorFlow หรือไม่ ค่าใช้จ่ายในการบำรุงรักษาคุณสมบัติใหม่จะคุ้มค่าหรือไม่?
- รหัสสอดคล้องกับ TensorFlow API หรือไม่ ฟังก์ชันสาธารณะ คลาส และพารามิเตอร์ต่างๆ ได้รับการตั้งชื่ออย่างดีและออกแบบมาอย่างเป็นธรรมชาติหรือไม่
มีเอกสารประกอบหรือไม่? ฟังก์ชันสาธารณะ คลาส พารามิเตอร์ ชนิดส่งคืน และแอตทริบิวต์ที่เก็บไว้ทั้งหมดมีชื่อตามแบบแผนของ TensorFlow และได้รับการจัดทำเป็นเอกสารอย่างชัดเจนหรือไม่ ฟังก์ชันใหม่ที่อธิบายไว้ในเอกสารประกอบของ TensorFlow และแสดงตัวอย่างพร้อมตัวอย่างเมื่อใดที่ทำได้ เอกสารแสดงอย่างถูกต้องหรือไม่?
รหัสนี้มนุษย์สามารถอ่านได้หรือไม่? มีความซ้ำซ้อนต่ำหรือไม่? ควรปรับปรุงชื่อตัวแปรเพื่อความชัดเจนหรือสอดคล้องกันหรือไม่? ควรเพิ่มความคิดเห็นหรือไม่ ควรลบความคิดเห็นใดๆ ว่าไม่มีประโยชน์หรือไม่มีประโยชน์หรือไม่
รหัสมีประสิทธิภาพหรือไม่? สามารถเขียนใหม่อย่างง่ายดายเพื่อให้ทำงานได้อย่างมีประสิทธิภาพมากขึ้นหรือไม่?
รหัส เข้ากันได้ กับ TensorFlow เวอร์ชันก่อนหน้าหรือไม่
รหัสใหม่จะเพิ่ม การพึ่งพาใหม่ ในไลบรารีอื่นหรือไม่
ทดสอบและปรับปรุงความครอบคลุมการทดสอบ
การทดสอบหน่วยคุณภาพสูงเป็นรากฐานที่สำคัญของกระบวนการพัฒนา TensorFlow เพื่อจุดประสงค์นี้ เราใช้อิมเมจ Docker ฟังก์ชันการทดสอบได้รับการตั้งชื่ออย่างเหมาะสม และมีหน้าที่ตรวจสอบความถูกต้องของอัลกอริธึม ตลอดจนตัวเลือกต่างๆ ของโค้ด
คุณลักษณะใหม่ทั้งหมดและการแก้ไขข้อบกพร่อง ต้อง ครอบคลุมการทดสอบที่เพียงพอ นอกจากนี้เรายังยินดีร่วมสนับสนุนกรณีทดสอบใหม่หรือการปรับปรุงการทดสอบที่มีอยู่ หากคุณพบว่าการทดสอบที่มีอยู่ของเรายังไม่สมบูรณ์ แม้ว่าจะยังไม่ทำให้เกิดข้อบกพร่องก็ตาม โปรดยื่นปัญหาและหากเป็นไปได้ ให้ส่งคำขอดึง
สำหรับรายละเอียดเฉพาะของขั้นตอนการทดสอบในแต่ละโปรเจ็กต์ TensorFlow โปรดดูที่ไฟล์ README.md
และ CONTRIBUTING.md
ใน repo ของโปรเจ็กต์บน GitHub
ข้อกังวลเฉพาะใน การทดสอบที่เพียงพอ :
- ทุกฟังก์ชั่นสาธารณะและคลาส ได้รับการทดสอบหรือไม่?
- มีการทดสอบ ชุดพารามิเตอร์ที่สมเหตุสมผล ค่าของ พวกมัน ประเภทของค่า และชุดค่าผสมหรือไม่
- การทดสอบตรวจสอบว่า โค้ดนั้นถูกต้อง หรือไม่ และเป็น ไปตามที่เอกสารระบุว่า โค้ดมีไว้ทำหรือไม่
- หากการเปลี่ยนแปลงเป็นการแก้ไขข้อผิดพลาด จะรวม การทดสอบการไม่ถดถอย ด้วยหรือไม่
- การทดสอบ ผ่านการสร้างการรวมอย่างต่อเนื่อง หรือไม่
- การทดสอบ ครอบคลุมทุกบรรทัดของรหัสหรือไม่ หากไม่เป็นเช่นนั้น ข้อยกเว้นจะสมเหตุสมผลและชัดเจนหรือไม่
หากคุณพบปัญหาใดๆ โปรดพิจารณาช่วยให้ผู้ร่วมให้ข้อมูลเข้าใจปัญหาเหล่านั้นและแก้ไขปัญหาเหล่านั้น
ปรับปรุงข้อความแสดงข้อผิดพลาดหรือบันทึก
เรายินดีรับความช่วยเหลือที่ช่วยปรับปรุงข้อความแสดงข้อผิดพลาดและการบันทึก
เวิร์กโฟลว์การบริจาค
การสนับสนุนโค้ด—การแก้ไขข้อบกพร่อง การพัฒนาใหม่ การทดสอบการปรับปรุง—ทั้งหมดเป็นไปตามเวิร์กโฟลว์ที่เน้น GitHub หากต้องการเข้าร่วมในการพัฒนา TensorFlow ให้ตั้งค่าบัญชี GitHub แล้ว:
แยก repo ที่คุณวางแผนจะใช้งาน ไปที่หน้า repo ของโครงการและใช้ปุ่ม Fork นี้จะสร้างสำเนาของ repo ภายใต้ชื่อผู้ใช้ของคุณ (สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับวิธีการแยกที่เก็บ ดู คู่มือ นี้ )
โคลน repo ลงในระบบในพื้นที่ของคุณ
$ git clone git@github.com:your-user-name/project-name.git
สร้างสาขาใหม่เพื่อเก็บงานของคุณ
$ git checkout -b new-branch-name
ทำงานกับรหัสใหม่ของคุณ เขียนและเรียกใช้การทดสอบ
ยอมรับการเปลี่ยนแปลงของคุณ
$ git add -A
$ git commit -m "commit message here"
ผลักดันการเปลี่ยนแปลงของคุณไปยัง repo GitHub ของคุณ
$ git push origin branch-name
เปิด คำขอดึง (PR) ไปที่ repo โครงการดั้งเดิมบน GitHub จะมีข้อความเกี่ยวกับสาขาที่เพิ่งพุชของคุณ ถามว่าคุณต้องการเปิดคำขอดึงหรือไม่ ปฏิบัติตามคำแนะนำ เปรียบเทียบระหว่างที่เก็บ และส่ง PR การดำเนินการนี้จะส่งอีเมลไปยังผู้มอบอำนาจ คุณอาจต้องการพิจารณาส่งอีเมลไปยังรายชื่อผู้รับจดหมายเพื่อให้มองเห็นได้ชัดเจนยิ่งขึ้น (สำหรับรายละเอียดเพิ่มเติม โปรดดู คู่มือ GitHub เกี่ยวกับ PRs
ผู้ดูแลและผู้มีส่วนร่วมอื่นๆ จะ ตรวจสอบการประชาสัมพันธ์ของคุณ โปรดเข้าร่วมในการสนทนา และพยายาม ทำการเปลี่ยนแปลงที่ร้องขอ เมื่อ PR ได้รับการอนุมัติ รหัสจะถูกรวมเข้าด้วยกัน
ก่อนดำเนินการช่วยเหลือครั้งต่อไป ตรวจสอบให้แน่ใจว่าที่เก็บในเครื่องของคุณเป็นปัจจุบัน
ตั้งค่ารีโมตต้นน้ำ (คุณต้องทำสิ่งนี้เพียงครั้งเดียวต่อโปรเจ็กต์ ไม่ใช่ทุกครั้ง)
$ git remote add upstream git@github.com:tensorflow/project-repo-name
เปลี่ยนไปใช้สาขาหลักในพื้นที่
$ git checkout master
ดึงการเปลี่ยนแปลงจากต้นน้ำลงมา
$ git pull upstream master
ผลักดันการเปลี่ยนแปลงไปยังบัญชี GitHub ของคุณ (ไม่บังคับ แต่เป็นแนวปฏิบัติที่ดี)
$ git push origin master
สร้างสาขาใหม่หากคุณกำลังเริ่มงานใหม่
$ git checkout -b branch-name
ทรัพยากร git
และ GitHub เพิ่มเติม:
รายการตรวจสอบผู้ร่วมให้ข้อมูล
- อ่าน หลักเกณฑ์การบริจาค
- อ่าน จรรยาบรรณ
- ตรวจสอบให้แน่ใจว่าคุณได้ลงนามใน Contributor License Agreement (CLA) แล้ว
- ตรวจสอบว่าการเปลี่ยนแปลงของคุณสอดคล้องกับ หลักเกณฑ์ หรือไม่
- ตรวจสอบว่าการเปลี่ยนแปลงของคุณสอดคล้องกับ รูปแบบการเข้ารหัส TensorFlow หรือไม่
- เรียกใช้การทดสอบหน่วย