Cordova/Phonegap 学习笔记外一篇:参与开源——写在第八届“开源中国开源世界” 高峰论坛前一天
来源:互联网 发布:战地2如何加修改数据 编辑:程序博客网 时间:2024/05/17 23:34
Cordova/Phonegap 学习笔记外一篇:参与开源——写在第八届“开源中国开源世界” 高峰论坛前一天
本贴首发于:http://xuekaiyuan.com/forum.php?mod=viewthread&tid=12
故事从学习 Cordova/Phonegap 说起
由于 Cordova 是开源软件,有些代码时间久已经没人知道是什么意思了,甚至目前的开发人员都不懂了,比如说 Cordova/Phonegap for Android 中编写 URL 过滤器时,在类库工程中和样例工程中都没有找到相关示例代码。花了几小时分析源代码发现如下注释:
https://git-wip-us.apache.org/repos/asf?p=cordova-android.git;a=blob;f=framework/src/org/apache/cordova/api/PluginManager.java;h=0a42b3abd2fc9c684728dbbdeb0cc62cd335c2b3;hb=HEAD#l131
https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/api/PluginManager.java#L131
连重构这部分代码的程序员都不懂了,只好写上一个 What is this? 注释。经过分析后,我发现这段代码的工作方式如下:
直接编辑 config.xml 代码,增加一个 feature 元素编写 URL 过滤器函数 shouldInterceptRequest该过滤器显示输入 URL 的内容,参考该过滤器可以自己设计出各种过滤器。
最后把相关说明提交给了作者 https://issues.apache.org/jira/browse/CB-4024
写了这么多是想说一下我对于“参与开源”的看法
首先,使用开源软件就是参与开源,因为使用,就有了口碑传播的可能,就有了发现缺陷和期望功能时向开发者报告的可能。
其次,开始阅读开源软件源代码,因为阅读,就有了二次开发的可能,就有了发现改进之处的可能,这些都将促进参与开发
最后,参与开发,不一定是核心代码。写文档、写测试样例都能参与开发,有界面的软件或网站中,界面设计也是参与开发。
说了这么多是想说并不是“发起”一个开源项目才算“参与开源”
“非我发明症”(请自己搜索)并不是程序员的专利,这是一个普遍的现象,但是在程序员中尤为突出。
我认为除了原来的开源项目有向闭源发展的趋势外(例如 MySQL 被 Oracle 收购后,创始人新建 MariaDB 项目),大可不必另起炉灶
我无意于讨论另起炉灶的各种原因,但是在另起炉灶前应当树立一个清晰的目标,如果只是为了实现和原来开源项目相同功能的话,就不必了。
要知道缺乏商业直接驱动的开源项目的周期很长,按照目前的需求重新实现一遍的话,等完成的时候,估计已经落后时代很久了。
本贴首发于:http://xuekaiyuan.com/forum.php?mod=viewthread&tid=12
故事从学习 Cordova/Phonegap 说起
由于 Cordova 是开源软件,有些代码时间久已经没人知道是什么意思了,甚至目前的开发人员都不懂了,比如说 Cordova/Phonegap for Android 中编写 URL 过滤器时,在类库工程中和样例工程中都没有找到相关示例代码。花了几小时分析源代码发现如下注释:
https://git-wip-us.apache.org/repos/asf?p=cordova-android.git;a=blob;f=framework/src/org/apache/cordova/api/PluginManager.java;h=0a42b3abd2fc9c684728dbbdeb0cc62cd335c2b3;hb=HEAD#l131
https://github.com/apache/cordova-android/blob/master/framework/src/org/apache/cordova/api/PluginManager.java#L131
连重构这部分代码的程序员都不懂了,只好写上一个 What is this? 注释。经过分析后,我发现这段代码的工作方式如下:
直接编辑 config.xml 代码,增加一个 feature 元素
<feature name="UrlFilter"> <param name="android-package" value="com.daonao.test4.UrlFilter"/> <url-filter value="file:///android_asset/www/"/> </feature>
@Override @TargetApi(Build.VERSION_CODES.HONEYCOMB) public WebResourceResponse shouldInterceptRequest(String url) { ByteArrayInputStream stream = new ByteArrayInputStream(url.getBytes()); return new WebResourceResponse("text/plain", "UTF-8", stream); }
最后把相关说明提交给了作者 https://issues.apache.org/jira/browse/CB-4024
写了这么多是想说一下我对于“参与开源”的看法
首先,使用开源软件就是参与开源,因为使用,就有了口碑传播的可能,就有了发现缺陷和期望功能时向开发者报告的可能。
其次,开始阅读开源软件源代码,因为阅读,就有了二次开发的可能,就有了发现改进之处的可能,这些都将促进参与开发
最后,参与开发,不一定是核心代码。写文档、写测试样例都能参与开发,有界面的软件或网站中,界面设计也是参与开发。
说了这么多是想说并不是“发起”一个开源项目才算“参与开源”
“非我发明症”(请自己搜索)并不是程序员的专利,这是一个普遍的现象,但是在程序员中尤为突出。
我认为除了原来的开源项目有向闭源发展的趋势外(例如 MySQL 被 Oracle 收购后,创始人新建 MariaDB 项目),大可不必另起炉灶
我无意于讨论另起炉灶的各种原因,但是在另起炉灶前应当树立一个清晰的目标,如果只是为了实现和原来开源项目相同功能的话,就不必了。
要知道缺乏商业直接驱动的开源项目的周期很长,按照目前的需求重新实现一遍的话,等完成的时候,估计已经落后时代很久了。
- Cordova/Phonegap 学习笔记外一篇:参与开源——写在第八届“开源中国开源世界” 高峰论坛前一天
- 第八届“开源中国 开源世界”高峰论坛
- 尚软科技-参与第十一届开源中国开源世界高峰论坛成功召开
- 第八届“开源中国开源世界”高峰论坛自我经历
- 当开源遇到禅修——“第八届开源世界开源中国高峰论坛”及“2013开源群英会”有感
- 2012开源中国开源世界高峰论坛有感
- 龙芯俱乐部邀请参加“2008开源中国开源世界”高峰论坛
- 【Git学习笔记】使用GitHub参与开源项目
- 参与开源
- 参与开源项目
- OSDL参与中国Linux 中国开源联盟会员逾70家
- Git学习总结(16)——开源世界GitHub和开源中国GitOSChina同步提交
- 如何参与开源项目
- 参与一个开源项目
- github参与开源项目
- 如何参与开源项目
- [活动预告]倒数1天!开源世界高峰论坛将于北京举行,偶数科技将进行主题演讲和产品展示
- 《程序员》6月聚焦:中国开源的2008(欢迎参与)
- 基于I2C的嵌入式多点触摸屏幕驱动设计
- 数据库设计范式的理解
- Oracle存储过程基本语法
- 关于Java中内存溢出的解决办法
- processing初探
- Cordova/Phonegap 学习笔记外一篇:参与开源——写在第八届“开源中国开源世界” 高峰论坛前一天
- java学习4
- 输入子系统--event层分析
- wordpress admin FAQ
- 完美解决IE兼容模式问题
- C指针详解和内存分配
- 用iArduino app+以太网插板实现“iPhone,iPad&iPod无线控制Arduino”!
- 经典算法7:动态规划之多段图
- 20部商科学生必须看的好莱坞影片