开源是我在行业中遇到过的最有趣的事情之一。这项运动本质上是将人们聚集在一起,因为他们愿意而致力于产品的工作。他们通常免费进行此操作,尤其是在项目的最初阶段,然后-获得此信息-对其进行维护,以使其他人可以使用它。也是免费的。
我倾向于认为,如果像我们在软件开发中一样,有更多的行业采用开源,那么事情会容易得多。再说一遍,这不是我们在这里的原因。实际上,这种令人惊奇的,几乎类似于极乐世界的开源运动并不像人们想象的那样完美,因为人们参与其中并且人们并不完美。
在我们所说的开源的生命周期中,围绕它产生了许多误解。他们中的大多数人要么不是积极参与其中(即仅消费其产品而从未做出过贡献),要么是运气不好并参与了错误的第一个项目,从而摧毁了本来可以令人赞叹的体验。
我打算在本文中介绍一些我们行业中关于开源的最常见的谎言,以便您(新手)可以自行决定是否要加入这一运动。
我们开工吧。
完全披露:本文是受Dan Abramov的这一推文启发的。我接受了提示并接受了提示。
它是免费的,因此必须免费使用
谁没听说过这个,对吧?开源是免费的。从字面上看,我们可以从GitHub之类的地方免费下载库,而作为开发人员,我们知道我们也可以免费在此处发布。
因此,只要手头有电脑,我们就可以免费创建代码并将其共享给惊人的行业。
错误的。
我们倾向于将成本与资源(通常是物理资源)相关联,但是由于我们已经拥有一台计算机,因此,我们还需要哪些其他资源来生产和维护开源软件?
时间。
没错:您的时间就是资源。实际上,这是您拥有的最有价值的资源之一,您是否正在考虑免费提供它?再想一想。花在开源项目上的时间可能是您没有得到雇主补偿的时间(除非您为他们建立该项目)。因此,如果没有任何收入可以交换您,那么您在交换什么呢?和亲人在一起?您可能会花些时间放松一下?数小时的睡眠?锻炼时间?
您的时间很宝贵,参与开源项目的每个人的时间也很宝贵。仅仅因为他们愿意为开放供您使用的东西而做出牺牲,并不意味着您有权要求任何您想考虑的要求。我见过人们需要24小时支持,或者他们的功能被接受是因为他们需要自己的(私人)项目。清单继续。
根据项目的不同,您可能会看到一个由一个人组成的团队,或者由一个由委员会领导的庞大团队在其中花费时间和其他资源(是的,有时他们需要在这些项目上花钱),因此您可以拥有该图书馆或免费框架。因此,下次您要考虑抱怨OSS项目时,请考虑其维护人员的成本。
它不能成为收入来源
开源软件是免费的。因此,其维护者和创作者无法以它为生。
错误的。
乍看之下,开源软件对其用户免费。但是,在说它不能成为有效的收入来源之前,还有很多事情要理解。
像任何数字产品一样,赚钱与您的商业模式及其背后的营销策略有关。如果您有兴趣从开源项目中赚钱,请参考以下一些想法。
出售专业服务
这是最常见的一种。正如我之前所说,人们倾向于认为,因为您已经建立了一个项目并将其发布到全世界,所以您需要一天24小时为它提供支持。这不仅是不正确的,而且肯定是一个完全不同的工作领域。那么为什么不收费呢?
实际上,为什么不同时收取培训费用,甚至不为尝试使用您的免费产品的公司提供支持?这些就是我们所谓的专业服务(这些服务适用于使用您的产品的公司)。
有很多开源项目可以做到这一点。例如,RedHat,IBM,Hortonworks(围绕Apache Hadoop)和Percona(针对其开源数据库)。
销售相关内容
您看过(或甚至读过)关于React或PHP的几本书?这些书不是免费的,对吗?
如果您成功构建了人们喜欢和使用的开源项目,那么您可以通过向人们提供他们可以用来学习如何使用它的产品来赚钱。这与专业服务模式非常相似,但是这意味着您需要亲自参与(因此可以向您收取更高的费用)。但是,使用产品,您可以构建便宜的替代方案,供非公司用户(即尝试使用您的代码的开发人员)使用。
即使您不是该项目的作者,也可以通过做同样的事情来从他们的成功中受益。您正在围绕一个开源项目(不是您自己的项目)构建产品。
我们正在谈论编写有关此书的书籍,为Udemy等平台创建视频课程,甚至撰写有关这些OS项目的赞助博客文章。为什么不?有时,作者会愿意付钱给您写关于他们的项目的文章。
捐献
您可以从为自己的事业捐款的人中赚钱。不要害怕要钱。只要做得好,绝对是有效的收入选择。
而且,如果您构建了一个大型社区正在使用的项目,那么您会对结果感到惊讶。查看诸如Git之类的项目,您会发现它们确实收到了对自己的事业感兴趣的任何人的捐款。
这一切都与您的项目以及在其背后建立的社区所能达到的范围有关。如果足够大,那么可能会有一种赚钱的方法。
您可以通过许多其他方式从开源工作中获取收入。这只是发挥创造力的问题。
您对它的贡献将您定义为开发者
我们都知道,只有为开源做出贡献的开发人员才是名副其实的吧?
错误的。
能够为开源做出贡献(无论是以项目的形式还是通过对其他人的项目的PR进行捐赠)都是一种特权-并非必须要获得工作或被认为擅长于自己的工作。
是的,OS贡献者的确可以通过公开工作而从他们的工作中受益。反过来,这使行业和潜在的雇主都能找到自己的工作,并在某种程度上对自己的技能有所偏见。但是,确实有许多优秀的闭门开发者无法从同一件事中受益。
当然,您可以说他们可能会花一些时间来做出贡献,但是也许他们以与您不同的方式来珍惜他们的时间,从而使他们无法发布或为OSS做出贡献。
我要说的是这样一个事实,即有些公司甚至其他开发人员都认为您擅长开源。否则,您就是企业老鼠,如果不在Google上查找就无法编写单个if语句。
那完全是完全错误的。所以别再这样做了,好吗?
维护开源代码很容易
关于这个我能说些什么?维护任何类型的项目都不容易。再加上您是出于良心而这样做的事实,您就会开始发现问题所在。
当您构建一些封闭代码项目时,您可能必须与四个(可能是五个)开发人员共享您的代码。当您维护开源代码时,整个行业都可以对您编写的代码进行审查,评论和公开羞辱您。所以那里没有压力呀!
有很多文章指出,开源的好处之一就是由于这个事实它迫使您编写干净且可维护的代码。对我而言,*编写高质量代码的压力不是很大的卖点,但对每个人来说,对吧?
回到重点:维护数百万开发人员可能正在使用的代码是一项重大责任。即使整个社区都在尝试提供帮助,您如何确定他们具有与您相同的标准?您如何确定等待审阅的那十个PR已考虑了他们可能添加到项目中的所有潜在安全风险?
如果您做对的话,维护一个开源项目是一项非常艰巨的任务。不幸的是,它会很快导致倦怠。早在2018年,一名黑客就控制了一个开源存储库,并引入了窃取个人信息的代码。那个人之所以这样做,是因为被数百万其他开发人员使用的OS项目的所有者和维护者因跟不上社区的要求而精疲力尽,以至于他们决定将项目交给其他人。
他们累了,其他人接管了。
轻松进入
有很多开源项目,所以一定要很容易上手,对吗?
错误的。
如果您想开始为OSS项目做贡献,找到一个正在积极寻求帮助,然后以项目维护者可以接受的方式提供帮助的工作就不那么容易了。一些项目公开声明他们正在寻求帮助,甚至标记了最适合新手的问题(Node.js就是一个很好的例子,Node.js将其问题标记为“需要帮助”或“良好的第一问题”,这样您就知道在哪里开始)。
当然,有些项目没有这样做-要么是因为他们没有寻求外部帮助,要么是因为他们没有与想要为他们的项目做贡献的人的经验。
另一方面,如果您希望在自己的OSS项目上寻求帮助,那么事情会变得更加困难,因为实际上您没有地方可以寻求帮助。是的,如果您在社交媒体上拥有大量关注者,则可能会找到人。否则,您将取决于项目的受欢迎程度以及它对其他项目的兴趣。
您可以复制代码并随心所欲地对其进行操作
毕竟是免费代码,对吧?
好吧,不完全是。
我们所有人中的海盗(承认,我们所有人都有)倾向于认为,如果一段代码是免费提供的,那么我们可以使用它来做任何事情。这包括复制代码并以另一个名称重新分发它,甚至为此而声名狼藉。
这就是我们发明许可证的原因(实际上,我不确定情况是否如此,但是您明白了)。每个希望被使用并吸引某种受众的开源项目都应考虑选择许可证。
这可以控制人们使用,更改和重新分发它的方式,从而保护您和您的用户免受可能发生的任何非法行为的侵害。
与流行的看法相反,缺少许可证并不意味着您可以使用该代码执行任何操作。如果您在诸如GitHub之类的地方找到一个公共项目,那么存储库作者已经在服务条款中约定了一些限制和含义。因此,如果您作为用户找到没有许可证的项目,请考虑其作者实际上决定不与任何人共享他们的代码,并且您不能使用它。
如果您是作者,并且想了解哪种许可证最适合您的项目以及您的意图,请参阅选择许可证以开始使用。
所有开源项目都必须强制许可。而且,如果您要帮助甚至使用它,则应注意与所选许可证相关的隐式限制。
结论
开发人员对开源软件有很多假设,因为我们通常不会为此付费。话虽这么说,这些假设是错误的,并影响到项目本身及其作者和维护者的生活。
原文链接:https://betterprogramming.pub/the-biggest-lie-in-open-source-de38f71aa88c