该系列第一篇发布后收到不少反馈,包括:
  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. LabVIEW(六):创建VI

    1.多使用快捷键,可以提高工作效率键盘快捷键 说明对象/动作Shift-单击 选取多个对象:将对象添加到当前选择之中.方向箭头键 将选中的对象每次移动一个像素.Shift-方向箭头键 将选中的对象每次 ...

  2. SpringBoot+Mybatis集成搭建

    本博客介绍一下SpringBoot集成Mybatis,数据库连接池使用alibaba的druid,使用SpringBoot微框架虽然集成Mybatis之后可以不使用xml的方式来写sql,但是用惯了x ...

  3. springcloud开篇

    微服务作为现在的常用架构,已经到了不学不行的地步.君不见spring官网https://spring.io/已经将springboot,springcloud,spring cloud data fl ...

  4. Python的串口通信(pyserial)

    串口通信是指外设和计算机间,通过数据信号线 .地线.控制线等,按位进行传输数据的一种通讯方式.这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低.串口是计算机上一种非 ...

  5. 召回率,精确率,mAP如何计算

    首先用训练好的模型得到所有测试样本的confidence  score,每一类(如car)的confidence   score保存到一个文件中(如comp1_cls_test_car.txt).假设 ...

  6. java发送http get请求的两种方式

    长话短说,废话不说 一.第一种方式,通过HttpClient方式,代码如下: public static String httpGet(String url, String charset) thro ...

  7. MODIS数据的下载(新地址)

    Modis数据下载方法 1.1打开网址 浏览器输入地址:https://ladsweb.nascom.nasa.gov/search 注:需要一定的等待时间,如果一直打不开,就需要FQ.(网址加载了g ...

  8. XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax

    本文主要涉及:xml概念描述,xml的约束文件,dtd,xsd文件的定义使用,如何在xml中引用xsd文件,如何使用java解析xml,解析xml方式dom sax,dom4j解析xml文件 XML来 ...

  9. shiro源码篇 - 疑问解答与系列总结,你值得拥有

    前言 开心一刻 小明的朋友骨折了,小明去他家里看他.他老婆很细心的为他换药,敷药,然后出去买菜.小明满脸羡慕地说:你特么真幸福啊,你老婆对你那么好!朋友哭得稀里哗啦的说:兄弟你别说了,我幸福个锤子,就 ...

  10. Mybatis学习(五)————— 延迟加载和缓存机制(一级二级缓存)

    一.延迟加载 延迟加载就是懒加载,先去查询主表信息,如果用到从表的数据的话,再去查询从表的信息,也就是如果没用到从表的数据的话,就不查询从表的信息.所以这就是突出了懒这个特点.真是懒啊. Mybati ...