8 ways to contribute to open source without writing code
无需写代码,8种方式让你参与开源
Posted 01 Dec 2014 by
Talking to developers and reading about open source I often get the feeling that the general notion is that open source is just about code and commits. Put another way, "If you don't make commits for a project you are not contributing to it." Or so they say. That notion is far from the truth in my eyes. Let me tell you why.
无论是和开发者聊开源还是阅读开源项目相关的书籍,我总感觉到一个总体概念:开源只是关于代码和commit(译注:指代码提交)。换一种说法,“如果你没有向一个开源项目commit,你就没有为它做出贡献。”这是他们的说法。而这种概念和我所看到的真相相差甚远。让我告诉你为什么。
Sure, code is what ultimately ships and has a direct impact on the users of an open source project, so yes commits and code are important. But it's by no means the only way you may contribute to a project. Projects mostly are a whole ecosystem, which is about more than just code. Here are a couple of other ways you may contribute to a project.
当然,写代码是最终输送的形式,并对开源项目用户有直接影响,所以是的,commit是重要的。但这决不是你能对一个项目有所贡献的唯一方法。项目总体上来说是一个完整的生态系统,而这远远超过了代码的范畴。下面是除了写代码的几种让你参与进来的方法。
Report issues
报告问题
If maintainers don't know about issues they can not fix them. Therefore, it is crucial that you report issues you encounter and not just abandon using the project or only build a workaround. Most projects are happy to receive issue reports. Don't take reporting issues lightly either, often a substantial amount of time goes into writing a good issue report. Ideally an issue report contains code to reproduce the issue, information about the expected outcome and the actual outcome, system information, version information and maybe a stack trace or similar artifacts. I also like to include a little note of appreciation for the maintainers, but that's optional. Keep in mind that issues don't have to be about bugs—they may also be about possible improvements or desired features. GitHub even acknowledges the importance of issues by giving you contribution points for opened issues—yay!
如果维护人员没有发现问题,他们也无法维修他们。因此,报告你所遇到的问题是很重要的,不要仅仅是放弃使用这个项目或是用别的变通方法绕开问题。大部分项目都很愿意收到问题报告。不要认为报告问题没什么大不了的,因为写一份优质的问题报告常常要花费大量的时间。理想的情况中,一份问题报告包括重现问题的代码,你所期望得到的结果和实际结果的相关信息,系统信息,版本信息,还可能包括堆栈跟踪或是相似的产品。我也会写上一些对维护人员的感谢之词,不过那是可选择的。记住,那些问题不只是技术上待解决的问题—也可以是潜在的改善或是你希望项目能有的特色。GitHub甚至为你对开放问题所做的贡献给你贡献值,认同了这些问题的重要性,棒极了!
Write documentation
写作技术文档
Documentation is extremely important but often lacking, as a lot of people really don't enjoy writing it. It's a great way to help a project out by making it easier for other people to get into. Also if you found it hard to get into a project, try improving the documentation so the next person will have it easier than you did. I actually have commits on Ruby—they are all documentation commits.
技术文档是非常重要的,但是也经常是稀缺的,因为很多人实在不喜欢写技术文档。让一个项目变得简单而能让其他人参与进来,是帮助项目的一个很好的方式。还有如果你发现参与一个项目很困难,可以尝试改善技术文档,这样下一个人将会得到一个比你得到的更简单的版本。实际上我在 Ruby 语言的项目上有几个 commits - 全都是文档方面的 commits。
Improve the website
改善网站
Many open source projects have their own websites. Sometimes the information is outdated and sometimes it's just plain ugly. I remember the old shoes website—it was really ugly and looked dead (at least that were my thoughts when I first saw it). But look at it now! It looks nice and presentable. And most of it is thanks to wpp—he has never pushed a commit to shoes (that I am aware of), but this certainly was a great contribution for shoes.
很多开源项目都有他们自己的网站。有时网站上的信息过时了,有时它们看上去就是苍白简陋。我记得(下面这段不确定什么意思,直译了)那个旧鞋子网站—它看起来真的很丑陋,而且看起来沉寂了很久(至少当我第一眼看见它的时候我是这样一种感觉)。但是看看现在它的样子!它看起来又漂亮又像样。而它的改变大部分都要归功于wpp(译者注:WPP集团是全球最大广告传播集团之一)——(我意识到)他从来没有提交一段有关于鞋子的代码,但是这对于鞋业是一个很大的贡献。
Offer to help with art/design
提供艺术/设计方面的帮助
A lot of projects would love to have their logo updated, get some illustrations for their website or similar thing. So if design or illustration is your thing, maybe go to your favorite project and ask them if they want some help with that? I know I'd be more than happy about that!
许多项目都很想更新他们的logo,为他们的网站配一些插图或者一些类似的事情。因此,如果设计或插图是你的菜,可以去问问你最喜欢的项目,它们需不需要相关的帮助?我知道我对此肯定会很开心!
Trying out preview versions
试用预览版本
Developers need feedback if their software works. Therefore, alpha, preview or release candidate releases are made often. Go grab one of those and try it out. If everything works—great, you just made sure it works on your system! If you find a bug—report it! That's a great help for the project.
开发者需要反馈确定他们的软件是否正常工作。因此,测试、预览或其他非正式版本是经常会被发布的。去选一个试试吧。如果一切都正常运行——那就很棒了,你只需要确定它能在你的系统上运行!如果你发现了一个错误——报告它!那对于项目是一个很好的帮助。
Weigh in on discussions
参加讨论
Sometimes there are discussions about API changes or ways an implementation could be improved (among other things). Comments are very welcome there, maintainers want the input of their users. I once spent a whole day discussing some architectural issues I identified in a project. It was fun. Other work might be setting up a road map—Eric Watson did that for Shoes 4 one day. He's a great coder, but that road map helped the project more than any code he could have written in a similar time frame. His road map went on to be a very helpful guidance and reference point.
有时人们会讨论API的变化或安装启用可以怎样优化(除了其他的事情)。在这里,评论很受欢迎,维护人员希望得到他们用户的参与。我曾用一整天时间讨论我在一个项目中发现的架构问题。那实在很有趣。别的工作还可以是建立一个路线图(?)——Eric Watson为Shoes 4做了一天路线图。他是一个水平很高的的程序员,但是那张路线图给项目提供的帮助超过了他在同样时长内能写的任何代码。他的路线图后来成为了一个非常有用的指导和参考点。
Answer questions
回答问题
Questions about a project pop up all around the place. Be it Stack Overflow or just the project's issue tracker. By answering them you help other people to get a better experience with the project overall. Also don't forget that a question might hint at a problem with the project. Maybe the documentation for this part could be improved or there is a common task that might be automated or deserves a better API? Maybe you could jump in to do this?
关于一个项目的问题会在各种地方随时出现。它可能是溢栈或者只是项目的追踪。通过回答问题,你可以帮助其他人对项目整体有更好的体验。同时,别忘了一个(无意的)提问可能会暗示一个项目中的问题。也许是某个部分的文档需要改善,亦或是一个普通的任务可以自动化实现或者需要更好的API?也许你可以来解决这个问题?
Give a presentation about a project
做一场关于一个项目的分享
There are many great projects out there, but developers may only adopt them if they know about them! If you really like a project, consider giving a talk about it at a local user group or handing in a talk for a conference. This way the adoption of the project may be increased, bringing more people to the project making it a better and more stable product overall—benefiting everyone.
事实上有不少出色的项目,但是开发者可能只会在他们了解这些项目的时候参与它们。所以如果你真的很喜欢一个项目,考虑在一个当地的用户组群里面为它做个宣讲,或是在一个会议中发表演讲。这种方法可以让项目参与量增加,让更多人参加进来,并让它成为一个总体来说更好的、更稳定的产品——让所有人受益。
Closing
结语
If you already have done any of the above: thank you! You contributed to open source. Keep doing that if you like, if not give it a shot. If you want to get started on contributing to open source, this post of mine might come in handy. Personally contributing to open source has been an amazing journey for me so far. I enjoy it very much and have made quite some friends that way.
如果你已经做了上述的任何一点:谢谢你!你已经为开源做出了贡献。如果你喜欢它,继续这么做;如果不的话尝试一下喜欢它。如果你想开始对开源有所贡献,我的这份宣传可能正好派上用场了。对我来说,为开源做些事情一直都是一个很奇妙的事情。我非常喜欢开源,也通过它认识了不少朋友。
Originally posted on theJourneys of a young Software Engineerblog. Reposted under Creative Commons.