ไม่ว่าคุณจะเพิ่มฟังก์ชันการสูญเสีย ปรับปรุงความครอบคลุมของการทดสอบ หรือเขียน RFC สำหรับการเปลี่ยนแปลงการออกแบบที่สำคัญ คู่มือผู้สนับสนุนส่วนนี้จะช่วยคุณในการเริ่มต้น ขอบคุณสำหรับการทำงานและความสนใจในการปรับปรุง TensorFlow
ก่อนที่คุณจะเริ่มต้น
ก่อนที่คุณจะสนับสนุนซอร์สโค้ดให้กับโปรเจ็กต์ TensorFlow โปรดตรวจสอบไฟล์ CONTRIBUTING.md
ในที่เก็บ GitHub ของโปรเจ็กต์ ตัวอย่างเช่น ดูไฟล์ CONTRIBUTING.md ใน repo TensorFlow หลัก ผู้ร่วมเขียนโค้ดทุกคนจะต้องลงนามในข้อ ตกลงใบอนุญาตผู้ร่วมให้ข้อมูล (CLA)
เพื่อหลีกเลี่ยงงานที่ซ้ำกัน โปรดตรวจสอบ RFC ปัจจุบัน หรือ ที่เสนอ และติดต่อนักพัฒนาในฟอรัม TensorFlow ( developers@tensorflow.org ) ก่อนที่คุณจะเริ่มทำงานกับฟีเจอร์ที่ไม่สำคัญ เราค่อนข้างเลือกสรรเมื่อตัดสินใจเพิ่มฟังก์ชันการทำงานใหม่ และวิธีที่ดีที่สุดในการสนับสนุนและช่วยเหลือโครงการคือการทำงานในประเด็นที่ทราบ
ปัญหาสำหรับผู้มีส่วนร่วมรายใหม่
ผู้ร่วมให้ข้อมูลรายใหม่ควรมองหาแท็กต่อไปนี้เมื่อค้นหาการสนับสนุนครั้งแรกในฐานโค้ด TensorFlow เราขอแนะนำอย่างยิ่งให้ผู้มีส่วนร่วมรายใหม่จัดการโครงการ "ประเด็นแรกที่ดี" และ "ยินดีต้อนรับการมีส่วนร่วม" ก่อน สิ่งนี้จะช่วยให้ผู้มีส่วนร่วมคุ้นเคยกับเวิร์กโฟลว์การสนับสนุน และเพื่อให้นักพัฒนาหลักทำความคุ้นเคยกับผู้ร่วมให้ข้อมูล
หากคุณสนใจที่จะสรรหาทีมเพื่อช่วยจัดการกับปัญหาใหญ่หรือฟีเจอร์ใหม่ โปรดส่งอีเมลไป ที่กลุ่มนักพัฒนา@ และตรวจสอบรายการ RFC ปัจจุบันของเรา
ตรวจสอบรหัส
คุณสมบัติใหม่ การแก้ไขข้อบกพร่อง และการเปลี่ยนแปลงอื่น ๆ ที่เกิดขึ้นกับฐานโค้ดอาจมีการตรวจสอบโค้ด
การตรวจสอบโค้ดที่สนับสนุนโปรเจ็กต์เนื่องจากคำขอดึงเป็นองค์ประกอบสำคัญของการพัฒนา TensorFlow เราขอแนะนำให้ทุกคนเริ่มตรวจสอบโค้ดที่นักพัฒนารายอื่นส่งมา โดยเฉพาะอย่างยิ่งหากฟีเจอร์นี้เป็นสิ่งที่คุณน่าจะใช้
ต่อไปนี้เป็นคำถามบางส่วนที่ควรคำนึงถึงในระหว่างกระบวนการตรวจสอบโค้ด:
- เราต้องการสิ่งนี้ใน TensorFlow หรือไม่? มีแนวโน้มว่าจะได้ใช้หรือเปล่า? คุณในฐานะผู้ใช้ TensorFlow ชอบการเปลี่ยนแปลงและตั้งใจที่จะใช้มันหรือไม่ การเปลี่ยนแปลงนี้อยู่ในขอบเขตของ TensorFlow หรือไม่ ค่าใช้จ่ายในการบำรุงรักษาฟีเจอร์ใหม่จะคุ้มค่ากับผลประโยชน์หรือไม่
- รหัสสอดคล้องกับ TensorFlow API หรือไม่ ฟังก์ชั่นสาธารณะ คลาส และพารามิเตอร์ได้รับการตั้งชื่ออย่างดีและได้รับการออกแบบตามสัญชาตญาณหรือไม่
มีเอกสารประกอบด้วยหรือเปล่า? ฟังก์ชันสาธารณะ คลาส พารามิเตอร์ ประเภทการส่งคืน และแอตทริบิวต์ที่จัดเก็บทั้งหมดได้รับการตั้งชื่อตามแบบแผนของ TensorFlow และมีการบันทึกไว้อย่างชัดเจนหรือไม่ ฟังก์ชันใหม่มีการอธิบายไว้ในเอกสารของ TensorFlow และมีภาพประกอบพร้อมตัวอย่างทุกครั้งที่เป็นไปได้หรือไม่ เอกสารแสดงผลอย่างถูกต้องหรือไม่?
รหัสนี้มนุษย์สามารถอ่านได้หรือไม่? มีความซ้ำซ้อนต่ำหรือไม่? ควรปรับปรุงชื่อตัวแปรเพื่อความชัดเจนหรือสม่ำเสมอหรือไม่ ควรเพิ่มความคิดเห็นหรือไม่? ความคิดเห็นใด ๆ ควรถูกลบออกเนื่องจากไม่เป็นประโยชน์หรือไม่มีประโยชน์หรือไม่?
รหัสมีประสิทธิภาพหรือไม่? มันสามารถเขียนใหม่ได้อย่างง่ายดายเพื่อให้ทำงานได้อย่างมีประสิทธิภาพมากขึ้นหรือไม่?
โค้ด ย้อนหลังเข้ากันได้ กับ TensorFlow เวอร์ชันก่อนหน้าหรือไม่
รหัสใหม่จะเพิ่ม การขึ้นต่อกันใหม่ กับไลบรารีอื่นหรือไม่
ทดสอบและปรับปรุงความครอบคลุมของการทดสอบ
การทดสอบหน่วยคุณภาพสูงถือเป็นรากฐานสำคัญของกระบวนการพัฒนา TensorFlow เพื่อจุดประสงค์นี้ เราใช้อิมเมจ Docker ฟังก์ชันการทดสอบได้รับการตั้งชื่ออย่างเหมาะสม และมีหน้าที่ตรวจสอบความถูกต้องของอัลกอริทึมตลอดจนตัวเลือกต่างๆ ของโค้ด
คุณสมบัติใหม่และการแก้ไขข้อบกพร่องทั้งหมด ต้อง มีการทดสอบครอบคลุมเพียงพอ นอกจากนี้เรายังยินดีรับการมีส่วนร่วมของกรณีทดสอบใหม่หรือการปรับปรุงการทดสอบที่มีอยู่ หากคุณพบว่าการทดสอบที่มีอยู่ของเรายังไม่เสร็จสมบูรณ์ แม้ว่าจะยังไม่ก่อให้เกิดข้อบกพร่องก็ตาม โปรดแจ้งปัญหาและหากเป็นไปได้ ให้ยื่นคำขอดึงข้อมูล
สำหรับรายละเอียดเฉพาะของขั้นตอนการทดสอบในแต่ละโปรเจ็กต์ TensorFlow โปรดดูไฟล์ README.md
และ CONTRIBUTING.md
ในที่เก็บโปรเจ็กต์บน 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 ของคุณ โปรดเข้าร่วมการสนทนา และพยายาม ทำการเปลี่ยนแปลงตามที่ร้องขอ เมื่อ 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 เพิ่มเติม:
รายการตรวจสอบผู้ร่วมให้ข้อมูล
- อ่าน แนวทางการมีส่วนร่วม
- อ่าน หลักจรรยาบรรณ
- ตรวจสอบให้แน่ใจว่าคุณได้ลงนามใน ข้อตกลงใบอนุญาตผู้ร่วมให้ข้อมูล (CLA)
- ตรวจสอบว่าการเปลี่ยนแปลงของคุณสอดคล้องกับ หลักเกณฑ์ หรือไม่
- ตรวจสอบว่าการเปลี่ยนแปลงของคุณสอดคล้องกับ รูปแบบการเขียนโค้ดของ TensorFlow หรือไม่
- รันการทดสอบหน่วย