開發票小工具 PyInvoicer 開發歷程

想開發票找不到合用的工具就自己刻 PyInvoicer

最近因為每個月都有開發票的需求,但是收入來源種類相對單純,所以就想說有沒有簡單的工具可以一鍵給我 pdf 讓我寄給客戶就好。直覺大概會有類似這樣的規格:

想說這樣單純的需求,應該會有很多現成的工具可以用才對。花了一點時間評估之後(大概看了 Github 和 PyPI 上與 randomly google 總和二三十個各種專案),發現都不合用。工具不是尚未成熟,或是一開始設計就沒有提供我需要的欄位,不然就是和會計系統結合、過於複雜,我用不到這麼多功能。

「花這麼多時間試我自己寫就寫完啦」一怒之下決定自己寫,一月底的時候在 PyPI 上釋出 0.0.1 版。

意外發現開發票工具可能是很多人的需求

在自己寫之前、事前評估的過程中,有感於簡單的開發票工具應該是個不小的需求,網路上很多人在詢問、也有很多大大小小的服務提供解決方案。但我無法理解為什麼沒有我內心預期的輕量開發票工具(還是我那種管理發票的方式真的太軟體開發者了?)。根據前述描述到的評估、蒐集資訊的過程,目前片面的推測應該是很多軟體開發者 freelancer 的需求。

使用者來源似乎來自遠端接案盛行的國家

雖然起頭來自於自己的需求,但在過程中覺察到世界各地可能有很多 freelancer 會對這功能有興趣,所以我在釋出 0.0.1 之後特別留意了一下有沒有除了我自己以外的使用者。根據從 PyPI 下載 PyInvoicer 次數與 blog 上 GA 結果顯示,的確自從公告釋出 0.0.1 之後多了一些之前我自己刻板印象中較多數位遊牧 (digital nomad) 或軟體接案 freelancer 的國家(像是泰國與巴基斯坦);不過釋出時間還很短,這也許只是巧合,就再觀察看看吧。

PyPI 支援 rc 這種版本命名方式

雖然用了 PyPI 一段時間,但直到這次包好 PyInvoicer 並釋出之後才注意到原來 PyPI 支援 rc 這種版號尾綴 (suffix)。這其實解決我長久以來對於 PyPI 不允許重複上傳同一個版本號碼的困擾:因為不能使用同一個版號,那我在 TestPyPI 測試失敗的版號,勢必免不小要透過進版來進行新的測試。如果支援 rc suffix,就可以一直測到滿意之後再正式釋出自己要的版號。下面是 PyInvoicer 在 TestPyPI 的 release history:

PyInvoicer Release History on TestPyPI

題外話是我認為如果自詡為一位 Python Developer ,在 PyPI 上維護一個有人在用的 package 是很好的事情。除了虛榮(?)以外(「Python 開發者至少要有一個自己的 Python Package 吧」),一來於公是增加社群資源的多樣性(提供多樣的套件供大家參考與使用),於私則是維護一個真正有他人在使用的套件藉此蒐集真實世界的使用回饋,也能夠增加自己的開發經驗。

如果你也打算在 PyPI 上傳一個自己維護的 Python Package,請多多善用 TestPyPI 做上傳測試、直到自己滿意為止。接受大家捐款的 PyPI 算是某種面向下的公共財,貿然上傳品質不佳的 Python Package 除了造成伺服器營運成本增加、也會讓社群在搜尋套件資源的時候浪費掉不必要的注意力。關於這件事情的影響足以另外再寫一篇文章聊聊細節,看看以後有沒有機會了。