软件DIY的悲喜经历

我是一个软件DIY爱好者。软件DIY,指的是自行编写软件完成供个人使用的功能。和普通DIY一样,DIY的软件是给自己使用的,所以无论是时间成本还是经济成本都不太重要,同时在功能上也是以够用就好为准。如果你平时喜欢写个把脚本来完成生活中的需要,那么你也算是一个软件DIYer。

一点背景介绍,软件DIY一般使用脚本语言例如python, php, awk作为开发工具。开发过程大可不必像在公司里写代码那么严肃,或坐或躺皆可,写代码时喝咖啡提神也可,适量饮酒也可,完全没有在项目组里写代码那些顾忌。一个编辑器写代码,一个浏览器看手册是常见的开发模式。常常前一分钟在手册里看见一个用法,下一分钟就写进代码里了,边学边写,写完就忘是常见现象。当然软件可读性可维护性在DIY里也是不需要太多考虑的,很多“只写代码”(write only code)都是在DIY项目中出现的。可以想像,软件DIY是一种很好的头脑放松活动,特别适合那些被需求分析,架构设计,代码重构,安全分析,最终期限压得喘不过气的软件工程师们。

当然,任何自由都是有代价的。和其它DIY项目相比,软件DIY有一个很不同的地方。其它DIY产品所存在的环境—-我们所身处的这个宇宙以及其中的物理规律,是几乎保持不变的。如果你DIY了一只怀表,你可以很放心的使用它几十年,中途所需要的只是定期上油和替换磨损部件,仅此而已。而软件所存在的环境—-操作系统,运行环境,系统库,软件依赖,底层硬件……等等,无时无刻不在发生变化。也许在某次升级系统后,你的某个软件就没法使用了。如果你使用的是某个商业软件或者维护良好的社区软件,那么很简单,升级到最新版就行了。可是你猜怎么着?没人维护你写的软件。所以你只能掏钱雇一个程序员来维护这个软件—-而且还是你自己写的!—-或者自己拿起键盘来重新维护它。这当然也不容易,可能最近你工作很忙又没空;也可能你最近不那么在状态;或者你转职后写不了程序了。这时你就会开始后悔为何当初不写注释了。

讲讲我经历的DIY软件的悲惨经历:

1. 花了一周时间写了红外线USB遥控器的用户级驱动,两年后系统升级时系统库接口变更,不得不在看电影前花两个小时按照新接口把程序重写了一遍。

2. 捣腾USB收音机,网上找到的程序都是v4l的—-我的系统是v4l2的,在看了两天v4l和v4l2接口区别后改写编译了程序,之后每次升级系统时都要神经质的检查下v4l2有没有升级。

3. 写了从verycd上自动查指定剧集更新并自动添加到emule下载的脚本,结果verycd洗手不干了,辛辛苦苦写好的脚本也就此废掉。

4. 为7寸安卓平板专门做了一个百度输入法皮肤,横屏输入时流畅无比。结果百度输入法升级后原本的皮肤不能用了!别人下载的皮肤都高高兴兴的升级了!没人帮我升级皮肤!现在安卓平板上输入就变成了个悲剧。只有等待下一个长假了。

5. 为XBMC写了插件,结果Python升级后不能用了,只好自己一行行改缩进。

当然,成功的经历也有:

1. 为《骑马与砍杀》开发汉化框架并做了第一版汉化。成功的找到了愿意维护框架和字体文件的爱好者。现在这个社区很好的运作着,还成为游戏在国内的销售代理,从此买来游戏就有汉化用了。

2. 在rawtherapee中做了一个auto distortion correction的插件,成功提交补丁,从此这个功能从bug到图标都有人帮忙维护。

3. 根据NAS自己改的一个卧室小音响兼闹钟兼收音机,用了五六年了,因为不升级系统,所以几乎不需要维护。

所以对于一个软件DIY爱好者来说,要想免除未来维护的烦恼,出路无非是三条:

1. 找到愿意维护的下家,将软件开源,这样自然会有人免费进行维护。

2. 将代码反馈回mainstream,成功提交补丁是针对开源软件DIY的唯一出路。否则就自己一版一版的改下去吧。

3. 永不升级系统,只要你能忍住不用系统其它cutting edge的功能,不升级系统也就降低了需要维护的概率。

软件DIY是一种不错的业余消遣,可是如果控制不好也容易变成时间上的无底洞,希望此文可以对各位有所借鉴,节省各位的时间。

“软件DIY的悲喜经历”的2个回复

发表评论

邮箱地址不会被公开。 必填项已用*标注