当我刚开始作为Rails开发人员时,我认为所有Rails宝石都是神奇的。一些聪明的人正在制作这些很棒的库供我使用!我不知道有多少这些库可用,我认为它们很好。他们奔跑并做我需要他们做的事。他们看起来很深奥,深思熟虑,我什至不知道如何为他们做贡献,即使我想做!直到今天,我仍然没有为Rails社区贡献任何开源代码。那是因为Rails社区在开源方面非常活跃,所以实际上很难找到您想要贡献的东西!当然,您可以解决问题并尝试解决它们,但是,老实说,它们通常太复杂和令人生畏。和这些聪明的人一起讨论问题,很难想象你有能力解决他们!快进到MobileMakers,我是iOS的新手,我做出了我的第一个开源贡献!从那时起,我做了更多,我不再害怕为更多项目贡献代码!以下是我如何迈出这一步以及我一路上学到的东西:离开Rails社区后,我很快了解到实际上对开源库存在一定程度的不信任。当我想一直使用所有CocoaPods(比如Rails!)时,团队中的高级iOS工程师总是质疑外部库的使用,如果可能的话更愿意构建我们自己的库。在iOS项目中,能一直用到的iOS库非常少,大部分项目一开始只用到一些库!由于CocoaPods以及删除或升级依赖项是多么容易,事情正在发生变化,但它不在Rails级别,并且您的大部分项目仍然由即插即用库组成。意识到这些外部库并不是魔法,这改变了我的心态,让我与以前有了很大的不同。知道编写库的人是真实的人,会犯错误,可能不会写出完美的代码,并且不能总是考虑到所有边缘情况,这让我很容易看到我可以贡献小(或大)的地方。Attentionissharing有些人鼓励积极寻找开源项目来贡献,我发现我贡献的所有项目实际上都用在了我自己的代码中。事实是,我没有时间积极搜索github问题/库以做出贡献。但是,当我在自己的项目中使用一个类库时,我希望它有X功能或者bugY已经解决了,很明显搞定了反馈回来!事实上,由于我喜欢为开源做贡献,当我发现这些机会时我非常兴奋!这让我想到了我的下一点……感觉真好……为开源做出贡献真的让人上瘾!以前知道如何编码,让计算机做你想做的事情是不可思议的,它让你觉得自己像个魔术师。但是当你可以让其他人的“神奇”代码变得更好并且他们同意你可以让它变得更好(通过合并)时,无法用语言来表达这种感觉。就像您刚刚成为10级向导而不是1级向导。从小做起此外,我将开源贡献者视为使用魔杖彻底改变和改进一切的向导,但现实是大多数变化都很小。它们只是累积地添加到每个人的基本方法中,并最终改变和完善了整个类库。所以不要低估小变化的力量!举个例子,我最近投稿的过程:ModifyingaREADME我可能想将Toast库添加到我的iOS项目中,但他们没有在README中提到CocoaPod可用。由于我只是想在我的项目中测试类库,所以我想让它易于删除。因此,即使我之前使用过这个特定的库并且知道它会起作用,我还是开始在CocoaPod中搜索另一个Toast库。寻找一些库,我发现这个特定的Toast库实际上是CocoaPod!为确保其他iOS开发人员知道CocoaPod可用,我向库的README提交了拉取请求以获取CocoaPod安装说明。微小的变化,但希望对其他开发人员有所帮助!添加额外的相同功能在为CodePath最终项目构建Android应用程序时,我的团队想尝试当前的官方Android字体—Roboto。事实证明,将外部字体集成到Android中非常麻烦,因此我们使用一个名为RobotoViews的库来解决它。基本上,必须配置每个视图以获取Roboto字体。但是,我们需要一个RobotoViews不包含的库——较新的Switch视图。添加Switch视图只是大量复制/粘贴其他视图的方式,所以添加起来并不难,但另一个视图可以用作RobotoViews!换句话说,RobotoViews的作者已经做了所有艰苦的工作来添加一个新的视图,只需要做一些改变。同样,我通过向流行的iOSFoursquare客户端库添加一个以前没有的额外功能来做出贡献,只是因为作者的工作抽象了这个过程,所以添加起来非常容易。重构当我注意到这三个函数的代码相同但有一点小改动时,我对ECSlidingViewController添加了一个非常小的修改,以确保在滑动菜单滑出时隐藏键盘。所以我重构了代码,生成了一个函数,三个函数都只是通过传入不同的参数来调用它,这样以后需要改函数的人只需要改一次就可以了。如您所见,我所有的开源贡献都非常小,而且很容易做到!当您坚持使用外部库时,您会看到类似的机会。所以继续做一些小的改变——它们是值得的!如何去做看看这个很棒的《RailsCast:一步一步教你如何为开源贡献力量》(它与非Rails项目非常相似)。但基本上,有以下几个步骤:Fork在Github上找到你想贡献的类库,点击Fork按钮即可!克隆接下来,克隆你想要fork的类库——它现在应该在你的名字下(例如:NatashaTheRobot/ECSlidingViewController),而不是原作者!分支、更改、推送克隆存储库后,切换到存储库文件夹。接下来,用一个有意义的名称签出一个新分支,以反映您将要进行的更改。进行更改并将此分支推送到github。当您转到Github个人资料主页时,您会看到一个大大的绿色“比较和拉取请求”按钮。查看您的文件并确保一切正常。然后确保您将拉取请求发送到原始分支(而不是您分叉的分支)。完成拉取请求后,您应该看看情况是否如此!再一次,确保你刚刚拉到了原作者的master分支的master!发送推文当然是可选的,但我喜欢向作者发送推文以通知他们更改。他们可能没有打开github的通知,特别是对于最近没有更改的旧代码库,所以最好让他们知道并开始对话。他们可能太忙而无法合并,所以当他们回复并通知您时,请在他们有空时再回来查看。你知道你的拉取请求不会永远挂起!享受!真的,为开源做贡献真的很有趣,也是向最优秀的人学习和提高自己技能的好方法。希望本指南能减轻您对开源的恐惧!!!如果您做出了贡献,请在评论中分享您的故事!英文原文:http://natashatherobot.com/beginners-contributing-to-open-source/翻译链接:http://www.labazhou.net/2014/03/beginners-contributing-to-open-source/
