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