u盘 puppy
这是SitePoint的开源周! 我们整周都在发布有关开源,自由软件和社区的文章,因此请继续检查OSW标签以获取最新更新。
本文由特约作者Christian Heilmann和Rita Zhang撰写。 SitePoint访客帖子旨在为您带来来自JavaScript社区的杰出作家和演讲者的引人入胜的内容。
开源不仅仅是向公众提供某些东西。 它不仅与您的代码有关,而且还与许可证,了解参与以及与社区问题打交道有关。 在本文中,我们将简要介绍开放源代码的好处以及避免的陷阱。
开源可能是我们市场上发生的最令人兴奋的事情,它是网络爆炸性增长的原因。 我们的大多数服务器都是开源技术,很多浏览器代码都在使用,甚至这些天我们的编辑器都是用JavaScript编写的。 我们有责任尊重开放源代码并释放其质量,而不是将代码丢在墙上,并希望魔术能够发生。
开源是免费的-如Puppy
接下来是要遵循的理想和建议。 您可能没有时间或不想跟随所有这些。 没关系。 尝试在开放世界中玩耍并保持教条主义是不好的。 开源已经席卷了我们世界的很大一部分,人们犯了错误。 让我们像我们发布的代码一样开放。 让我们像对待错误一样处理错误:通过协作使它们消失。
养一只免费的小狗很棒,但也要承担责任。 您需要喂食它,出去散步,修饰并玩耍,即使您很忙。 您对待小狗的方式定义了它将成为哪种狗。 它对人类有多信任,与之玩耍多么容易,对人类有多大的保护和帮助。 这同样适用于发布和使用开源代码。 两者之间的差别很小:幼犬非常宽容。 开源社区就不是这样。 有很多紧张需要注意。 我们将在此处介绍其中的一些内容,但首先让我们指出有关JavaScript和开放源代码的重要事项。
Javascript一直可用-但尚未开放
仅仅因为有可用的东西并不意味着它是免费的或开放的。 如果我忘记锁我的自行车,则不会邀请您骑自行车。 如果我在标语上写上“社区自行车,可以随意骑行,但请保持清洁并修理它”,那么我们在软件方面已经接近开放和免费的含义。 关于软件的伟大之处在于它可以被复制而不会降低质量。 网络上JavaScript的伟大之处在于任何人都可以看到它。 许多JavaScript专家都是通过查看其他人的代码来学习其技巧的。 但这并不意味着您可以将其复制并粘贴并称为您的文件-除非其许可明确允许您这样做。 在与客户的交谈中,我花了太多时间,在这些交谈中,客户问我如何保护JavaScript以防止他人看到。 就像要水不湿一样。 JavaScript是发布开放源代码的绝佳候选语言。 您已经可见; 您也可以使其合法使用。
开放源代码的好处
现在,当您将代码全部交给自己成为百万富翁时,为什么还要与世界分享代码呢? 好吧,有很多好处:
- 其他人也有好主意。 通过允许人们做出贡献,我的许多代码都得到了很大的改进。 他们想出了我从未想到的解决方案。 他们帮助我编写了更简洁易懂的代码。 他们发现了我从未考虑过的问题。 而且我不必为此付出任何代价!
- 这是对代码的测试。 人们所处的环境与我不同,可以为我测试我的代码,将问题通知我,或者甚至更好地为我修复它们。 不可能在视线中隐藏草率的代码。 知道我可以使用我的代码后,使我更加担心代码质量,从而成为一名更好的开发人员。
- 您成为更大事物的一部分。 您在其他项目中使用的代码是一件非常令人兴奋(有时甚至令人恐惧)的事情。 增强他人的能力是一种很棒的感觉,他们可以构建自己无法构建的事物。 正如看到您的作品被您认为的人所使用比您要好得多。
- 无论如何,您的工作都会继续下去。 如果您无法或不愿意继续维护代码而又想继续前进,那么开源就意味着您很幸运。 您与社区共同承担责任,他们将从您的最初工作中受益。
- 您会发现志趣相投的人与之合作。 开源代码的巨大好处之一是,您会找到愿意与您一起工作的人,这些事情会让您感到兴奋。 这对于寻找新工作,聘请合适的人或在想要找到他们时踏入另一家公司的大门来说是无价的。 作为一家较大的公司,将您的代码开源,意味着您可以从贡献社区中选择新员工。 这些人已经对您的产品有所了解并为之兴奋。 这减少了几个月的入职时间,因此意味着节省了很多钱。
- 您将了解交易工具。 如今,发布一个JavaScript项目比提供一个zip脚本要复杂得多。 各种预设文件适用于不同的编辑器,程序包管理器以及自动测试脚本的方式。 如果您不想自己动手,可以请贡献者为您提供帮助。 当您可以分担责任时,无需深入了解您不满意的解决方案。
正如您已经看到的,这些好处中有很多与编写代码无关。 他们来自以尊重和专业的态度与他人打交道。
为您的代码公开采购做好准备的事情
尽管这一切听起来不错,但也有一些要考虑开放源代码的地方。 您正在做自己的工作,随后又向公众开放。 这意味着您需要准备一些一开始可能很难处理的事情。
- 强烈的意见令人沮丧。 当您开源产品时,往往会得到很多初始反馈,或者说是温和的-过于缩写。 有很多人对“应该如何做,或者它不是适当的开源”有非常明确和有限的见解,并且会竭尽所能指出这些问题。 不要为此感到沮丧。 查找这些人,如果您只是获得相同残酷React的众多人中的一员,您就会知道这里面有不同的议程。
- 每个人都有意见。 开源项目的评论,跟踪的问题或请求请求告诉您应该以不同的方式进行操作的地方不乏其人。 这里的艺术是不屈服于所有人。 有时这实际上是不可能的。 诀窍是将其付诸表决,只有在足够多的人同意或不同意时才适用。 不要追求不断的变化-这将是您无法摆脱的时间浪费。
- 不再和你有关。 放开您的工作并看到它朝着与计划相反的方向发展是很困难的。 是的,方向–复数。 那就是分叉的目的。 为了项目的利益,您可能不得不屈服于大众的智慧。 如果改变项目的某些部分的工作方式或维护方式可以产生很多好的贡献者,那是值得的。 请记住,通过开源采购某些东西,您将来就可以证明这一点。 如果您不在该项目中,则其他人需要接管。 这可能意味着您需要在项目工作上与最初的方法有所不同。
- 您将减少编写代码,编写更多代码。 项目启动后,与编码相比,您将花费更多的时间来回答问题和评论以及查看拉取请求。 您的责任开始从编写出色的代码开始,以审查文稿,以确保添加的内容不包含安全性或维护性问题。 与其与解析器和VM争斗,不如开始处理人类议程以换取代码。
- 您不会做任何事情。 在没有您的监督或控制的情况下,尽早委托并信任人们去做项目的一部分。 刚开始时这很困难,但是以后您就可以做更多的事情。 如果您以团队形式启动项目,请定义角色并坚持下去。
- 这不是嫉妒的地方。 可能发生的很多事情是您的产品将用于其他人的产品中,并且它们取得了巨大的成功。 甚至可能发生的事情是,如果您对自己不同的方向所做的事情产生分歧,则会取得更大的成功。 在最坏的情况下,有人会根据您的工作通过商业产品赚很多钱。 或者创建一些可以被另一家公司大量购买的东西。 不要因此而灰心。 这有很多随机性,并不是您的错误导致了这种情况的发生。 保持联系,为其他人的成功而高兴,美好的事物会再次出现。
许可事项
关于最后一点,在开源产品中有非常重要的一部分。 这是最困难,最激烈讨论和令人困惑的部分:许可代码。
作为开发人员,我们大多数人都认为法律,许可和协议是我们希望尽可能远离的事物。 但是,对您的开源代码进行许可在许多方面都很重要:
- 您保护自己。 明确的许可证不仅可以确保人们不会以您不想要的方式使用您的代码。 这也意味着基于您的软件的安全漏洞不会使您入狱,因为许可证中明确涵盖了这一点。
- 您定义重用级别。 根据许可证,您可以定义人们是否可以根据您的工作来构建商业产品。 您可以定义人们是否需要将您列为他们的项目的贡献者。 您确保对代码的某些使用是非法的,而另一些则完全可以。
- 您给谁可以贡献的明确信息。 开源的核心贡献者将无法在具有特定许可证的项目上工作。 开源项目的商业用户除非拥有许可才能使用代码,否则无法使用代码。 通过选择正确的许可证,您可以限制或扩展可以从事您的项目的人员。 它还可以保护您,防止其他人在您的工作中致富而又不会分享。
幸运的是,选择正确的许可证的困境一直是开源社区中经常讨论的问题。 有很多不错的资源可以使用,例如http://choosealicense.com、https://tldrlegal.com或https://tldrlicense.com。 确保选择明智,因为以后更改许可证很困难,有时甚至是不可能的。
成为出色的开源发行商
如果其中有些听起来令人生畏,请不要绝望。 它并不像听起来那样艰难,我只是希望您为即将发生的事情做好准备。 而且我想确保发布某种开源产品并不是要使之可用。 不是您给世界一个礼物。 您是与世界共享您的工作,并愿意在此过程中进行更改。
这样,我想确保为了成为出色的开源发布者,您可以在初始发行版中添加一些额外的工作,以确保人们可以为您提供帮助,并且您不会遇到会导致不利于初始发行的明显错误反馈。 在出现问题之前,有很多关于回答问题的知识。 因此,这里去:
规划供款
有了GitHub,这些天我们就拥有了发布开源软件的强大工具。 我们不仅获得了Git,它是一种安全地编写代码而又不会覆盖彼此工作的工具。 我们还提供了一个问题跟踪程序,一个用于解释和编写文档的Wiki,以及一个GitHub Pages,用于在源代码所在的位置显示代码的可执行版本。
为了使人们尽可能容易地做出贡献,有一些适当的做法很有意义:
- 很棒的自述。 这是人们首先要看的东西。 尽早说明该项目的用途和用途。 指向此处列出的所有其他部分,并确保将其更新为最新信息。
- 有关如何运行它的信息。 大多数开发人员不会为自己无法运行的项目做出贡献。 确保定义自己尝试项目的方式,列出所有必需的依赖项和环境设置。
- 有一个明智的变更日志。 它显示了您如何解决问题,增加的功能以及项目的整体节奏。
- 代码准则。 简要描述如何编码产品,设置和环境是什么,以确保所贡献的代码符合此要求。 这可能会引发一些讨论,但可以确保最终产品的维护更加容易。
- 测试。 在贡献之前,有办法自动测试您的代码并运行一系列测试。 这样可以确保在提交破坏整个项目的代码之前,贡献者可以采取额外的步骤。
- 反馈渠道。 让人们有机会在正常的开发流程之外与您联系。 这使他们有机会举报他人的不良行为,向您询问商业协议,或只是说“谢谢”,而不会增加本已繁忙的通信渠道的噪音。
- 贡献准则。 说明如何编写最有可能导致社区(最初只是您)尽可能轻松地处理请求的请求或问题。 没有什么比没有解决的问题或存在很多“我们需要更多信息”的问题更糟糕的了。 未解决的问题越少,项目的吸引力就越大。
- 初学者的错误/功能。 如果您有办法将简单问题标记为“初学者错误”,请这样做。 对于刚接触一个小问题的新人来说,这是一个很好的方式来参加该项目并了解它。 通过消除障碍进入小组是一件很不错的事-多么微不足道。 不仅仅是试图找到立足点,而被其他所有人的才华所淹没。
- 考虑一个贡献者的行为准则。 这听起来可能很重要,但定义您的期望和不期望人们互相说的话是建立一个健康,富有创造力的社区的良好开端。 由于有明确的指导原则,它还允许管理员阻止人们在没有任何戏剧性的情况下做出贡献。
免费学习PHP!
全面介绍PHP和MySQL,从而实现服务器端编程的飞跃。
原价$ 11.95 您的完全免费
并非所有这些都是严格必要的,有时甚至是过大的。 尽管它们对您的项目进行扩展和扩展,但它们是非常有用的。 如果您想查看一个包含所有这些内容的出色示例存储库,请查看GitHub上的Microsoft Visual Studio Code 。 如果您正在考虑《行为准则》,则TODO小组提供了一个模板 。
商业规模扩展
很高兴看到您的产品用于商业产品。 如果像Google,Facebook或Microsoft这样的人使用您的脚本,那将是很大的帮助。 但是,这也意味着您需要确保某些事情已经准备就绪,否则将无法实现。 通常,这些都是很棒的东西,但是除非您提供它们,否则它们对于商业用户来说是个阻碍。
- 确保您的产品支持国际化。 有一种翻译字符串的方法,请确保布局可以从左到右,从右到左移动。 允许支持非ASCII输入。
- 确保可以使用各种输入设备访问您的产品。 对大型公司而言,可访问性是一项法律要求,它将受到审核。
- 确保您的产品未固定在一种环境中。 有时候,大公司会喜欢使用您的产品,但是当您为计算机而不是整个世界开发产品时却不能。
- 确保您的产品具有允许用于商业用途的许可证。 这应该很明显,但是由于初始许可过于严格,因此许多产品无法重复使用。
如果您想了解更多信息, Enterprise JS上的Chris Dias进行了精彩的演讲,内容涉及Microsoft如何在开源项目之上构建Visual Studio Code以及所引起的问题。
开源就是沟通
综上所述,我希望您仍然可以将您的作品发布为开源。 这不仅对您的代码有好处; 成长为我们市场的贡献者也很重要。
发布开源意味着您将广为人知并承担更多责任。 拥有成功的开源项目是承担更多责任的出色工作的基石。 您表明自己在乎,并且想要做更多的事情。 在项目负责人,团队负责人或部门负责人的角色下,在项目周围建立社区并处理反馈和贡献是一项很好的练习。 您要推动自己成为更多的人类开发人员,而不仅仅是代码开发人员。 当我聘请从事开源工作的开发人员时,我会看看他们如何与他人互动。 我更喜欢雇用那些与他人合作良好的人,而不是那些做出了最惊人贡献的人。 可扩展的团队需要人们相互合作。 这是锻炼该技能的好方法。
那你呢 您已经在为开源做贡献了吗? 如果没有,那么阻止您的是什么? 在下面的评论中让我知道。
翻译自: https://www.sitepoint.com/open-sourcing-javascript-code/
u盘 puppy