该系列第一篇发布后收到不少反馈,包括:
  1. 第一篇里说的MonicaHQ不一定盈利
    没错,但是问题在于绝大多数开源项目商业数据并没有公开,从而无法判断其具体是否盈利。难得MonicaHQ是公开的,所以才用来做这系列文章的开篇。
  2. 很多人关心最初用户(专业术语叫种子用户)是怎么来的?
    这不但是开源项目的难点,还是任何一切项目的难点,这个话题实在是太大了。无法开展。
  3. 有相当一部分人喜欢看像MonicaHQ这种处于早期的开源项目介绍,觉得这类项目才有参考意义,但是也有相当一部分人喜欢看成名的大开源项目分析。
 
所以:
  1. 我将系列名称改为了《商业模式分析》。
  2. 在以后等文章里,我可能无法举出翔实的数据支撑了,只能靠我个人片面的记忆和经验,所以更加需要大家的反馈来纠正偏差了。
 
好了,开始第二篇文章。
这篇文章的主题是:持续维护在开源项目中的重要性!以SeleniumWatiN 为例子
 
Selenium是个很有名气的大开源项目,主要用于自动化测试,由IBM主导。我现在也在用。
 
然而在十年前,Selenium的质量比WatiN差很多,比如:
  1. Selenium当时是针对Firefox优化的,而WatiN是针对IE优化的。你要想你的自动化测试代码跑在IE下,WatiN质量比Selenium好很多。
  2. WatiN的用法和代码风格十分先进,WatiN和Selenium的用法和代码风格差距就像C#和Java的差距一样大,用惯了WatiN的用法和代码风格你再用Selenium你会无法忍受。
 
我从2008年开始一直用WatiN用到2015年。无数次想把WatiN换成Selenium,但是都告失败了,因为在以上几点里,Selenium还是一直不能超越WatiN。
然而,到了2015年,我终于放弃了WatiN,改用Selenium了。
因为2015年发生了两件大事!
 
第一件,Angular/React/Vue等现代Javascript框架出现了!
WatiN因为缺乏持续维护,终于跟不上潮流,无法用在这些现代Javascript框架上!而Selenium因为持续不断的更新,可以用在这些现代Javascript框架上。
 
第二件,这些现代Javascript框架对IE支持都不好,对Chrome支持都很好,同时IE市场份额不断地掉,Chrome变成了第一大浏览器了(这两者互为因果吧)。
WatiN因为缺乏持续维护,上面提到第一点也就是它最强大的竞争力,针对IE优化,随着IE市场份额不断地掉已经不再是竞争力了。
而Selenium因为持续不断的更新,并且把更新重点放在支持Chrome和现代Javascript框架上,Selenium第一个缺点消失了,变成了优点!现在Selenium在Chrome上跑比Firefox好很多很多了!
 
同时,也因为持续不断的更新,Selenium的用法和代码风格现在变得和WatiN类似,甚至比WatiN更好了!嗯,大家可以在脑海里想象一下,Java也像C#一样支持LINQ了,就可以理会到类似情景了。
 
See! 因为持续不断的更新,Selenium把WatiN所有优点都超越了!
 
我做为一个用了WatiN7年的老人,当然是无比的忧伤!然而又能如何?
 
好啦,问题来了,WatiN为啥不像Selenium一样持续不断的更新呢?
其实WatiN也想更新的啊,然而:
  1. 一开始的时候,WatiN真的领先Selenium太多,完全没有动力和必要更新啊。
  2. 几年后,nuget出现了。WatiN为此终于做出了几年来第一次更新!这次更新就是为了支持nuget.这次更新成功的原因是改动不大,工作量不大。
  3. 当2015年现代Javascript框架和Chrome超越IE这两件大事出现时,WatiN如果要适应它们,改动实在是太大太大了,所以果断放弃更新了。
而Selenium为啥能持续不断的更新呢?因为它有IBM这个大金主好爸爸啊!
WatiN第一没有IBM这个大金主好爸爸,第二又没有任何收入来源,拿什么去支持持续不断的更新?
 
这个真实的故事告诉我们,开源项目一定要有能支撑其长期发展的商业模式!技术暂时不先进没有关系,只要有一个能够支撑其长期发展的商业模式!你可以像龟兔赛跑里面的那只乌龟,超越那只睡觉的兔子!
 
 

开源项目商业模式分析(2) - 持续维护的重要性 - Selenium和WatiN的更多相关文章

  1. 开源项目商业分析实例(1) - MonicaHQ

    本来写一篇开源商业模式的稿子,因为有四大主题,这个稿子有点大,导致现在半个月过去了,都还没有憋出来.   今天想想还是采用MVP(minimum viable product,最小化可行产品)模式吧. ...

  2. GitHub Python项目推荐|瓦力Devops开源项目代码部署平台持续部署

    GitHub Python项目推荐|walle - 瓦力 Devops开源项目代码部署平台 项目热度 标星(star):8418 (很不错的实用项目,大神作品,建议关注) 标星趋势 关注(watch) ...

  3. 基于Java+Spring Boot开源项目JeeSite的Jenkins持续交互介绍

    一.实战项目介绍- JeeSite 基于Spring Boot 2.0 数据存储MySQL 语言:Java 规模大小:适中,适合初学者 源码地址:https://gitee.com/thinkgem/ ...

  4. .Net 开源项目资源大全

    伯乐在线已在 GitHub 上发起「DotNet 资源大全中文版」的整理.欢迎扩散.欢迎加入. https://github.com/jobbole/awesome-dotnet-cn (注:下面用 ...

  5. 开源项目大全 >> ...

    http://www.isenhao.com/xueke/jisuanji/kaiyuan.php   监控系统-Nagios 网络流量监测图形分析工具-Cacti 分布式系统监视-zabbix 系统 ...

  6. 【开源整理】.Net开源项目资源大全

    汇总了.NET平台开源的工具类库,新的内容在不断更新中.内容借鉴了博客园.伯乐在线.GitHub等平台. (注:下面用 [$] 标注的表示收费工具,但部分收费工具针对开源软件的开发/部署/托管是免费的 ...

  7. Android 开源项目及其学习

    Android 系统研究:http://blog.csdn.net/luoshengyang/article/details/8923485 Android 腾讯技术人员博客 http://hukai ...

  8. 转发 ----> 2018年阿里巴巴重要开源项目汇总(持续更新中)

    转发自segmentfault  https://segmentfault.com/a/1190000017346799 前端 1.数据驱动的高交互可视化图形语法 AntV - G2 G2 是一套基于 ...

  9. 值得学习的C/C++开源项目 持续更新

    值得学习的C语言开源项目 持续更新 文章目录 值得学习的C语言开源项目 持续更新 - 1. Webbench - 2. Tinyhttpd - 3. cJSON - 4. CMockery - 5. ...

随机推荐

  1. Mysql数据库异常

    1. Mysql数据库异常 1.1. 数据库问题之Got error 28 from storage engine 原因首先检查磁盘是否已满,df -h一下 很可能是日志数据过大,查看该目录下文件夹和 ...

  2. Python中使用PyCharm为函数及参数增加注释

    在函数名中键入数遍光标,左上角亮起小灯泡,点击小灯泡 选中第二行内容 在"""后添加函数注释,以及参数注释 然后再引用函数时,选中函数,Ctrl q  即可显示函数以及参 ...

  3. VS解决-无法打开文件“opencv_ts300d.lib”问题

    之前使用过opencv,但不想要时没有正确去卸载,终造成历史问题,每次新建工程编译时都会弹出错误,然后停止运行,解决方法较笨笨 成功打印

  4. 微软Cloud+AI本地化社区贡献指南

    本文主要介绍微软Cloud+AI本地化社区,以及通过多种途径贡献本地化的操作指南. 什么是本地化社区 Cloud+AI本地化社区是微软技术社区的组成部分之一,负责对微软官方技术文档本地化的支持工作.微 ...

  5. 使用google wire解决依赖注入

    使用google wire解决依赖注入 google wire是golang的一个依赖注入解决的工具,这个工具能够自动生成类的依赖关系. 当我们写代码的时候,都希望,类都是一个个独立的结构,互不耦合, ...

  6. MFC控件GDI编程

    MFC控件GDI编程 一丶学习内容 1.了解常用的GDI函数绘图. 2.使用常用的画笔画刷. 二丶常用的GDI函数绘图 上方则为我们常用的GDI函数了. 画线 矩形. 以及圆 等等. 2.1 画线代码 ...

  7. Chrome 浏览器最牛插件之一 Vimium

    导航当页: ? 显示help,查询vimium的所有使用方法 h 向左滚动 j 向下滚动 k 向上滚动 l 向右滚动 gg 滚动到顶部 G 滚动到底部 d 向下滚动半页 u 向上滚动半页面 f 显示链 ...

  8. 使用 Synchronized 关键字

    使用 Synchronized 关键字来解决并发问题是最简单的一种方式,我们只需要使用它修饰需要被并发处理的代码块.方法或字段属性,虚拟机自动为它加锁和释放锁,并将不能获得锁的线程阻塞在相应的阻塞队列 ...

  9. Appcan开发笔记:导出Excel文件

    Appcan IDE为4.0+; appcan提供了导出文件的方法 appcan.file.write 文件会自动创建,要解决的事情是Excel用字符串输出,可以考虑 csv(逗号间隔).HTML.X ...

  10. date、sleep和usleep命令

    bash&shell系列文章:http://www.cnblogs.com/f-ck-need-u/p/7048359.html 1.1 date命令 date用于获取和设置操作系统的时间,还 ...