如何推广你的代码

你花了一个整个周末来构建一个库、jQuery 插件、构建工具或其他你想要广泛分享的优秀代码,但在发布了一些推文并尝试将你的作品登上 Hacker News 首页失败后,你的作品就在一个 GitHub 仓库中无人问津,默默无闻。对于如今的许多开发者来说,这是一种常见的情况,但你可以避免这种情况。

作为几家编程通讯的编辑,我经常收到来自开发者的两种类型的电子邮件。一些开发者会联系我询问是否可以提及他们的项目,而另一些开发者则会表达对他们的作品被收录的惊讶和兴奋之情。如果你是一位优秀的开发者,但觉得自己更像第二组人,那么本文中的三个步骤适合你。

在我们开始之前,有一个障碍需要我们克服。对于许多开发者来说,"营销"和"广告"这样的词语是敏感词,开发者通常不愿进行太多推广。"做好了,他们就会来"在令人兴奋的开源项目寥寥无几的时候曾经奏效过,但现在每个人似乎都在做些什么,并为此宣传。你看到的许多成功并非纯粹的运气,而是因为开发者正在积极地推广他们的作品,或者至少让他们的作品变得可发现。现在是加入他们的行列的时候了!

步骤 1:准备好你的项目

在你开始推广你的项目之前,你需要让它对潜在的用户和传播者(包括普通支持者、媒体和其他开发者)具有吸引力。

一个好名字

确保你的项目有一个容易接受的名字。它不需要很聪明,甚至不需要描述性,但值得避免那些可能在将来造成问题的隐喻。例如,广受欢迎的 Testacular 和 Authgasm 项目分别在用户抱怨后更名为 KarmaAuthlogic

你应该搜索你选择的名字,以确保你没有与其他流行或有商标的项目冲突(你知道 Firefox 在成为Firefox之前被称为PhoenixFirebird 吗?)。美国专利商标局有一个 在线商标搜索工具

有一个相对独特或不常见的名称的好处是,你可以随时搜索它(甚至可以为该名称设置 Google Alerts 通知),并找到关于你项目的提及,而不会出现太多无关结果。如果你想要一个描述性的但独特的名称,可以考虑将两个词组合在一起。例如,当我创建了一个用于进行自然语言检测的 Ruby 库时,我将其命名为WhatLanguage,它很容易搜索。

一个官方主页或项目 URL

"主页"这个词有点过时了,但你理想情况下需要一个可以推广并让用户指向你的项目的单一"主页" URL。你不需要在花哨的模板甚至域名上花费太多,但你的项目需要一个中心点。这可以是一个拥有自己域名的完整网站,比如 YeomanHTML5 Boilerplate 的网站,一个简单的现有域名上的单页,比如 RoughDraft.js 的网站,甚至是一个普通的 GitHub 仓库,比如 vague.js 的仓库。

如果你有能力,请确保你的网站在主要浏览器(包括移动浏览器)上看起来不错,将一些分析工具连接到你的页面,并确保<title>标签写得很好。使用像“MyProject - 用于 X、Y 和 Z 的 JavaScript 库”这样的标题,而不是仅仅使用“MyProject - 关于”或空白标题。有了社交书签,这一点很重要,因为你无法保证你的传播者会写一个好的标题。

如果你不是网页设计师,没有时间花在制作完整的设计上,但仍然想要一个完整的网站而不是仅仅一个 GitHub 仓库和 README 文件,可以考虑使用像 Bootstrap 这样的框架,因为它可以提供一个干净的布局,你就可以忘记很多跨浏览器和设备的问题。

文档和文案写作

开发者不喜欢写文档这只是一个陈词滥调,但你需要一些东西让潜在用户依赖,而且在前期投入时间制作有用的文档将在后期获得回报。

从最简单的角度来说,你需要写足够的文档,以便有人能够自信地分享你的链接或推广你的项目,而不必担心将自己的粉丝引向一个充满误解的黑洞。这意味着你的主页或 README 需要涵盖几个方面。你需要

  • 突出显示一个 "[名词] 是"段落。令人震惊的是,许多项目主页没有用简单的语言解释该项目实际上是做什么的。如果你构建了一个用于语言检测的 JavaScript 库,那么你必须说出来。例如:“LanguageDetect 是一个用于检测文本自然语言的 JavaScript 库。”

    libcinder.org 上就是一个很好的例子,它在一开始就明确指出:“Cinder 是一个由社区开发的、免费的开源库,用于用 C++进行专业品质的创意编码。” 完美!

  • 撰写清晰的标题、副标题和支持性文案。至少要确保主页上的标题、副标题和任何类型的写作清晰明了。在主页上,针对最低的共同点进行写作。你可以在其他地方变得更加高级。

  • 撰写一个初学者教程,并从主页链接到它。除非所有内容都足够简单,可以在一个页面上解释,否则请快速编写一个教程,涵盖基本安装和使用,并将它包含在你的 README 文件中,或者将其发布在网络上,并从你的 README 和/或主页链接到它。

  • 清楚地说明依赖项和要求。你的库是否只在特定版本的 Node 上工作?它是否是 Firefox 的浏览器扩展?你的代码是否需要 PostgreSQL、Redis 或其他特定数据库?请务必包含一个项目可用性依赖项和要求的项目符号列表,以免让潜在用户失望。

  • 指定你的代码的许可证。虽然你可以将你的许可证信息隐藏在 GitHub 仓库中的 LICENSE 文件中,但在主页上明确说明你的代码是根据什么许可证发布的将有助于让许多开发者放心。同样,如果你的项目本质上是商业性的,并且需要付费,请不要隐藏这个细节,以免误导访问者。

  • 如果你的项目是一个库或 API,请在主页上展示一些示例代码。除非你的库特别复杂,否则请让访问者在项目主页上看到一个它的使用示例。如果你的 API 很出色,这将是获得"轻松销售"的好方法。我并不是很喜欢选择的代码示例,但 Ruby 的主页展示了这种技巧。

额外材料

博客文章是一个很好的方式来介绍一个项目,这个项目可能需要更多的背景信息,或者需要比在主页或文档中讲述更多的故事。如果你的项目背后有任何故事,博客文章是讲述它的绝佳方式。请务必从你的项目主页链接到这篇文章,并考虑单独将这篇文章推广到你的利基市场中的相关网站。

如果你有能力,录制一个屏幕截图或其他类型的视频会有所帮助。你能制作一个简单的 5 分钟的屏幕截图,展示如何安装和使用你的库吗?或者你构建了一个可以在几分钟的游戏中展示的游戏?录制一个简单的视频,将其发布在 YouTube 上,并在你的主页上嵌入它。你的口音不需要像新闻播音员一样清晰,你甚至不需要在视频中出现。重要的是你要快速切入主题,你的音频是可以接受的(没有闷声、削波或被背景音乐淹没)。

作为几家编程通讯的编辑,我每年都会查看数千个项目,但很少见到简单的屏幕截图,但这确实有助于一个项目脱颖而出,因此也更有可能让我谈论它。你可以在 Punch 的主页上看到一个完美的例子。Ruby on Rails 早期的流行也依赖于一个流行的"在 15 分钟内构建一个博客引擎"的视频,当时用视频来推广开源项目的概念还很新颖。

如果你坚持使用简单的 GitHub README 方法(对于一个简单的库来说,这绝对不是一个坏主意),一个额外的技巧是创建一个代码运行的微型屏幕截图,并将其转换为一个动画 GIF,以包含在你的 README 中。Richard Schneeman 在 Use GIFs in your Pull Request for Good, not Evil 中概述了这种技术。结果令人印象深刻,可以帮助你的 README 脱颖而出。

有关在你开始推广之前如何让你的项目脱颖而出的更多想法,请查看 Michael Klishin 的优秀文章 How to Make Your Open Source Project Really Awesome。这篇文章更详细地探讨了版本控制、公告、拥有变更日志和编写良好文档。

步骤 2:传播消息

你已经完善了你的项目,拥有了一个可以推广的 URL,并且你已经准备好发布消息了。

不过,请注意,不要第一天就使用所有技术。你可能会让你的网站超负荷,或者更糟的是,如果你的作品或网站崩溃,你会遭到网上的批评。对于像图书馆或工具这样的东西,更温和的方法会更有效,随着时间的推移,逐渐增加少量访客和用户,会让你感觉好很多。

社交网络

如果你有自己的社交网络资料,它们始终是开始的好地方。你会从真正认识你的人那里获得更直接的反馈,如果你的项目特别有趣,即使只被提及一次,它也可能变得流行起来。

一个简单的项目流行起来的绝佳例子是 YouTube Instant,由 Feross Aboukhadijeh 创建。Feross 很快构建了 YouTube Instant,在睡觉前在 Facebook 上提到了它,然后 醒来时发现 涌入了大量的流量和媒体报道。

如果你喜欢尝试,并且有一些闲钱,你也可以考虑在 Facebook 上为 推广帖子 付费。这将让你的帖子在你的新闻提要中更有可见性,但这最好只在你 Facebook 好友大多是开发者或可能对你的项目感兴趣的人时使用。如果不是这样,但你仍然想花点钱,可以考虑在 Reddit 或相关的编程博客上投放广告。

影响者、博主和利基媒体

无论你是正在开发一个 JavaScript 库、Firefox 扩展、Rails 后端应用,还是一个 Bootstrap 主题,你的代码都会适合一个或多个利基市场,每个技术利基市场都有各种“影响者”,这些人和出版物在所涉及的话题上很受欢迎和知名。

从影响者那里获得一条推文、转发,甚至是一篇完整的博客文章,都可能对你的项目产生重大影响,被邀请到其他地方写博客也是如此(例如,Mozilla Hacks!)。如果 Brendan Eich 对你的 JavaScript 库发了推文,Lea Verou 撰写了一篇关于你发现的 CSS 技巧的博客文章,或者 Paul Irish 在一次演讲中提到了你构建的 Web 开发工具,你将很快吸引到很多人的兴趣。然而,关键是要认识到,每个领域都有许多优秀的影响者,如果你纠缠一个人,你将一无所获,所以准备好继续前进。

花些时间找出你所在利基市场的影响者和关键出版物。对于 Twitter,Followerwonk 是一个实用的工具,它可以搜索 Twitter 个人资料中的特定词语。如果你搜索“javascript”,第一页会包含几个用户,如果你有特别有趣的与 JavaScript 相关的版本要推广,你可以联系他们。在 Twitter 上联系可以像发一条简单的推文一样简单,许多忙碌的人更喜欢 Twitter,因为回复推文比回复电子邮件要花更少的时间。来自 @smashingmag 的一条推文可能会为你带来数千名访客,因此,当你有一些相关内容时,可以考虑向他们以及其他类似的帐户发送推文。

我还建议寻找你所在利基市场的博客和电子邮件通讯。从最简单的事情开始,比如在 Google 上搜索“javascript blog”、“javascript newsletter”、“css blog”,或者与你的项目相关的任何内容。大多数博主或电子邮件通讯出版商不会因为你给他们发送一个简短的提醒(重点是简短)而感到冒犯,让他们了解你的工作。事实上,有些星期可能缺乏有趣的东西可以写,你可能在帮他们一个大忙。

如果你选择给人们发电子邮件(并且你的项目可能比几小时的工作更重要,足以证明这样做是合理的),注意不要提出要求,甚至不要期待回复。许多博主和有影响力的人的收件箱都堆满了邮件,他们难以回复收到的所有邮件。通过包含一个单一的 URL(指向你现在的出色主页或自述文件)并包含你的“[名词] 是”段落,使你的电子邮件尽可能容易处理。不要将不回复视为侮辱,而是继续联系下一个最相关的人。你甚至可以考虑采用“这是我做的 X、Y 和 Z 的项目,不用回复,我只是觉得你可能喜欢它”的方法。这里需要循序渐进,只要你能够快速切入主题。

如何从互联网名人那里获得关注,作者:Jason Cohen,以及 如何撰写完美的推广邮件,作者:Gregory Ciotti,详细介绍了在将你的作品推广给有影响力的人时,电子邮件礼仪方面的更多细节。虽然你可能不需要联系你所在利基市场的任何“名人”,但保持简短、包含行动号召以及确保你的作品适合该人的原则对于你发送给任何人的未经请求的信息都是适用的。

播客也是一个经常被忽视的推广机会来源。虽然有些播客根本不报道新闻或新版本,但很多播客会报道,在他们的主持人那里露面,可能会让你在节目中获得提及的机会。Smashing Magazine 整理了一个技术播客列表,涵盖了设计、用户体验和 Web 开发等领域。同样,请保持电子邮件简短而甜蜜,不要有任何期望,才能获得最佳效果。

用户策划的社会新闻网站

除了接触影响者和利基媒体,有时接触公众的“新闻水管”也有效,在现代开发世界中,Hacker NewsReddit 就是最好的例子。

特别是 Hacker News 很难登上头版,通过让其他人为你投票来“玩游戏”可能会适得其反。(事实上,如果你将人们链接到你在 Hacker News 上的帖子,并鼓励他们投票,这将适得其反。他们有办法检测这种行为。让用户手动找到你的帖子。)当然,如果你登上了 Hacker News 的头版,你可以肯定会有数千名开发者看到你的作品,所以一定要尝试一下。

对于 Reddit,关键不是直接进入像 /r/programming 这样的大型子 Reddit,而是寻找与你的项目更直接相关的子 Reddit。对于 JavaScript 库,我会发布到 /r/javascript,或者可能发布到 /r/webdev。如果你愿意花点钱,Reddit 广告也能有很好的表现,而且这些广告可以针对特定的子 Reddit。

还有许多类似的网站,虽然知名度不高,但它们在各自的利基市场中受到尊重,可以带来大量感兴趣的访客,包括 Designer News(移动和 Web 设计)、DZone(通用开发者内容)、EchoJS(JavaScript)、RubyFlow(Ruby 和 Rails)以及 Lobste.rs(通用黑客和开发者内容)。找到这样的合适网站,花时间写一篇主题相关、文笔流畅的帖子,将会有很大帮助。

大众媒体/新闻

本文主要关注开源和前端项目的推广,这些项目通常不会出现在印刷媒体或电视、广播中。但是,如果你认为大众媒体确实与你的项目相关,这里还有一些包含有用技巧的其他文章:

步骤 3:保持势头

你已经积累了一些兴趣,你的 GitHub 星星、Reddit 投票和页面浏览量都在急剧上升,但现在你想利用这种关注并保持一些势头。

用户支持

无论你开发的是开源项目还是一个很酷的工具,你最终都会遇到用户或其他开发者,他们想要提供反馈、获得帮助,或者指出你的作品中存在的问题。在 GitHub 上,常见的做法是使用内置的“问题”跟踪器,但你可能还会发现有人开始给你发电子邮件。

务必确定一个策略,无论它是什么。如果你的 GitHub 库中已经存在许多未解决的问题,用户不会对在你的 GitHub 库中打开问题感到满意,你的项目可能会停滞不前。确保你回复你的受众,或者至少在你的自述文件或网站上明确你的策略。如果你不希望出现问题或代码贡献,请在开始时就明确这一点。

扩大你的影响范围

对于许多项目来说,事先创建一个专门的 Twitter 帐户、博客、Facebook 页面或 Google+ 页面太过分了,但如果你的项目开始火起来,可以考虑这些事情。它们不仅为用户提供了一种与你的项目保持联系的额外方式,而且还为他们提供了一种帮助推广项目的方式,比如转发你发布的内容,或者将潜在的新用户引导到你这里。

你也可以通过参加用户组和会议来扩大你的影响范围,如果你真的很幸运,你还可以谈谈你的工作。这是一种获得新用户的绝佳方式,因为人们更有可能去了解你的工作,如果他们在现实生活中见过你。

避免防御性

如果你的项目在 Hacker News 或 Reddit 这样的网站上表现出色,你会忍不住想阅读你的同行留下的所有评论,但要小心。关于你的工作的评论自然会显得格外强烈,那些可能并非出于恶意,而是带有批评意味的评论,在你看来可能就像是在恶意攻击你一样。

这很难,但最好的策略是不要让任何明显的恶意评论影响你,适当地纠正任何错误的意见,并感谢任何花时间称赞你工作的人。即使你站在理性的角度,由于缺乏肢体语言和言语提示,过于防御可能会在网上看起来很糟糕,并导致帖子成为戏剧的导火索。尽你所能进行互动,但如果你感觉回复某事不合适,那就听从你的直觉。

如果你进入一个新的社区推广你的工作,并收到负面反馈,要小心。大多数社区都有规则或期望,仅仅为了推广你的工作而进入一个社区,通常被认为是一种失礼的行为。对人们的环境保持敏感,并尽量始终遵守社区的规则。

长期目标

如果你的项目表现特别出色,你可能会获得将其转变为独立业务的机会。许多简单的开源项目,通常由单个开发者启动,已经变成了长期的工作,甚至变成了创造者的整个公司。

早在 2010 年,Mitchell Hashimoto 发布了 Vagrant,这是一个基于 Ruby 的工具,用于构建和部署基于 VirtualBox 的虚拟化开发环境。 2012 年底,Mitchell 推出了 Hashicorp,一家为企业客户提供 Vagrant 咨询服务的公司。 另一个更著名的例子是 Puppet Labs,这是一家围绕 Puppet 开源配置管理工具建立的公司,迄今已获得 4550 万美元的总融资。

如果您的项目在所属领域受到尊重并得到广泛使用,您也可能会被邀请为其撰写书籍或文章,甚至在会议上发言。 这是一个好兆头,表明您的项目在某种程度上“成功了”,因为出版商和活动组织者都是以商业利益为导向的。

总结:清单

这只是一个关于推广作品的基本介绍,随着练习,您会想出更多自己的技巧(如果您能在这里的评论中分享一些,那就太好了)。 基于以上所有想法,这里有一个基本清单,供您下次发布新项目并希望获得更多曝光时参考。

  • 将大部分精力集中在项目的首页或 README 上。
  • 检查您的项目名称是否与其他任何内容冲突,并且足够独特,以便以后找到对您作品的引用。
  • 首先将您的作品推广给您最亲密的社交圈,以发现任何问题。
  • 录制一个屏幕截图或写一篇关于您项目的博客文章,如果一些额外的背景信息对其他人有用的话。
  • 想出一个完美的 *”[项目名称] 是”* 语句来描述您的项目是什么或做什么。
  • 使用您的 *”[项目名称] 是”* 语句为您的页面提供一个描述性的标题。
  • 找到您所在领域的知名人士、博客、播客和电子邮件通讯,并向他们发送简短的、愉快的通知。
  • 发布到社交新闻和书签网站。 确保您的标题具有描述性。
  • 在与有影响力人士的电子邮件和联系中使用您的 *”[项目名称] 是”* 语句。
  • 对有关您的作品的评论采取积极的、“从好的方面看”的态度。

祝好运!

关于 Peter Cooper

Peter Cooper 是 O'Reilly's Fluent JavaScript 和 HTML5 会议的主席,也是 Cooper Press 的创始人。 他负责每周向超过 100,000 名开发人员发布多个编程通讯,包括 JavaScript Weekly、HTML5 Weekly 和 The Modern Web Observer。

更多 Peter Cooper 的文章…

关于 Robert Nyman [名誉编辑]

Mozilla Hacks 的技术布道者和编辑。 发表关于 HTML5、JavaScript 和开放网络的演讲和博客。 Robert 是 HTML5 和开放网络的坚定支持者,自 1999 年以来一直致力于 Web 前端开发 - 在瑞典和纽约市。 他还定期在 http://robertnyman.com 上发布博客,热爱旅行和结识新朋友。

更多 Robert Nyman [名誉编辑] 的文章…


13 条评论

  1. Eric Lawrence

    很好地总结了除构建之外,维护一个受欢迎的项目所需要做的所有工作。

    2013 年 5 月 6 日 上午 10:03

  2. Venantius

    我认为值得指出的是,Ruby 网站上的代码示例是从一个选择中随机选择的; 有些比其他的好;)

    2013 年 5 月 6 日 上午 11:26

  3. Catincan

    作为此过程的一部分,不要忘记为对您的作品感兴趣的人提供与您保持联系的方式。 当然,社交媒体也很好,但项目页面上的可选电子邮件表格是一个更好、更直接的保持联系方式。

    2013 年 5 月 6 日 下午 1:18

  4. Joe McTee

    +1 支持在当地用户组会议上发言! 作为 UG 协调员,我可以保证我们一直在寻找演讲者,并且可以真正帮助传播消息。

    2013 年 5 月 6 日 下午 8:06

  5. Dor Laor

    写得很好,迫不及待地想要发布我们的作品的那一刻

    2013 年 5 月 7 日 上午 1:26

  6. Catherine Bullard

    我正在进行一项公共关系工作,以将我的用户带到一个会议上,并描述从餐巾纸到我服务的庞大 Oracle ERP 的 20 年开发历程。 我使用电子邮件和面对面的组合在大型员工队伍中开展工作,在那里可以举行会议,但我们将在今年夏天“庆祝” 20 年的卓越! 您必须吹嘘您系统的优势!

    2013 年 5 月 7 日 上午 9:05

  7. Khanh Nguyen

    好文章! 在开始任何人的项目之前,必备的摘要。

    2013 年 5 月 7 日 下午 3:28

  8. Stephen8601

    另一种让您的项目/程序广为人知的好方法是将其副本赠送给朋友、同事、妈妈、爸爸、兄弟姐妹等。 也许您的朋友圈,然后是他们朋友的圈子,然后是他们朋友的朋友的圈子等等,可以真正地将您的名字传播出去,在广阔无垠的天空中。 2 度理论,即每转 2 度就会遇到你认识的人,而他们认识的人也许是将某件事传播出去最广阔的方式。

    很棒的帖子。

    2013 年 5 月 7 日 下午 4:47

  9. linda

    提供的信息很好,谢谢

    2013 年 5 月 9 日 上午 5:02

  10. George

    “...不受欢迎,在一个 GitHub 仓库中...” 我想您在那里就准确地指出了问题。 我一直相信将我的代码作为简单的 tarball 或 .zip 文件在我的网站上发布并托管,完全没有使用 GitHub。

    在开始时使用 GitHub,您就是在屈服于权力,浪费宝贵的时间。 为了改变这种情况,我建议尽可能长时间地托管您自己的代码,然后再迁移到 GitHub。

    2013 年 5 月 13 日 下午 11:41

  11. David Higgins

    我最近上传了一个屏幕截图,解释了我在推广开源项目时使用的一些技巧

    http://www.youtube.com/watch?v=6U3z-PqEr5k

    2013 年 5 月 14 日 上午 9:48

  12. Mathew Porter

    不错的文章,真正涵盖了基础。 将您的代码放在 GitHub 上,并可能允许贡献者开发和改进它,对于扩大您的覆盖范围非常有用,因为贡献者拥有大量渠道来分享它。

    2013 年 5 月 18 日 上午 5:36

  13. jacob tolosi

    这个词非常全面,这是一篇不错的文章,真正涵盖了基础,将您的代码放在 GitHub 上,并可能允许贡献者开发和改进它,对于扩大您的覆盖范围非常有用,因为贡献者拥有大量渠道来分享它,实现项目的最终目标。

    2013 年 6 月 4 日 上午 1:23

这篇文章的评论已关闭。