如何为本次 Hacktoberfest 的 DEV 项目做出贡献
Forem 🌱
首先,如果您还没有这样做…… ### **[⭐️⭐️⭐️ 请在 GitHub 上为 dev.to 代码库点个星 ⭐️⭐️⭐️](https://github.com/thepracticaldev/dev.to)** **非常感谢 ❤️**
今天是Hacktoberfest的第一天——这是全球规模最大的开源盛会。全球 5 万名参与者将获得一件免费 T 恤、其他精美礼品以及一枚开发者徽章。本月只需提交四个 pull request 即可。
虽然 DEV 是今年活动的联合主办方,但我们同时也是一家开源公司!我们拥有多个开源代码库,欢迎大家贡献代码。其中最重要的一个就是为本网站提供支持的代码库。
我们开源的目的
开源本身有时被认为是一件好事。虽然这可能是事实,但我们也认为有必要阐明我们开源的目的,以及我们正在努力实现的最终目标。
我们的核心目标是促进透明度和信任。通过完全透明地构建社交网络,我们能够清晰地展示应用程序的运作方式、收集哪些数据以及用户为何应该信任这个社区平台。通过与社区携手共建,我们真正有机会打造社区最需要的产品,而不是武断地将我们自以为是的社交媒体愿景强加于人。
长期目标与初始价值观同等重要。虽然我们目前只运营一个软件实例(dev.to),但我们正在构建一个可复用的社区平台。这一产品愿景将服务于更多超出 DEV 关注范围和专业领域的应用场景,更重要的是,它将免费使用,而不会将所有价值收益都返还给母公司。我们设想社交网络的未来将更加多元化,开源技术在其中扮演关键角色。我们预计,我们的核心业务将是一家商业开源公司,而不是一个完全基于数据监控、旨在利用注意力经济的垄断模式。
我们核心平台的所有工作都旨在强化我们的长期愿景,但我们所描述的第二阶段一直以来都只是次要的。然而,在 Hacktoberfest 之后不久,也就是 2019 年即将结束之际,我们将投入专门的开发周期来推进我们称之为“第二阶段”的工作。未来几周和几个月内,我们将公布更多信息,但目前最重要的是大家齐心协力,编写新功能、重构代码并修复漏洞。
如何为 DEV 做贡献
具体细节可以通过查阅我们的代码仓库自述文件、文档等来了解……
欢迎来到Forem代码库,它是dev.to的底层平台。我们非常高兴您的加入。有了您的帮助,我们可以提升 Forem 的易用性、可扩展性和稳定性,从而更好地服务于我们的社区。
Forem是什么?
Forem 是一款用于构建社区的开源软件。它可以帮助你构建面向同行、客户、粉丝、家人、朋友以及任何需要人们聚集在一起的场合的社区。请参阅我们的公告文章,了解 Forem 的概览。
dev.to(简称 DEV)由 Forem 托管。这是一个软件开发者社区,成员们在这里撰写文章、参与讨论并完善个人职业档案。我们重视支持性和建设性的对话,致力于为所有成员创造卓越的代码和职业发展。我们的生态系统涵盖从入门到高级的开发者,欢迎所有人找到属于自己的一席之地……
但我还想提供一些关于如何有效贡献的高级指导和想法。这并非总是易事,尤其对于开源新手或编程新手而言。
首先,为 DEV 代码库做贡献与为库和框架等项目做贡献不同,因为这是一个完整的网站。因此,为我们的项目做贡献就像你作为开发者或网站创建者的日常工作一样。你可以直接上手,查看一些 CSS 或控制器代码,然后开始工作。
其次,DEV 是一个 Ruby on Rails 应用。这意味着我们通常会遵循 Rails 的约定,因此您可以学习 Rails,并对如何追溯功能来源有一个相当清晰的认识。Rails 的一些“神奇”之处在于,很多地方都存在一些隐式功能,如果不查阅文档,可能很难理解。总的来说,它是一个备受推崇且成熟的框架,鉴于其在软件生态系统(包括现在和历史上的地位)中的地位,值得学习。
如果你是 Rails 新手,你可能会觉得这个帖子很有帮助……
您可以通过多种方式为 DEV 做出贡献
现在进入正题。让我们讨论几种能够帮助我们迈出这些重要步伐的贡献方式。软件改进的方式有很多种——不仅仅是修复漏洞和添加功能。对于复杂的应用程序来说,沿途的结构性改进至关重要。
重构代码
重构的艺术在于在不改变代码功能的前提下提升代码质量。虽然有时我们在重构过程中会发现需要修复的错误或需要处理的极端情况,但其基本原则是纯粹为了提升代码质量。
重构工作通常是一个发现的过程,但任何代码库中都蕴藏着大量的机会。仔细浏览文件,或者查看我们的 CodeClimate 问题,寻找这款自动化质量分析工具所发现的重构机会。
代码质量是主观的,但代码很少是完美的,DEV 应用中肯定有很多容易改进的地方!
以下是一些关于重构的资源……
错误修复
我们的软件里到处都是 bug。真的到处都是。有时候是影响所有用户的关键路径问题,有时候只是比较容易容忍的边缘情况。无论哪种情况,我们都需要依靠贡献者的帮助来找到解决方案。
通过按错误标签筛选,发现代码库中的错误。
以下是一个示例问题……
重现步骤:
- 我在编辑之前发布的一篇文章,上传了一张不同的封面照片。
- 没有保存,我点击了“撰写帖子”并开始写新帖子。
- 封面照片选择器中已经选中了之前的照片,但它没有显示出来。
- 上传新照片不会有任何作用。
- 我必须点击预览再回来才能看到封面照片字段是空的。
当然,我们非常欢迎您自行发现错误,然后以 issue 的形式创建您自己的错误报告来帮助我们。
测试
任何尚未通过现有测试验证其功能的代码都应该包含测试。我们代码库中的测试位于rspec后端和全栈测试文件夹中。前端测试则位于各个__tests__文件中app/javascript。
虽然测试是任何拉取请求的重要组成部分,但也可以通过编写独立的测试拉取请求来做出贡献。测试和其他代码库部分一样,也需要不断改进,而我们代码中的某些部分仍然完全未经测试。新的和改进的测试始终有助于增强我们对测试套件的信心,从而更有信心进行部署。
这或许能帮助你入门 rspec...
JavaScript 端我们使用 Jest。您可能会觉得这很有帮助……
特征
功能开发可能是最难贡献的内容之一,这主要是由于我们核心产品团队的沟通不足——但我们始终欢迎对功能进行小的贡献。当我们认为某个功能的信息足够丰富,外部贡献者能够参与进来时,我们会添加help-wanted相应的标签。
当您能够发现尚待完善的空白领域时,功能开发也最为便捷。我们的 API 控制器提供了创建我们尚未覆盖的新端点的机会。添加新的端点变体不会影响现有功能。
欢迎以 issue 的形式提出功能建议。我们非常欢迎 pull request,但最好能提前讨论一下 issue,以避免任何分歧或误解。
以下是一个示例问题……
每次看到长长的滚动条,我都会感到很沮丧,因为根本不知道要多久才能看完。评论可能很多,占用空间很大,所以很难查看阅读进度。
我认为最简单的解决方案是在设置中添加评论自动折叠功能。当我在偏好设置中启用“自动折叠评论/底部区域”后,每个新加载的文章都不会显示评论和精选文章,取而代之的是一个简单的“显示评论”按钮,点击即可展开这些组件。
无障碍(a11y)
无障碍设计是一个非常值得贡献的领域,因为可以通过实际应用的使用发现问题,而且解决方案通常也比较容易理解和接受(当然也有例外)。无障碍设计对任何应用都至关重要,我们致力于提供无障碍的用户体验。随着我们的开源代码开始在自身领域之外得到应用,这一点将变得尤为重要,因为我们有可能产生更广泛的影响。
如果您发现任何无障碍访问方面的问题,请提交 issue 或 pull request!
文档(和副本)
为了项目的健康发展,确保后续使用者能够轻松上手至关重要。如果您在代码库中遇到任何不符合直觉的地方,欢迎您为文档做出贡献。
文档位于该docs文件夹中,并将构建为docs.dev.to上的静态网站。我们的 API 文档位于api_v0.yml。
我们的应用里也充斥着大量的“文案”,例如向最终用户解释功能的文字。如果这方面有任何改进空间,比如电子邮件或注册文案等等,请尽管提出!
最后想说的
我们欢迎各种形式的贡献,并鼓励您阅读我们的文档,寻找友好的标签,并参与到项目中来。
请把它看作是一种长期的合作关系。有时我们可能无法合并您的拉取请求。有时我们可能需要向您提供更多关于某个功能如何运作的背景信息。
让我们共同努力,打造编程界最具包容性和建设性的社区……以及一个能够持续发展,并在其他任何需要的地方提供友好社区的开源代码库。
祝您编程愉快!
文章来源:https://dev.to/devteam/how-to-contribute-to-dev-this-hacktoberfest-5b91