本文转载自公众号“读芯术”(ID:AI_Discovery)
数据产业中,笔者始终认为开源体验最炫。一群人目的一致,共同做一个产品。不会收取费用,在项目的第一阶段也不会,后期还会进行维护,供客户免费使用。倘若更多产业跟搞软件开发一样借助开源项目,工作会简单得多。但开源的价值不止在此。
事实上,这个理想化的东西并不如人们所想的那般完美,毕竟是人在操作,错误在所难免。在开源还被称为开源的时代,人们对它存在许多误解。有人说它作用很小(只会消耗产品不会带来什么贡献),时好时坏,会用在错误的第一项目上,让原本美好的体验化为乌有。
这篇文章意在揭露开源领域中最常见的谎言,让小白可自行决定操作步骤。
开源没成本,免费是必须的
都听说过这句话吧。开源不收费,GitHub上可以免费下载数据库,作为开发者,我们也知道可以在上面免费发布开源。只要电脑在手,敲好的代码就免费共享。
你错了。资源和成本(实物资源)是联系在一起的,有了电脑,还缺什么才能实现开源软件的制作和维护呢?你的时间。
时间是一种资源,而且是最宝贵的资源之一,难不成白白付出?好好想想,老板可不会补偿你在开源上费的时间(除非是你在为他们做项目)。既然没有回馈,你在做什么交易?是用跟爱人在一起的时间交换还是原本用来休息的时间交换?是牺牲睡觉的大好时光还是强身健体的时间?
时间宝贵,对每一个开源人更如此。即使程序员们愿意牺牲自己的精力,不代表你就能理所应当地想要什么就要什么。笔者见过有人要求全天24小时的开源服务,这样功能通过后就可以加到自己的项目中。
项目可以反映其背后是一个人还是一个大型团队,大团队不仅有委员会这样的组织带头,还有时间和资源耗费(项目有时需要花钱),而数据库或框架却不收费。所以下次再想抱怨开源软件项目,想想维护成本。
开源挣不了钱
开源软件既然不收取费用,维护者和创建者无法以此为生计。
你错了。开源软件乍一看是免费的,但你不知道的还有很多。比如任何一款数据产品,赚钱靠的无非是商业模式和营销策略。你要是对开源赚钱感兴趣的话,这里提供了一些点子:
-
出售专业服务
这是最常见的一种方式。正如前面提到的,程序员搭建项目并且向全世界开放使用,保证24小时服务,人们会认为使用起来是理所当然的。但这不现实,而且跟开源的工作性质完全不同。为什么不收费呢?
为什么不收培训费或者向公司提供免费使用产品的服务?这也就是所谓的专业服务(服务就意味着公司会使用你的产品)。有好几个开源项目都用的这种营销模式。比如RedHat、IBM等。
-
出售周边产品
你读过几本有关React和PHP的书?书不是免费的吧。既然想搭建一个人人爱用的项目,那就通过教大家学习如何使用产品来盈利吧。
这跟专业服务其实是一样的,后者是个人参与(收费可以更高)。但有了产品,你可以搭建成本低的替代品,以供非公司客户使用(例如开发者用你敲好的代码)。就算不是你造的项目,也可以获利,怎么说也是开源项目的周边产品。
我们这里说的就是写书,或录教学视频上传到Udemy这样的平台,也可以写赞助性的博客。
-
筹款
可以通过筹款赚钱。别怕要钱。只要方式合理,就是行之有效的。如果你建的项目被大公司投入使用了,结果会让你大吃一惊。看Git这样的项目,它们就是从各个对产品感兴趣的人那里筹集资金。
关键看项目有什么联系,以及背后的群体。规模足够大,就有赚钱的机会。也有其他通过开源项目赚钱的方式,就看你怎么创新了。
对开源有贡献的人就是开发员
众所周知,只有创建开源项目的人才配得上开发员的称呼,对吧?不对。
能创建开源项目是一种特权。当然,开源贡献者可以从公开的项目中获利。同时,某个产业和潜在雇主会发现这些人,对其职业技能会产生某种程度的误解。不过也有些“闭门”开发员不会从公开的开源项目获利。
你可以说他们贡献的是时间,但也许他们对时间价值的衡量与你不同,并不会公开或参与开发开源项目。
笔者这里提的都是真实存在的,一些公司或开发员都会认为做开源项目的自然擅长该领域。不然你就是个连if语句都不会敲的白痴,离不开谷歌。
这显然大错特错。
开源代码维护起来很简单
没有哪个项目的维护是容易的、阶段性的,褪去热情你就会发现问题所在。建闭合代码项目期间,你可能会跟四五个开发员共享代码。维护时整个圈子的人都能浏览、评论或者公开讽刺你的成果。怎么会没压力呢?
很多文章都会说开源项目的优势之一就是能写出简洁可维护的代码。对笔者来说,扛着担子敲出漂亮的代码对哪个开发员都不易。
维护百万开发员使用的代码是一项重任。即便背后有整个团队帮忙,如何确保大家的水准和标准都无差?又如何保证那十个PR会考虑可能的风险?
准确维护开源非常难。不仅如此,它很快就会让人感到疲惫。2018年一个黑客掌握了一个开源储备,并通过代码获取了私人信息。之所以会这样是因为项目的拥有者和维护者都工作累了,把任务推给了其他人。
这些人累了,黑客就有了可乘之机。
上手容易
开源项目一大堆,所以人人都能轻松上手,是这样吗?
如果你想尝试开源项目,找一个愿意寻求帮助且项目维护者认可的合作者并不容易。有些项目方公开声明寻求帮助,告诉新手他们的项目有问题(其实没什么问题)。
当然也有项目方不会这么做,一方面他们没有借助外部力量,再者没接触过这些想参与进来的人。
假如你自己的项目需要帮助,事情会变难,因为真的没有寻求帮助的平台。当然,你的社交账号若有一大批粉丝,就能找到贵人。不然的话,就看项目的受欢迎程度了。
代码可复制,随心所用
再怎么说代码也是免费的,对吧?
不是的。我们的海盗式心理会告诉自己如果一组代码是免费的,那就可以随意使用。于是就有复制代码、换汤不换药甚至把成果据为己有的行为。代码凭证就是因此而来。开发者希望自己的开源项目被用且得到认可,可以考虑拿个凭证。
这样就能对用户的使用设限,改变他们的用法和再利用的方式,进而保护你和用户免遭不法分子的侵害。
没有凭证不代表你可以任意使用代码。当你在平台上找到了一个公共开源项目比如GiHub,限制也自然存在,原作者定的服务条例亦存在。所以作为用户的你若是找到了没有凭证的项目,就要想想是不是作者已经拒绝分享此代码。如果是,那就不要用了。
凭证应该是每个项目具备的法定条件。如果你正在找或者拥有它,最好留意与其相关的使用限制。
开发者对于开源软件还有很多设想,但错误的观点不仅会影响项目本身,同时会波及作者和维护员的职业生涯。在你眼里,有关开源最大的谎言是什么?