เปลี่ยนโปรเจค Python ส่วนตัวให้กลายเป็นไลบรารี่


28

ฉันเป็นนักวิชาการมากกว่าโปรแกรมเมอร์และฉันมีประสบการณ์หลายปีในการเขียนโปรแกรม Python สำหรับใช้เองเพื่อสนับสนุนงานวิจัยของฉัน โปรเจ็กต์ล่าสุดของฉันน่าจะมีประโยชน์กับคนอื่น ๆ เช่นฉันและฉันกำลังคิดว่าจะปล่อยมันเป็นไลบรารี่แบบโอเพ่นซอร์ส

อย่างไรก็ตามดูเหมือนว่ามีอุปสรรคบางอย่างที่จะข้ามไปจากโครงการส่วนตัวที่ใช้งานได้ไปจนถึงห้องสมุดที่สามารถติดตั้งและใช้งานได้โดยไม่เจ็บปวด คำถามนี้เกี่ยวกับขั้นตอนแรกที่ฉันควรทำเพื่อเริ่มทำงานสู่รุ่นสาธารณะ

ขณะนี้ฉันมีที่เก็บคอมไพล์เดียวซึ่งมีรหัสของฉันที่ใช้ไลบรารีรวมทั้งไลบรารีเองและฉันใช้ git เป็นปุ่มเลิกทำฉุกเฉินในกรณีที่มีอะไรผิดพลาด ทั้งหมดนี้ใช้งานได้ดีสำหรับผู้ใช้คนเดียว แต่เห็นได้ชัดว่าไม่เหมาะสมถ้าฉันต้องการปล่อย ที่ฉันต้องการจะจบคือห้องสมุดของฉันอยู่ในที่เก็บแยกต่างหากและสามารถติดตั้งโดยผู้อื่นโดยใช้pipและมี API ที่มั่นคง

การเรียนรู้ที่จะใช้ setuptools เป็นต้นอาจไม่ยากเมื่อฉันถึงจุดที่ต้องการเผยแพร่มัน - ปัญหาของฉันคือการรู้ว่าฉันควรทำงานอย่างไรเพื่อที่จะไปถึงจุดนั้น

ดังนั้นคำถามของฉันคือขั้นตอนแรกที่ควรทำเพื่อเริ่มเตรียมโครงการห้องสมุด Python สำหรับการบริโภคสาธารณะคืออะไร ฉันจะจัดระเบียบโครงสร้างไดเรกทอรีของฉัน, git repository และอื่น ๆ เพื่อที่จะเริ่มทำงานในที่สาธารณะต่อการเปิดตัวไลบรารี่?

โดยทั่วไปแล้วจะมีประโยชน์มากหากมีทรัพยากรที่ทราบว่ามีประโยชน์เมื่อพยายามทำสิ่งนี้เป็นครั้งแรก ตัวชี้ไปยังแนวปฏิบัติที่ดีที่สุดและข้อผิดพลาดที่ควรหลีกเลี่ยง ฯลฯ จะเป็นประโยชน์อย่างมาก

การชี้แจงบางอย่าง:คำตอบปัจจุบันกำลังตอบคำถามตามแนวของ "ฉันจะทำให้ห้องสมุด Python ของฉันเป็นที่ดีสำหรับผู้อื่นในการใช้งานได้อย่างไร" สิ่งนี้มีประโยชน์ แต่แตกต่างจากคำถามที่ฉันตั้งใจจะถาม

ขณะนี้ฉันกำลังเริ่มต้นการเดินทางที่ยาวนานเพื่อปล่อยโครงการของฉัน แกนกลางของการทำงานของฉัน (และทำงานได้ดีจริงๆ) แต่ฉันรู้สึกท่วมท้นจากจำนวนงานที่ทำอยู่ข้างหน้าของฉันและฉันกำลังมองหาคำแนะนำเกี่ยวกับวิธีนำทางกระบวนการ ตัวอย่างเช่น:

  • ขณะนี้รหัสห้องสมุดของฉันอยู่คู่กับรหัสเฉพาะโดเมนของฉันที่ใช้งาน มันอาศัยอยู่ในโฟลเดอร์ย่อยและแชร์ที่เก็บ git เดียวกัน ในที่สุดมันจะต้องถูกทำให้เป็นไลบรารีแบบสแตนด์อะโลนและใส่ลงในที่เก็บของมันเอง แต่ฉันจะผัดวันประกันพรุ่งอย่างนี้เพราะฉันไม่รู้ว่าจะทำอย่างไร (ทั้งวิธีการติดตั้งไลบรารีใน 'โหมดการพัฒนา' เพื่อให้ฉันยังคงสามารถแก้ไขได้หรือวิธีการทำให้ repos git ทั้งสองซิงค์กัน)

  • เอกสารของฉันสั้นเพราะฉันรู้ว่าในที่สุดฉันจะต้องใช้สฟิงซ์หรือเครื่องมืออื่น ๆ แต่เครื่องมือเหล่านี้ดูเหมือนจะไม่ง่ายที่จะเรียนรู้ดังนั้นสิ่งนี้จึงกลายเป็นโครงการย่อยที่สำคัญและฉันก็ทำการถอดออก

  • ในบางจุดฉันจำเป็นต้องเรียนรู้การใช้ setuptools หรือเครื่องมืออื่น ๆ เพื่อทำแพ็คเกจและติดตามการพึ่งพาซึ่งค่อนข้างซับซ้อน ฉันไม่แน่ใจว่าฉันต้องทำสิ่งนี้ตอนนี้หรือไม่และเอกสารประกอบนั้นเป็นเขาวงกตที่แน่นอนสำหรับผู้ใช้ใหม่ดังนั้นฉันจึงตัดสินใจทำต่อไปในภายหลัง

  • ฉันไม่เคยทำการทดสอบอย่างเป็นระบบ แต่ฉันจะทำโครงการนี้อย่างแน่นอนดังนั้นฉันจึงต้อง (i) เรียนรู้มากพอเกี่ยวกับการทดสอบเพื่อรู้ว่าวิธีการใดที่เหมาะกับโครงการของฉัน (ii) เรียนรู้ว่าเครื่องมือใดบ้างที่ใช้ได้สำหรับวิธีการที่ฉันเลือก (iii) เรียนรู้การใช้เครื่องมือที่ฉันเลือก (iv) ติดตั้งชุดทดสอบ ฯลฯ สำหรับโครงการของฉัน นี่คือโครงการในตัวเอง

  • อาจมีสิ่งอื่นที่ฉันต้องทำเช่นกัน ตัวอย่างเช่น jonrsharpe โพสต์ลิงค์ที่มีประโยชน์ซึ่งกล่าวถึง git-flow, tox, TravisCI, virtualenv และ CookieCutter ซึ่งไม่เคยได้ยินมาก่อน (โพสต์นั้นมาจากปี 2013 ดังนั้นฉันต้องทำงานเพื่อหาว่ายังคงเป็นปัจจุบันมากแค่ไหน)

เมื่อคุณรวมสิ่งนี้เข้าด้วยกันมันเป็นงานจำนวนมหาศาล แต่ฉันแน่ใจว่าฉันสามารถทำทุกอย่างได้ถ้าฉันเสียบปลั๊กต่อไปและฉันก็ไม่รีบ ปัญหาของฉันคือการรู้วิธีที่จะทำลายมันลงในขั้นตอนที่จัดการได้ซึ่งสามารถทำได้ทีละครั้ง

พูดอีกอย่างคือฉันกำลังถามว่าขั้นตอนที่สำคัญที่สุดที่ฉันสามารถทำได้คืออะไรเพื่อที่จะเข้าถึงผลิตภัณฑ์ที่สามารถนำกลับมาใช้ใหม่ได้ในที่สุด หากฉันมีวันหยุดสุดสัปดาห์ฟรีสิ่งเหล่านี้ฉันควรมุ่งเน้นที่ใด สามารถแยกจากคนอื่น (ถ้ามี) อย่างน้อยฉันจึงสามารถทำขั้นตอนเดียวได้โดยไม่จำเป็นต้องทำทั้งหมด อะไรคือวิธีที่มีประสิทธิภาพที่สุดในการเรียนรู้สิ่งเหล่านี้เพื่อที่ฉันจะยังมีเวลาที่จะมุ่งเน้นไปที่โครงการของตัวเอง? (จำไว้ว่าทั้งหมดนี้เป็นโครงการงานอดิเรกไม่ใช่งานของฉัน) มีสิ่งใดบ้างที่ฉันไม่ต้องการทำจริง ๆช่วยประหยัดเวลาและความพยายามเป็นจำนวนมากหรือไม่?

คำตอบทั้งหมดเป็นที่ชื่นชมอย่างมาก แต่ฉันจะยินดีต้อนรับโดยเฉพาะคำตอบที่มุ่งเน้นด้านการบริหารจัดการโครงการเหล่านี้มีการอ้างอิงที่เฉพาะเจาะจงกับการพัฒนางูหลามที่ทันสมัย



10
วิธีที่ดีที่สุดในการตรวจสอบว่าห้องสมุดพร้อมที่จะปล่อย "สู่ป่า" หรือไม่ก็คือการขอให้เพื่อนนักวิจัยหรือนักเรียนพยายามใช้และเขียนความยากลำบากทั้งหมดที่พวกเขาพบ หากพวกเขาสามารถใช้งานได้โดยไม่ต้องโทรหาคุณเพื่อขอความช่วยเหลืออย่างต่อเนื่องห้องสมุดจะอยู่ในรูปแบบที่ผู้อื่นสามารถใช้งานได้
Bart van Ingen Schenau

@Jonrsharpe ขอบคุณมีข้อมูลที่เป็นประโยชน์มากมายที่นั่น
นาธาเนียล

@BartvanIngenSchenau ขอบคุณฉันจะจำไว้แน่นอนเมื่อฉันใกล้ถึงขั้นตอนนั้น ตอนนี้ฉันเป็นอย่างมากในขั้นตอน "ขั้นแรก" ของการทำสิ่งที่ใช้งานได้ แต่อยู่ไกลเกินกว่าจะพร้อมปล่อยให้เป็นอิสระและสงสัยว่าฉันควรทำสิ่งต่าง ๆ ในตอนนี้อย่างไรเพื่อให้แน่ใจว่ามันจะสามารถเปิดตัวได้ในอนาคต
นาธาเนียล

3
คุณควรทำ repo คอมไพล์แบบสแตนด์อะโลนสำหรับห้องสมุดแล้วเป็นลูกค้ารายแรกของคุณ ใช้ไลบรารีในโครงการของคุณเป็นไลบรารีที่เหมาะสมเท่านั้นไม่เชื่อมโยงไปยังแหล่งที่มา
Ian MacDonald

คำตอบ:


22

การเพิ่ม setup.py ในขณะที่จำเป็นไม่ใช่ขั้นตอนที่สำคัญที่สุดหากคุณต้องการให้ห้องสมุดของคุณใช้งาน ที่สำคัญกว่านั้นคือการเพิ่มเอกสารและโฆษณาห้องสมุดของคุณ เนื่องจากประเด็นที่สองขึ้นอยู่กับห้องสมุดเป็นอย่างมากขอให้ฉันมุ่งเน้นไปที่ด้านเอกสาร

  1. คุณรู้ทุกอย่างเกี่ยวกับห้องสมุดของคุณ และนี่คือปัญหา คุณทราบวิธีการติดตั้งและวิธีใช้งานแล้วหลายสิ่งอาจดูเป็นธรรมชาติหรือชัดเจนสำหรับคุณ น่าเสียดายที่สิ่งเดียวกันอาจไม่ชัดเจนไม่สามารถเข้าใจได้ง่ายสำหรับผู้ใช้ พยายามมองดูห้องสมุดของคุณราวกับว่าคุณไม่รู้อะไรเลยและที่สำคัญกว่านั้นขอให้คนอื่นใช้มันและพยายามชี้ปัญหาทั้งหมดที่พวกเขามี

  2. อธิบายเป็นภาษาอังกฤษธรรมดาห้องสมุดของคุณเกี่ยวกับอะไร ห้องสมุดมากเกินไปคิดว่าทุกคนรู้เกี่ยวกับพวกเขา เมื่อไม่เป็นเช่นนั้นอาจเป็นเรื่องยากที่จะเข้าใจว่าห้องสมุดมีวัตถุประสงค์อะไร

  3. เขียนเอกสารทางเทคนิคโดยละเอียด แต่อย่าลืมรหัสย่อ ๆ ซึ่งแสดงวิธีทำงานบางอย่างกับห้องสมุดของคุณ นักพัฒนาส่วนใหญ่กำลังรีบและหากพวกเขาต้องใช้เวลาหลายชั่วโมงในการพยายามทำความเข้าใจวิธีการทำสิ่งพื้นฐานพวกเขาอาจเปลี่ยนไปใช้ห้องสมุดอื่น

  4. รวมถึงข้อมูลการติดต่อของคุณ หากห้องสมุดของคุณประสบความสำเร็จ (และประสบการณ์ของฉันเองก็แสดงให้เห็นว่านี่เป็นกรณีสำหรับผู้ที่ไม่รู้จักเช่นกัน) ผู้คนจะประสบกับความยุ่งยากเช่นข้อบกพร่องหรือความยากลำบากในการทำความเข้าใจหรือการใช้บางส่วน บ่อยครั้งที่มีประโยชน์ในการรับข้อเสนอแนะเพื่อปรับปรุงห้องสมุดของคุณ: สำหรับทุกคนที่รายงานปัญหาอาจมีหลายร้อยคนที่พบปัญหาเมื่อต้องการจะเปลี่ยนเป็นห้องสมุดอื่น

นอกจากนั้น:

  1. ทำให้ชัดเจนถ้าไลบรารีของคุณทำงานกับ Python 2 หรือ 3 หรือทั้งสองอย่าง

  2. ถ้าไลบรารีไม่ทำงานบน Windows ให้พูดเช่นนั้น

  3. ให้แน่ใจว่าคุณใช้การประชุมอย่างเป็นทางการ (ใช้ pep8 เพื่อตรวจสอบ) ถ้าไม่อธิบายให้ชัดเจนหรือแก้ไข

  4. ดูแลการจัดการเคสขอบ เมื่อไลบรารีของคุณถูกเรียกใช้ด้วยชนิดที่ไม่ถูกต้องหรือมีค่าที่ไม่ได้รับการสนับสนุนมันควรจะพูดว่าในภาษาอังกฤษล้วนสิ่งที่ผิด สิ่งที่ไม่ควรทำคือเพิ่มข้อยกเว้นที่คลุมเครือถึงสิบระดับลงในสแต็กและให้ผู้ใช้ทราบว่าเกิดข้อผิดพลาดอะไร


ขอบคุณฉันเห็นด้วยอย่างสมบูรณ์ว่าคุณภาพของเอกสารสร้างหรือทำลายโครงการ (โดยปกติสิ่งที่สองที่ฉันตรวจสอบเมื่อตัดสินใจว่าจะใช้โครงการหลังจากวันที่กระทำครั้งสุดท้าย) ในระดับทางเทคนิคที่มากขึ้นมีเครื่องมือระบบนิเวศขนาดใหญ่ที่สับสนสำหรับการจัดการเอกสารของรหัสไพ ธ อน ฉันจะบอกได้อย่างไรว่าฉันควรลงทุนกับการเรียนรู้โครงการใด
นาธาเนียล

3
@ นาธาเนียลสฟิงซ์ค่อนข้างยุ่งยากในการตั้งค่า แต่เป็นมาตรฐานแบบพฤตินัย คุณสามารถใช้ readthedocs.org เพื่อโฮสต์เอกสารสฟิงซ์บนเว็บ สฟิงซ์สามารถใช้เอกสารจากฟังก์ชั่นและโมดูลในห้องสมุดของคุณ หรือเพียงแค่พิมพ์เอกสารด้วยตัวเองในไฟล์ readme แต่นั่นก็ทำให้โครงการใหญ่ขึ้นอย่างไม่น่าเชื่อ โครงการ Python ที่ฉันดูแลใช้หน้า Github สำหรับเอกสารสฟิงซ์ซึ่งหมายความว่าฉันต้องยอมรับไฟล์ HTML แม้ว่าฉันวางแผนที่จะย้ายออกไป
amon

5
How can I tell which one I should invest in learning for my project?- คุณทำไม่ได้ คุณใช้เวลาเพียงเล็กน้อยในการเลือกอันที่สมเหตุสมผลและหมุนไปมา ในฐานะที่เป็น dev จาวาสคริปต์ที่คุณมี 40 ตัวเลือกสำหรับการตัดสินใจทุกครั้งฉันสัญญานี้คือการตัดสินใจที่ถูกต้อง :)
aaaaaa

2

การใช้คำแนะนำที่สำคัญน้อยกว่าผู้ใหญ่ที่ห้องสมุดไม่กี่ปีที่ผ่านมาคือเมื่อคุณเลือกเครื่องมือการปรับใช้ของคุณทำสิ่งต่อไปนี้: ห้องสมุดของคุณทำสิ่งที่มีประโยชน์จริง ๆ ที่คุณสามารถสร้างชุมชนได้หรือไม่?

ระบุการพึ่งพาไลบรารีของคุณ

พยายามปรับใช้ในสภาพแวดล้อมที่สะอาดไม่ว่าจะเป็นคอนเทนเนอร์ใบปะหน้าหรือ VM ฉันพิจารณาขั้นตอนนี้สำคัญมากเพราะบ่อยครั้งมีบางสิ่งที่ไม่เหมือนใครเกี่ยวกับสภาพแวดล้อมส่วนบุคคลที่ทำให้เกิดปัญหา

พิจารณาว่าใครจะเป็นผู้ดูแลห้องสมุดในอนาคตไม่มีอะไรน่าผิดหวังไปกว่าการเจอห้องสมุดที่เป็นโครงการสัตว์เลี้ยงของใครบางคนเป็นเวลาสามหรือสี่ปีแล้วไม่ได้รับการปรับปรุงที่จำเป็นเพื่อให้เป็นปัจจุบัน

พิจารณาว่าคุณหรือทีมของคุณต้องการให้คำมั่นที่จะให้ห้องสมุดทดสอบและจัดทำเอกสาร (การทดสอบหน่วยและท่อ CI เริ่มเป็นส่วนหนึ่งของสมการที่นี่หรือไม่)


2

บางทีคุณอาจพบโครงการ OSS ที่พัฒนาแล้วในสาขาของคุณและให้รหัสของคุณกับโครงการนั้น อาจมีข้อได้เปรียบบางประการเช่น:

  • คุณสามารถเพิ่มผลงานของคุณให้สูงสุด อันที่จริงโครงการ OSS "อดิเรก" จำนวนมากอาจมีค่า แต่อาจใช้เพียงเล็กน้อยโดยชุมชน (cf. @ReaddyEddy answer) เป็นความพยายามอย่างมากที่จะทำให้โครงการเริ่มต้นในขั้นต้นจากนั้นทำการบำรุงรักษาโฆษณาให้ตัวอย่างและเอกสารประกอบที่เหมาะสมเป็นต้น
  • ปัญหาทางเทคนิคมากมายที่คุณกล่าวถึงจะได้รับการแก้ไขในโครงการที่พัฒนาแล้ว
  • หากห้องสมุดของคุณเพิ่มคุณค่าให้กับโครงการ OSS ผู้มีส่วนร่วมจะช่วยให้คุณนำรหัสของคุณไปสู่มาตรฐานของโครงการ ดังนั้นคุณสามารถประหยัดความพยายามและได้รับประสบการณ์ นอกจากนี้คุณยังจะได้รับคำตอบเฉพาะเกี่ยวกับสฟิงซ์ TravisCI, CookieCutter และประเด็นทางเทคนิคอื่น ๆ

หากมีโครงการ OSS ที่เกี่ยวข้องที่คุณชอบและอาจจะใช้ทำไมไม่เปิดปัญหาหรือขอดึงหรือติดต่อกับผู้ดูแล? (วิธีเริ่มต้นที่ดีอาจเป็นการแก้ไขปัญหาที่มีอยู่)


ขอบคุณมันเป็นความคิดที่ดี อย่างไรก็ตามในกรณีของฉันไม่มีแพคเกจที่มีอยู่ซึ่งรหัสของฉันสามารถรวม มีโครงการ OSS ที่จัดตั้งขึ้นพร้อมกับฟังก์ชั่นที่คล้ายกัน แต่มันสร้างขึ้นจากเทคโนโลยีที่แตกต่างกันและใช้อัลกอริทึมที่แตกต่างกันเป็นหลัก (เป็นผลให้บางสิ่งเป็นไปไม่ได้โดยพื้นฐานซึ่งกลายเป็นเรื่องง่ายในเวอร์ชันของฉัน) ฉันแน่ใจว่ามีผู้ชมเพียงเล็กน้อย แต่อาจอุทิศรหัสของฉัน แต่เพราะมันเป็นวิธีการใหม่ที่ฉันไม่คิดว่าจะมีวิธีใด พร้อมใช้งานนอกเหนือจากการพัฒนาเป็นโครงการใหม่
นาธาเนียล

2

เป็นปี 2019 ฉันขอแนะนำให้เริ่มด้วยเครื่องมือที่ทันสมัย คุณไม่จำเป็นต้องเป็นsetup.pyสิ่งที่ผู้คนในชุมชน Python ต้องการกำจัดและฉันเชื่อว่าในที่สุดพวกเขาก็จะ

ลองบทกวีคุณจะไม่เสียใจ


1
ขอบคุณสำหรับคำตอบ ฉันจะดูบทกวี ผมอยากจะบอกว่าที่ใน 2019 มันน่าขนลุกเรื่องยากสำหรับผู้มาใหม่ที่จะทำงานออกสิ่งที่เครื่องมือที่ทันสมัยที่สุดเป็นจริง หากคุณไม่ทราบว่ามันเป็นเรื่องยากมากที่จะบอกว่าเครื่องมือใดเป็นเครื่องมือมาตรฐานที่ทุกคนใช้และเป็นหนึ่งในโครงการ rans และโครงการทดลองมากมาย เอกสารอย่างเป็นทางการไม่ได้ติดตามสิ่งเหล่านี้และการพัฒนาดำเนินไปอย่างรวดเร็วจนเนื้อหาเบื้องต้นใด ๆ ที่ฉันพบรับประกันว่าล้าสมัย
นาธาเนียล

ทั้งหมดนี้คือการกล่าวขอบคุณสำหรับการบอกฉันว่าบทกวีเป็นหนึ่งที่ฉันควรจะดูมากกว่าสามหรือสี่โครงการที่ใช้งานอื่น ๆ ที่ฉันพบว่าดูเหมือนจะทำในสิ่งเดียวกัน นี่คือข้อมูลที่ฉันหวังว่าจะได้จากคำถามนี้
นาธาเนียล

@Nathaniel Python "Packaging" กำลังเปลี่ยนแปลงอย่างรวดเร็ว (และนั่นคือสาเหตุที่มีหลายวิธีในการทำเช่นนี้และมันยากที่จะหาสิ่งที่ดีที่สุด) แต่ด้วย PEP 517, 518 ที่ใช้งานโดยเครื่องมือมากมาย (เช่น Poetry) ในที่สุดเราก็มีบางอย่าง ไม่น่ากลัว โปรดทราบว่าบทกวีไม่จำเป็นต้องเป็นเครื่องมือที่ "ดีที่สุด" แต่อย่างน้อยมันก็เป็นเครื่องมือที่ดีที่สุด ลองดูที่testandcode.com/52คุณจะได้รับแนวคิดที่ดีเกี่ยวกับหัวข้อนี้
laike9m

ขอบคุณที่เป็นประโยชน์มากฉันฟังเลย บางทีทั้งหมดนี้หมายความว่าฉันควรเตรียมบรรจุภัณฑ์ไว้ก่อนแล้วจดจ่อกับประเด็นอื่น ๆ (เช่นเครื่องมือการเรียนรู้สำหรับการจัดทำเอกสารและการทดสอบ) เพียงเพราะอาจมีระบบบรรจุภัณฑ์ Python ที่มีเสถียรภาพมากขึ้นในหกเดือนหรือมากกว่านั้น
นาธาเนียล

2

นี่เป็นคำถามที่ซับซ้อนที่คุณจะถามและผมเห็นด้วยคำตอบของ Arseni เอกสารที่ดีเป็นสิ่งสำคัญมาก หากฉันไม่ประสบความสำเร็จในการทำให้ห้องสมุดของคุณดำเนินไปด้วยขั้นตอนง่ายๆไม่กี่ขั้นตอนฉันจะทิ้งมันไว้ที่นั่น

บางสิ่งที่คุณต้องพิจารณาอย่างแน่นอน

  • คิดเกี่ยวกับวิธีที่คุณจะรุ่นห้องสมุดของคุณ คุณต้องการมีความเข้ากันได้ย้อนหลังในบางระดับและแก้ไขข้อบกพร่องตามเส้นทางเช่นกัน อ่านเกี่ยวกับการกำหนดเวอร์ชันความหมาย
  • คุณกำลังใช้คอมไพล์ด้วยวิธีเชิงเส้นตรง (เพื่อเลิกทำ) คุณคุ้นเคยกับการแตกแขนงในคอมไพล์หรือไม่ มันไม่ยากจริง ๆ และทำให้ชีวิตง่ายขึ้น เมื่อคุณได้จับกับกิ่งไม้ ปรับโมเดลการแยกสาขาสำหรับที่เก็บของคุณ เลือกชิ้นส่วนของรุ่นการแยกสาขาที่คุณเห็นว่าเกี่ยวข้อง เปรียบเทียบสิ่งนี้กับสาขาจากที่เก็บที่คุณใช้
  • การออกใบอนุญาต: คุณควรให้ใบอนุญาตสำหรับห้องสมุดของคุณ ฉันไม่มีผู้เชี่ยวชาญด้านกฎหมายในเรื่องนี้ดังนั้นฉันจึงสามารถแบ่งปันลิงก์ไปยังการเปรียบเทียบนี้ระหว่างสิทธิ์ใช้งานทั่วไปเท่านั้น อย่าเลือกตัวเลือกนี้เบา ๆ
  • bugtracker คุณต้องการให้ผู้ใช้นั้นสามารถให้รายงานข้อผิดพลาดแก่คุณได้ สิ่งนี้จะช่วยคุณปรับปรุงคุณภาพของรหัส สำหรับข้อบกพร่องแต่ละข้อที่คุณแก้ให้เพิ่มการทดสอบลงในกรอบการทดสอบของคุณเพื่อให้แน่ใจว่ามันจะไม่เบรคในอนาคต (การทดสอบการถดถอย) ระบบติดตามบั๊กสามารถใช้สำหรับการร้องขอคุณสมบัติ
  • ผลงานของผู้ใช้ คุณต้องการมีส่วนร่วมของผู้ใช้? ฉันไม่แน่ใจว่าวิธีนี้ใช้งานได้กับผลิตภัณฑ์โอเพ่นซอร์ส แต่ฉันสามารถจินตนาการได้ว่าคุณสามารถอนุญาตให้ผู้ใช้สร้างสาขาฟีเจอร์ ผ่าน GitHub คุณดูเหมือนจะสามารถควบคุมสิ่งนี้ได้ผ่านคำขอดึง

ฉันไม่มีประสบการณ์ที่เกี่ยวข้องกับ Python ดังนั้นฉันจึงไม่สามารถให้คำแนะนำในทิศทางนั้นได้ อย่างไรก็ตามมันเป็นไปได้ที่จะทำการทดสอบทั้งหมดที่ถูกทริกเกอร์โดยแต่ละคอมมิทในการเก็บข้อมูลระยะไกลของคุณ (เช่นการใช้เจนกินส์ ) อย่างไรก็ตามฉันขอแนะนำให้เลื่อนสิ่งนี้ออกไปเพราะมันเป็นงานที่ต้องตั้งค่ามากโดยไม่มีประสบการณ์มาก่อน


2

นี่เป็นคำถามที่ยอดเยี่ยม

เกี่ยวกับขั้นตอนที่เพิ่มขึ้นอย่างมีนัยสำคัญที่เป็นรูปธรรมไปสู่ห้องสมุด releasable:

  • แยกไฟล์ที่จะกลายเป็นไลบรารีออกจากส่วนที่เหลือของโครงการ
    • ห้องสมุดควรเข้าไปในที่เก็บของ git ของตัวเอง แต่คุณอาจพบว่ามันเป็นขั้นตอนกลางที่มีประโยชน์ในการวางไว้ในไดเรกทอรีระดับบนสุดที่แยกต่างหากภายในที่เก็บปัจจุบันของคุณ เมื่อคุณทำให้มันเป็นพื้นที่เก็บข้อมูลแยกต่างหากให้เก็บที่อยู่ติดกับส่วนที่เหลือของโครงการของคุณซึ่งสามารถอ้างถึงมันผ่านทาง../libraryจนกว่าคุณจะไปถึงขั้นตอนบรรจุภัณฑ์ pip และโหมดการพัฒนา
    • การเข้าถึงจากส่วนที่เหลือของโครงการไปยังห้องสมุดนี้ควรผ่าน API สาธารณะ คุณอาจพบว่ามีการพึ่งพาซึ่งกันและกันเพื่อแซว
  • เขียนเอกสารเพิ่มขึ้นเพื่อทำเอกสาร API ของไลบรารี
    • ในที่สุดเอกสารก็จะป้อนเข้าสู่เครื่องมือเอกสาร แต่งานที่สำคัญคือการเขียนข้อความที่อธิบาย API อย่างรัดกุมและเพียงพอกับผู้อื่น มันง่ายกว่าในการกรอกข้อมูลทีละครั้งมากกว่าทั้งหมดในครั้งเดียวและมันจะออกมาดีกว่ามากโดยการเขียนแบบร่างที่หยาบและกลับไปหามันในภายหลังเมื่อคำอธิบายและตัวอย่างที่ดีกว่า
    • หากคุณพบว่าส่วนหนึ่งของ API นั้นยากที่จะทำเอกสารถามว่าส่วนหนึ่งของ API นั้นมีพื้นที่สำหรับการปรับปรุงหรือไม่ มันง่ายกว่านี้ไหม? ปกติมากขึ้น? มันกว้างเกินไปหรือเปล่า เฉพาะเจาะจงเกินไป ใช้ชื่อที่คุ้นเคยมากกว่านี้ได้ไหม
    • docstrings สามารถจัดทำเอกสารประเภทอาร์กิวเมนต์โดยใช้ความคิดเห็นแบบมีโครงสร้างที่เครื่องมือสามารถตรวจสอบได้ ฉันยังไม่พบเอกสารจริงเกี่ยวกับเรื่องนั้น แต่ PyCharm IDE จะช่วยสร้างเอกสารเหล่านั้นและจะตรวจสอบประเภทอาร์กิวเมนต์ทันทีในขณะที่แก้ไขการเรียกเมธอด
    • การพูดแบบนี้ PyCharm เป็นเครื่องมือที่ยอดเยี่ยมสำหรับการประหยัดเวลาของนักพัฒนาซอฟต์แวร์และการปรับปรุงคุณภาพรหัส มันจะเรียกใช้ "การตรวจสอบ" เพื่อตรวจสอบรหัสในขณะที่คุณแก้ไขเช่นการตรวจสอบประเภทเมื่อทำได้การตรวจสอบการนำเข้าที่ขาดหายและไม่ได้ใช้วิธีการซ้ำซ้อนข้อผิดพลาดสไตล์ PEP 8 และอื่น ๆ
  • pytestเริ่มต้นการเขียนการทดสอบหน่วยใช้ นานก่อนที่คุณจะเผยแพร่การทดสอบหน่วยจะชำระในการพัฒนาของคุณเองโดยการค้นหาข้อบกพร่องในกรณีมุมและให้ความมั่นใจว่าการเปลี่ยนแปลงรหัสไม่ทำลายสิ่ง อีกครั้งคุณสามารถสร้างสิ่งนี้ได้ตลอดเวลา มันง่ายที่จะเริ่มต้น
  • อ่านไลบรารีโอเพ่นซอร์สที่มีอยู่ (ซึ่งมีขนาดเท่ากัน) บน GitHub เพื่อดูว่าพวกเขาจัดการไฟล์และรีลีสอย่างไร ดูว่าพวกเขาทำการติดตามบั๊ก / ปัญหาและดึงคำขออย่างไร มีส่วนร่วมกับพวกเขาหนึ่งคนหรือมากกว่านั้นเพื่อรับประสบการณ์กับกระบวนการจัดการโครงการหลายคนเหล่านี้หากคุณไม่มีประสบการณ์ GitHub มีเครื่องมือที่ดีสำหรับกระบวนการเหล่านี้ มันทำสิ่งที่ดีกับREADME.mdไฟล์เอกสารที่ระดับบนสุดและในไดเรกทอรีใด ๆ และด้วยไฟล์ลิขสิทธิ์
  • พิจารณาเกณฑ์ผู้ทำงานร่วมกันเพื่อรับข้อเสนอแนะเกี่ยวกับไลบรารี API และเอกสารประกอบ
    • เมื่อคุณปล่อยมันจะช่วยให้มีผู้ทำงานร่วมกันตั้งแต่หนึ่งคนขึ้นไปเพื่อแก้ไขข้อบกพร่องเมื่อคุณไปพักผ่อนเพื่อช่วยตอบคำถามของผู้ใช้และในขณะเดียวกันก็เริ่มทำคำขอดึงข้อมูลพร้อมบทวิจารณ์โค้ดเพื่อแบ่งงานปล่อยห้องสมุด และเพิ่มประสบการณ์เพิ่มเติมด้วยการจัดการโครงการและการออกแบบห้องสมุด
  • จนถึงตอนนี้คุณได้ทำคอมไพล์เชิงเส้นผูกประวัติ ในที่สุดมันจะมีประโยชน์ในการใช้ "กิ่งสาขาปัญหา" สำหรับการแก้ไขและการเปลี่ยนแปลงเฉพาะ "สาขาย่อย" สำหรับการควบคุมการใช้งานจนถึงการเปิดตัวและ "สาขาการพัฒนา" สำหรับการทำงานหลายคนที่ยังไม่พร้อมที่จะผสาน เข้าสู่สาขาหลัก ดังนั้นให้จัดสรรวันหรือสองวันไปพร้อมกันเพื่อเรียนรู้เกี่ยวกับเรื่องนี้และเริ่มฝึกกับมันก่อนที่คุณจะต้องพึ่งพาทักษะการใช้คอมไพล์เหล่านั้น git นั้นมีความยืดหยุ่นและมีประโยชน์มาก แต่ส่วนต่อประสานกับผู้ใช้สามารถรับได้อย่างเต็มประสิทธิภาพ
    • สถานที่หนึ่งที่จะอ่านเกี่ยวกับสาขาคอมไพล์และการใช้งานของพวกเขาคือในหนังสือเล่ม Pro Git จากหลาย ๆวิธีในการใช้สาขาเริ่มต้นด้วย "สาขาปัญหา"
    • แอป GitHub Desktop เป็นเครื่องมือที่ยอดเยี่ยมในการจัดการสาขา นอกจากนี้ยังยอดเยี่ยมสำหรับการทำคอมมิชชันเนื่องจากทำให้ง่ายต่อการเขียนข้อความคอมมิชชันขณะที่ตรวจทานการเปลี่ยนแปลงทั้งหมด
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.