所以,你想开始使用开源的东西了...
你一直在阅读 Opensource.com,并且对某个软件包感到兴奋。你很想试用一下,也许——仅仅是也许——找到一种方法为创建它的社区做出贡献(如果你知道,它像你找到的那篇文章所说的那样令人惊叹)。但是从哪里开始呢?
首次安装
每个软件包都略有不同——有些在与你的家用机器不同的操作系统上运行,有些有不同的依赖项,有些期望一定的最低技术专业水平。有些非常简单,比如 LibreOffice 或 Wordpress。有些则更具挑战性,原因在于高复杂性、大量可移动部件、大量依赖项,或者社区的开发人员尚未像他们希望的那样构建安装程序。但是,作为一个看过很多不同软件包的人可以告诉你,有一些非常普遍的经验教训,如果你明智的话,可以从简单的方式(通过在这里阅读)而不是困难的方式(在午夜与安装作斗争,那时你应该做其他事情)中学习。
“计划扔掉一个。反正你会的。”
1975 年,Fred P. Brooks 在他关于软件开发的开创性系列文章 人月神话 中写下了这句话,对于开源项目和测试安装而言,它与那个时代的大型项目一样真实。
当你第一次安装开源项目时,计划进行第二次安装(如果你真的将其投入生产)。你的第一次安装只是一个原型,仅此而已。这是一个让你试用并查看哪些有效,哪些需要更多工作才能真正能够在生产环境中使用它的游乐场。因此,考虑到这一点,请确保你有一个可丢弃的环境。对于基于 Web 服务器的应用程序,你可以在 VM 上使用你最喜欢的桌面虚拟化程序来完成此操作。我通常使用 Virtualbox 来做这类事情,部分原因是如果我进行下一步并计划进行实时或开发部署,我可能会使用 Vagrant,它与 Virtualbox 非常方便。但长话短说,不要对第一次安装过于依恋;你可能想要在某个时候抛弃它并重新开始。这导致...
不要污染你的主基地
也许你在你的家中或托管中心有一个服务器,或者你在某个地方有你自己的 VPS,运行着你的家庭 Web 服务器、你的个人域名、你的媒体服务器或任何东西。在你准备好真正将你的新玩具放在那里之前,甚至不要将其下载到该机器。依赖项可能会与你已运行的某些东西冲突,并产生比你真正准备好的更多的麻烦。在你将新的应用程序塞进与其他你正在运行的东西一起之前,确保你了解新的应用程序的环境需求,这可以为你节省很多很多麻烦,不仅在安装时,而且在下次该机器重新启动时。
阅读并遵循说明!
我可以对我们这些不询问或不遵循指示的人提出各种批评,但我们将跳过这一点来说:“如果存在安装说明,请阅读它们,理解它们,并遵循它们。” 具有讽刺意味的是,最容易安装的软件包通常都有详细的说明,说明在他们的自动化失败的极不可能事件中该怎么做。人们会认为,安装程序不太简洁的软件包应该有非常好的安装说明,但它们通常没有。找到你能找到的最好的说明,完整阅读它们,并在开始安装之前彻底理解它们。
这里有一个特殊情况:如果你,比如说,是 Fedora 爱好者,并且你想玩的软件包有 Debian 的说明,或者相反,或者你想在 Windows 或其他不匹配的平台上安装它,那么了解这些不同平台安装东西的方式的差异真的非常重要。在你的 Fedora 机器上复制和粘贴 apt-get
命令将一事无成!像这样的跨平台安装很快就会变成一种特殊的痛苦,这就是为什么我建议在开发人员打算使用的类型的虚拟机上进行首次安装。
嘿,我喜欢这个东西,想加入社区!现在怎么办?
在门口放下你的自负。
你可能对此感到非常沾沾自喜。在没有任何帮助的情况下,你安装了这个很棒的新东西,也许不止一次,你让它唱你的歌,并且你准备好开始修复错误和编写代码了!这是一个了不起的成就,我会承认,但社区中已经存在的人已经做了几十次或数百次了。不要忘记这一点。如果你带着沾沾自喜和充满怨气的心情进入 IRC 频道,谈论你是如何让这个东西运行起来的,你可能不会得到你认为自己应得的欢迎。你不会相信我见过多少次这种情况发生,结局总是相同的——新人被赶走了。
这是我们社区的错吗?部分是的。在某些社区中,我们确实有些人对新人有点不耐烦。但这部分也是新来者的错,他们以为一个由人组成的既定协作社区欠他们什么。他们不欠,你最好记住这一点。他们通常会很高兴看到关心他们热情的新人,但要通过先做功课来表明你关心!
多问问题
确保你的问题没有在说明书、Wiki 或社区论坛的“置顶”中回答!花一点时间阅读可以帮助很多。如果你像这样提出你的问题:“我在论坛上搜索过,但我找不到如何做 X。我错过了什么吗?” 你可能会得到更好的答案——并且一旦你学会如何拯救下一个遇到同样麻烦的人,主动提出写下来完全是好的形式。
了解地标(和地雷)
不用多久你就会弄清楚地形,以及项目中的重要人物。通常“关于”页面或贡献者列表可以给你一些这方面的线索,而在 IRC 中闲逛和阅读积压的消息可以很快告诉你谁是重要人物。
如果你计划贡献代码,你也应该了解社区的流程。同样,向发布经理或类似的负责人提出组织良好的问题可以让你获得很多知识——以及你以后可能需要的很多政治资本。
许多项目——我很痛苦地说——也有政治结构以及技术结构。有时这些是相互交织的;我认识的一个社区绝对不会考虑任何导致数据库独立性的代码;该产品与其最初编写所用的数据库紧密结合,就是这样。已经提交了可以使产品更开放的补丁,但这些补丁未被接受。如果你陷入了一个有这些地雷的社区,最好知道它们是什么。
公平地说,其中一些地雷可能是技术限制!如果你以问题的形式表达你的想法,你可能会在触犯它们之前挖掘出一些知识。
社交。所有这些工作都可能很有趣!
如果社区有 IRC 频道或其他实时讨论空间,在与社区中的人聊天时,不要害怕偶尔跑题。另一端的人是人,就像你我一样;他们有工作和孩子,有天气,他们的汽车会抛锚——所有你我所拥有的快乐和胜利。他们只是恰好和你一样对你现在参与的这个开源项目感到兴奋。我在这个星球上最好的朋友之一是一位来自德国的女士,我只见过她几次面,但我们几乎每天都通过 IRC 交谈。在过去的 6 年里,她一直在我身边经历了很多坎坷,而且我看不出她有任何很快离开的可能性。
你可以找到来自世界各地的朋友,他们就像你的 IRC 客户端一样亲近。开源开发人员是很棒的人,如果你在一个你热衷的项目中,这种热情会表现出来,你可以很快成为常客。
2 条评论