为什么编程语言都是开源的_什么是开源编程?

为什么编程语言都是开源的

在最简单的层次上,开源编程仅是编写其他人可以自由使用和修改的代码。 但是您听说过玩Go的老栗子,对吗? “如此简单,只需花一分钟就可以学习规则,但如此复杂,则需要终生掌握。” 编写开源代码是一种非常相似的经历。 在GitHub,Bitbucket,SourceForge或您自己的博客或网站上插入几行代码很容易。 但是, 正确地进行操作需要一些个人的投入,精力和前瞻性。

Floor goban with a game in progress

通过Goban1公共领域

什么不是开源编程

让我们先澄清一下:在公共仓库中的GitHub上并不会使您的代码开源。 当将作品固定在一种介质中时,几乎所有国家/地区的版权都会自动附加,而无需作者采取任何行动。 对于未经作者许可的任何代码,只有作者才能行使与版权所有权相关的权利。 对于任何不明智地使用它的人来说,无论其公开程度如何,未经许可的代码都是定时炸弹。

有权起诉未经明确许可而在任何其他地方使用,修改或嵌入该代码的任何人。

显然,未经许可,您不应该将自己的代码公开发布,并期望其他人使用或贡献代码。 我还建议您避免自己使用(甚至查看 )此类代码。 如果您创建的功能或例行程序与过去检查过的某件无证工作非常相似,则您可以向自己或您的雇主提出侵权诉讼。

假设Jill Schmill编写了AwesomeLib并未经许可将其放在GitHub上。 即使Jill从未起诉任何人,她最终还是可能将AwesomeLib的所有权利出售给EvilCorp,后者将这样做。 (将其视为潜伏的漏洞,只是在等待被利用。)

未经许可的代码是不安全的代码,期限。

选择正确的许可证

好的,您已经决定要编写一个新程序,并且希望人们拥有使用它的开源权限。 下一步是找出最适合您需求的许可证 。 您可以从GitHub策划的choicealicense.com开始 ,这就是它在罐头上所说的。 该站点的布局有点像一个简单的测验,并且大多数人最多只需单击一次或两次单击即可找到适合其项目的许可证。

未经许可的代码是不安全的代码,期限。
请注意:不要过于花哨或自以为是。 如果您选择诸如Apache许可证GPLv3之类的常用且广为人知的许可证,那么人们就很容易理解他们的权利以及您的权利,而无需律师团队来寻找陷阱和问题。 但是,您离人迹罕至的地方越远,您和他人面临的问题就越多。

最重要的是, 不要写自己的许可证! 对每个人来说,自己制定许可证都是不必要的混乱之源。 不要这样 如果您绝对必须有自己的特殊条款,而您在任何现有许可证中都找不到这些特殊条款,请将它们写为否则容易理解的许可证的附录...,并将主许可证和您的附录明确分开,以便每个相关人员都知道他们必须格外小心的零件。

我知道有些人固执地说:“我不在乎许可证,也不想考虑许可证;这是公共领域。” 这样做的问题是,“公共领域”在法律上不是一个普遍理解的术语。 一个国家到另一个国家意味着不同的事物,附带不同的权利和条款。 在某些国家/地区,您甚至无法将自己的作品放在公共领域,因为政府对此拥有控制权。 幸运的是,“ 无证”涵盖了您。 Unlicense使用尽可能少的词来清楚地描述什么“只是使其成为公共领域!” 以明确且普遍可执行的方式表示。

如何申请许可证

选择许可证后,您需要明确且明确地应用它。 如果要在GitHub或GitLab或BitBucket之类的地方发布,那么您将拥有相当于项目文件文件夹结构的文件。 在项目的根文件夹中,您应该有一个名为LICENSE.txt的纯文本文件,其中包含所选许可证的文本。

将LICENSE.txt放在项目的根文件夹中并不是最后一步-您还需要一个注释块,在项目中每个重要文件的标题处声明许可证。 在这种情况下,使用成熟的许可证非常方便。 注释说: # this work (c)2018 myname, licensed GPLv3—see https://www.gnu.org/licenses/gpl-3.0.en.html比注释块强大得多,而且更有用。仅对完全自定义的许可证进行了隐式引用。

如果您要在自己的网站上自行发布代码,则需要遵循基本相同的过程。 拥有一个LICENSE.txt,将许可证的完整副本放入其中,然后在每个重要文件的开头的简短注释栏中链接到许可证。

开源代码不同

专有代码和开放源代码之间的一个很大区别是开放源代码是可以看到的。 作为40多岁的系统管理员,我编写了很多代码。 其中大多数实际上是专有的-我开始为自己编写代码,以使自己的工作更轻松,并消除我自己和/或公司的痒痒。 这样的代码的目标很简单:它所要做的就是以其创建者计划的确切方式和具体情况进行工作。 只要您期望在调用程序时发生的事情比不频繁发生,那就成功了。

专有代码和开放源代码之间的一个很大区别是开放源代码是可以看到的。
开源代码非常不同。 当您编写开放源代码时,您知道它不仅必须工作,而且还必须在您从未梦想过且可能没有计划的情况下运行。 也许您的代码只有一个非常狭窄的用例,并且每次都以完全相同的方式调用它。 但是,与您共享的人...他们将展示用例,参数混合以及从未考虑过的普通奇怪的思维过程。 您的代码不一定必须满足所有这些要求,但是至少需要优雅地处理它们的请求,并且在无法为它们提供服务时,它们会以可预测的逻辑方式失败。 (例如:“对第583行零除”是对未能提供命令行参数的可接受的响应。)

您的开放源代码还必须避免过分尴尬。 这意味着,在为获得合适的功能或子程序而最终产生期望的输出而苦苦挣扎之后,您不只是叹息并继续进行下一件事情,您需要清理它 ,因为您不希望剩下的一切全世界看到您明显的纸牌屋。 这意味着您不再使用$variable$lol这样的$variable $modelname而用$iterationcounter$modelname这样有意义的名称替换它们。 这意味着要专业地注释事物(即使它们在当下最热的情况下对您来说很明显),因为您希望其他人以后可以遵循您的代码。

起初这可能会有些痛苦和令人沮丧-这是您不习惯做的工作。 但是,它使您成为更好的程序员,并且使您的代码也变得更好。 同样重要:即使您是项目中唯一的贡献者,从长远来看,它也可以节省您的工作。 相信我,从现在开始,当你要思考你的应用程序一年的时间,你会很高兴$modelname ,它获取几个令人震惊的不透明正则表达式得到停飞到其他一些地方阵列分析之前,未命名$lol了。

你不只是为自己写作

开源的真正核心根本不是代码:它是社区。 具有强大社区的项目比没有的项目生存更长的时间,并且被广泛采用。 考虑到这一点,这是一个好主意,不仅要拥抱,而且要积极计划您希望围绕项目建立的社区。

蝙蝠侠可能会花费数百个小时在隐居环境中,疯狂地秘密构建项目,但是您不必这样做。 转至Twitter,Reddit或与项目范围相关的邮件列表,然后宣布您正在考虑创建一个新项目。 讨论您的设计目标以及如何实现这些目标。 请求输入,侦听相似(但可能不相同)的用例,并在编写代码时将这些信息构建到您的流程中。 您不必接受所有建议或要求,但是如果您提前知道它们,则可以避免以后需要进行艰巨大修的陷阱。

此过程不会以最初的公告结束。 如果您希望您的项目被其他人采用和使用,那么您也需要以这种方式进行开发 。 这不是进入的障碍。 这只是一种使用模式。 因此,不要只是使用文本编辑器私下在自己的计算机上闲逛,而是在其中一个大型铸造厂开始一个真实的,可公开访问的项目,并将其视为社区已经存在并正在观看。

建立真正的公共项目的方法

您可以在GitHub,GitLab或BitBucket上免费为开源项目开设帐户。 打开帐户并为项目创建存储库后,请使用它-创建自述文件,分配许可证,并在开发代码时逐步推送代码。 这将养成您以后需要与真正的团队一起工作的习惯,因为您习惯于以可衡量的,有明确目标的可记录提交来编写代码。 您走得越远,就越有可能开始产生兴趣-通常是首先以最终用户的形式。

用户将开始打开门票,这将使您既高兴又烦恼。 您应该认真对待那些门票,并礼貌地对待他们的主人。 其中一些将基于对您的项目是什么以及项目范围之内或之外的巨大误解-礼貌和专业地对待这些项目。 在某些情况下,您会将这些用户引导到您正在做的事情中。 在其他情况下,无论多么停顿,它们都会引导您实现可能首先应该计划的更大(或稍微不同中心)的范围。

如果您与用户做得很好,最终其他开发人员将出现并引起关注。 这也将使您感到高兴和烦恼。 一开始,您可能只会得到一些小错误。 最终,您将开始获得拉取请求,这些拉取请求将在项目中真正,非常特殊地将特殊用例硬编码(这将是维护的噩梦),或者将显着改变项目的范围甚至重点。 您将需要学习如何识别哪些贡献是什么,并决定要接受哪些贡献以及应该礼貌地拒绝哪些贡献。

为什么要打扰所有这些?

如果所有这些听起来都需要大量工作,则有充分的理由:是。 但是,您可以通过许多方式获利 ,这是一项有意义的工作。 从编写更干净,更可维护的代码到学习如何进行良好的沟通和团队合作,开源工作可以用您从未意识到的枯燥乏味的方式来提高您的技能。 对于有工作或有抱负的专业开发人员来说,它也是最好的简历创建者。 潜在的雇主可以访问您的资料库,看看您的能力,与您合作过的社区项目开发人员可能希望带您参加付费演出。

归根结底,从事开源项目(您或他人的项目)意味着个人成长,因为您从事的工作范围比自己大。

翻译自: https://opensource.com/article/18/3/what-open-source-programming

为什么编程语言都是开源的

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值