[TOC] ## 一、起因 2012年,腾讯志愿者协会成立了技术公益分会,致力于发展信息技术公益。2013年我们联合了深圳信息无障碍研究会和多家IT企业成功发起中国信息无障碍联盟之后,很想为信息无障碍做一些更有创新性的工作。 当时国内网站普遍没有进行信息无障碍话改造,对于视力障碍者非常不友好,很多视障者宁可使用国外产品的汉化版本。我们经过研究后发现,Greasemonkey(油候)技术也许可以用于网站无障碍化改造。 Greasemonkey是一种客户端脚本技术,不同于普通的网站脚本,greasemonkey脚本可以由网页访问者(而不是网页设计者)定制,然后运行在被访问的网页之上,增强被访问网页的交互性,当然也可以用于增强无障碍性。 通常相同模板的网页(比如同一个网站上的不同新闻,或者同一个社交网站上的不同用户的主页)所需要的无障碍化方案是通用的,只要开发一次脚本,这个网站上类似的网页就都可以无障碍化了,这样只需要不太大的投入,就可以解决一个大网站的大部分无障碍问题。 但是采用这个技术解决网站无障碍问题就会遇到一个矛盾:网站的访问者(视障者)通常不具备开发脚本的能力,而有能力开发脚本的开发者通常又不需要借助这样的脚本来访问网站。 对此我们想出的对策是“公益众包”。简单的讲,整个流程就是: 1. 把某个视障者需要访问的网页的无障碍化,转变成为一个众包任务,在一个众包平台上由开发者自行认领。 2. 开发者开发greasemonkey脚本后上传到平台上,由专业志愿者进行技术验收,确保其中没有恶意的功能或者可疑的逻辑。如果有问题可以打回。 3. 视障志愿者者进行最终验收,确认对于网站有无障碍体验上的明显提升,就进行正式发布。 4. 普通视障者在浏览器中安装无障碍化的启动脚本,在访问网站的时候脚本自动根据当前的网页地址,在成功提交的greasemonkey代码库中寻找对应的无障碍化方案,如果找到则直接应用。如果找不到,则启动基础无障碍化脚本,进行最基础的无障碍化改造(比如自动消除焦点陷阱,自动为css属性名带有“submit”关键字的图片附加上“提交”替代文字)。 ## 二、执行 2013年11月,这个项目确定名字为“信息无障碍引擎”,随后成功招募到志愿者进行开发,并在2014年4月的腾讯分享日中进行了分享,准备参加2014年信息无障碍大赛([http://iac2014.csdn.net/](http://iac2014.csdn.net/))。 但遗憾的是,志愿者在随后的一段时间遭遇了比较大的项目压力,这个项目的开发进度一拖再拖,最终在2014年10月志愿者离职的时候也没有能够输出成型可用的作品。 之后又招募到了另一个志愿者继续开发,志愿者再次遭遇到比较大的项目压力,随后又遭遇到其他变故,最终再次放弃了项目。 这之后再也没有找到合适的志愿者继续这个项目,项目从此被搁置。 ## 三、教训 这个项目耗费了我们多个志愿者大量的时间精力投入,最终没有形成有效产出。在这个项目之前,我们对于IT公益项目的规模控制、进度管理、志愿者管理上存在过度乐观的的估计,在项目失败后我们进行了深刻反思: 1. 不要相信激情。IT从业者的工作压力普遍非常大,不管志愿者表现的热情有多高涨,都不能期望志愿者长期持续的在一个项目中投入过多的时间精力。 2. 不要依赖单个人。IT行业人员流动很频繁,就算不离职,开发者在公司内轮岗也非常常见,因此稍具规模的开发项目就不能按照普通的软件开发模式来做开发资源管理。通常软件工程的常识是,一个软件项目参与的人越少,沟通成本约低,效率越高。但是对于兼职的志愿者开发的软件项目,必须要把人物充分拆分,然后由更多的开发者分工合作来完成,宁可付出比较高的沟通成本和文档建设成本,也不能让项目的成功完全依赖于某个志愿者的投入度。