当软件习惯开源之后

前几天遇上一个小需求,需要批量提取 pdf 的若干页面并合并成新的新的 pdf 文件。因为这个需求是需要在别人的电脑上跑,且对方并无太多相关的基础,所以自然考虑能够打包成单个可执行文件的解决方案。最终选择使用 Golang 来实现,把代码打包成单个 exe 给对方直接运行。

在选好语言后,下一步很自然地就是寻找相关的工具库进行处理,简单地在 Google 搜索 go pdf process,就在第一条搜索结果就找到了一个质量还不错的开源 pdf 处理库 —— pdfcpu,该工具不仅提供命令行工具,还提供能在代码封装好的 API,看了看文档和相应的例子,就能马上上手用了。

这个需求挺快就解决了,不过后面突然对于 dotnet 心血来潮,想玩玩新版本的 dotnet7 和 dotnet 提供的单文件发布功能,又将这个需求打算用 dotnet 实现一次。当然核心的 pdf 处理功能还是打算找网上的工具库实现,使用类似的方法在 Google 一搜,相应的工具库还是挺多的,于是就找了第一个跟着文档操作了几下,好像没有问题,再多用几次后却发现,不能正常使用了,再一细看才发现,原来这是个商业软件,使用需要购买 license,免费版只能使用几次,而且因为是商业软件的缘故,有时候方法调试或者是跳转调用的函数定义,也因为调用库的代码被加密混淆,而无法清晰了解,如果使用过程出现了什么问题,也难以调试。

重新回去 Google 搜索了一下 dotnet 当中的 pdf 处理库,然而搜索引擎靠前的都是需要付费的商业软件,免费版的或是限制使用次数,或是限制处理文档的页面数量,都满足不了我的需求。最终找到了一个开源的 pdf 处理库,但是功能羸弱,连加密解密功能都没有,只能选择放弃。不过想了一下,感觉也挺理所当然的,在这个领域方向上的商业软件比较强的情况下,开源软件天然受到压制,商业软件在维护人数,使用人数,搜索的 seo 上都有着较大的领先,搜索引擎一搜,基本前面都是商业软件以及使用他们的相关教程帖子和分享,因此开源软件得不到应有的关注,自然难以进展和反超。

一直以来,我都已经把软件开源使用当作是一件习以为常的事情了,尤其是这种依赖工具库。只要有这个需求,自然就会有人写代码实现解决这个问题,重复的人和代码多了,于是便整理起来放到网上进行共享使用,形成一个依赖库供大家一起使用,在这个过程中也一起改进。后面的人在遇到这个问题之后,便能借助前人的智慧,轻松获取解决方案,这也是开源的魅力所在。