10年开发,10条经验:怎样成为一名成功的开源开发者?

ICM42670-P嵌入式开发实战:从寄存器配置到姿态解算全解析 本文全面解析ICM42670-P高性能6轴MEMS运动传感器的嵌入式开发实战,涵盖寄存器配置、数据采集滤波、低功耗优化及姿态解算算法。通过详细代码示例和应用案例,帮助开发者快速掌握从硬件对接到姿态跟踪系统的完整开发流程,适用于可穿戴设备和智能家居等低功耗应用场景。 阅读详情

作者 | 席时鉴

大江东去浪淘尽。

Linus Torvalds创立的Linux无疑是开源史上最成功的例子之一。从1991年的一个个人项目开始,直到发展为现今的Linux帝国,Linus一直作为一名开发者活跃在第一线。colors.js和faker.js(在npm上月度下载量超3千万)的作者Marak Squires因为对“免费给福布斯500强工作”而忿忿不平,故意破坏了自己的项目,然后退出了开源开发。

为什么他们的结局如此不同?SpiderFoot的作者Steve Micallef在最近的一篇博客或许能给出一部分答案,他在文中给大家分享了他对于成功开源项目的理解和应该保持的思维模式。SpiderFoot是一个开源智能(OSINT)自动化工具,在很多信息安全相关的书和训练课程中都有提及,截至撰稿时在GitHub上有7.6k star。自2011年创立以来,Steve十几年如一日地活跃在开源社区,并成功地基于免费的开源软件推出了商业化版本SpiderFoot HX。

steve

Steve Micallef

怎样做成功的开源开发者?

在这10年里,Steve总结了他吸取的10条经验教训,如下:

1. 将软件开源常常有意想不到的回报

诚然,写开源软件是为了不图回报地把代码分享给所有人免费使用,但作为开发者,Steve不认为自己仅仅是在“用爱发电”。他的收获有:

  • 见到用户的感激之情带来的成就感。多年以来,有上千的用户向他致谢说SpiderFoot对他们有多么大的帮助,就凭这一点就让他备受鼓舞。

  • 自己编程水平的提高。在不断完善项目和解决用户问题的过程中,他学会了像一个好的工程师那样思考,这也帮到了他作为产品经理的正业。

  • 结识了很多大牛。这个项目让他认识了一些优秀的同行程序员,在他的求职过程中也起了很多次作用。

  • 提供了商业化项目SpiderFoot HX的商机。

除此之外,开发SpiderFoot还锻炼了他的自律能力,加强了时间管理能力,等等等等。

2. 做开源项目不能半途而废

大家是不是都有这样的经历:我们有一个需求,去网上找到了一个开源的工具,结果发现最后一个commit是好几年前?大多数开源项目的失败都缘于开发者不想继续维护下去,因此如果我们能坚持不懈地贡献代码,可以说我们就已经成功一半了。

3. 先把成品交给用户,再去考虑优化

Steve开始写SpiderFoot的时候,过度关注了代码质量、单元测试和文档,但最终还是决定先把它写出来再说。事实证明,如果他要坚持做到十全十美再把成品交付给用户,发布时间就会晚很久,他的程序也就不会被这么多人使用了。最好的方式是先尽快做一个可用的版本拿出来;之后有的是时间优化,甚至还可以重写。

4. 抱有更广泛,更长远的目标

写开源软件没有一个确定的,“到此为止”的终点;因为技术在不断进步,代码有不断提升或重构的空间。并且随着项目的增大,用户的需求和遇到的问题也会越来越多。甚至可能还会出现竞品。

Steve给自己设立的目标有:

  • 做出一个让自己自豪的创造性产品

  • 不断磨炼自己的技术能力

  • 维护SpiderFoot,使之成为行业内开源自动化工具的首选

  • 成功地将项目商业化

这些目标是宽泛的,而不是“我要做出哪些功能”,因而他能保持持续开发的热情。

5. 时间挤一挤就会有

Steve本人有一个妻子、三个孩子,和一份全职工作。当别人听到这些时,总会很惊奇:“你是怎么有闲暇时间维护一个开源项目,还把它做成一个生意的呢?”他没有超能力,也不是天才,他只是在坚守以下几条:

  • 如果有能够不被打扰的大块时间(比如清晨或晚上的几个小时),就用来编程。

  • 尽可能不看电视,不刷手机(除了用社交媒体推广他的项目之外)。

  • 如果没法编程,就把时间用来学习Python,为SpiderFoot查找新的信息源,研究同一领域内的其它程序等等。

  • 让编程成为一个自发的习惯。

6. 没人关心程序单元测试的覆盖率

换句话说,用户只在乎我们的成品能不能用(参见第3条)。如果这一点能保证,那我们的单元测试有疏漏或是文档不清晰都不是大事。在10年中,Steve收到对SpiderFoot的代码风格或单元测试的抱怨次数扳着手指头就能数过来。当然,如果用户真的指出了问题,也不应该直接忽视他们。

7. 为产品做营销不是件丢脸的事

虽然说如果我们的产品足够好,用户会主动帮我们推广,但是在项目伊始,还无人问津之时,做一些市场营销还是有必要的。首先要明白我们的用户都在什么平台上(推特?领英?抖音?),然后借助平台上有影响力的人(比如博主)来推广我们的项目。Steve说,大家会惊讶于他们对你们项目的接受程度,因为他们欣赏你们为帮助他人做出的努力。

另外,一个好的README文件也是不可或缺的。

8. 确保雇主没有异议

保护我们在工作时间之外所做工作的知识产权法因国家/地区、雇主与雇主而异。当今大多数技术和技术友好型公司都应该会批准个人的副项目,但Steve Micallef提醒,应该在开始为开源项目贡献之前先弄清楚这件事情。

9. 要重视社区的发展

Steve说,这可能是最重要的一条,也是他自己花费最多时间才学会的一条。最初,他只为SpiderFoot写了文档,以为这就可以满足用户了。但他发现,如果要让项目成功,仅是文档远远不够。

社区的组建和发展指的是为用户提供论坛和资源,以便他们深入了解项目,与他人联系并在需要时获得/提供帮助。一个活跃、庞大的社区的作用是无可比拟的。

为了培育一个社区,可做的事情比如:

  • 为用户提供文档、教程视频、博客文章等

  • 与用户积极互动,解决他们的问题

  • 利用Slack,Discord等平台创建群聊,便于用户相互提问回答

  • 在会议上推介自己的项目

10. 享受维护开源项目的过程

Steve认为,项目的开发是一件任重而道远的事(参见第4条),除非项目非常简单。如果我们在开发的过程中没有得到享受,我们最后很有可能会承受不住来自不断更新、铺天盖地的issue和pull request等等的压力。因此从最开始,开发者就应该以一种轻松的态度应对,不慌不忙地添加新功能,处理issue和pull request。就算这样使得开发的效率降低,但是我们不会有任何愧疚感,这才是做开源项目的真谛。

没人规定你必须合并每个pull request,响应每个issue或者做任何你不想做的事情,你也不需要给出理由。强逼着自己做任何事情只会慢慢磨灭你的热情,欲速则不达!

结语

这是Steve Micallef对成为一名成功开源开发者的看法:持之以恒,目光长远,重视营销,确保项目合规,发展社区,注重结果,但享受开发的过程。各位小伙伴对于Steve给出的总结有什么看法?在大家自己使用或开发开源软件的过程中,有过哪些心得体会?大家认为该如何成为一名成功的开源开发者?欢迎在评论区中分享你的意见~。

基于MATLAB的小波包分解(WPD)算法详解 本文详细介绍了基于MATLAB的小波包分解(WPD)算法。WPD作为信号处理领域的重要技术,继承并发展了小波分析的优点,通过正交镜像滤波器组将信号分解为不同频率子带,形成完整的二叉树结构。相比传统小波变换,WPD具有更精细的频带划分、自适应基选择能力和更高的灵活性,特别适合分析非平稳信号。文章系统阐述了WPD的数学原理、算法实现流程及其在机械故障诊断、生物医学信号处理等领域的应用。通过MATLAB代码示例展示了WPD的具体实现方法,并分析了不同参数设置对分解效果的影响,为工程实践提供了有价值的参考。 阅读详情

相关推荐

Windows中的TLS 1.2启用方法(IIS、C#、.Net framework)

折腾几天了windows中的tls1.2启用方法!特此记录一下 开发背景: 在一个用.net framework 2.0开发的客户端程序里面嵌入功能调用第三方物联网相关接口,服务器上有一个restful接口用于接收第三方上报的数据及处理,最后再调用第三方的物联网相关接口。本机开发环境Windows 10,客户服务器是Windows Server 2008 R2。 第一次写这种物联网相关的接口调用,而且第三方提供的文档比较简单,最基本的报文示例都没。开发环境里面各种摸索一步一个坑,首先在发送HTTP请求前

dl1314ld的博客 1万+

【Java经验分享篇01】小白如何开始学会看开源项目?

文章目录前言1.理解开源1.1.什么是开源?1.2.开源的定义1.2.1.开源软件优点1.2.2.经典开源软件案例1.3.关于开源协议1.3.1.如何选择开源协议2.如何查找开源项目2.1.一个仓库项目的基本解析2.2.关于开源项目高级搜索2.3.根据仓库标题、描述搜索2.4.按照地区和语言进行搜索2.5.根据仓库属性条件搜索2.6.根据个人或某组织进行搜索2.7.根据仓库的LICENSE搜索2.8.热门3.开源项目解析3.1.查找相关开源项目3.1.1.开源项目3.2.如何分析一个开源项目3.2.1.观察

当下的快乐永远最简单! 1951

【机器人开发】四足机械狗(并联结构)URDF建模与Simscape仿真全流程解析

本文详细解析了四足机械狗(并联结构)从URDF建模到Simscape仿真的全流程开发。内容涵盖SolidWorks建模要点、URDF文件导出与优化、Matlab/Simscape环境搭建,以及并联机构特有的运动控制和步态规划实现,为机器人开发者提供了一套完整的解决方案。

weixin_30642561的博客 531

怎么他们都有开源项目经历|手把手教你参与开源

耐心看完这篇文章,你会发现其实参与开源并不遥不可及。在文章的后半部分,白泽将分享自己在不同社区参与的一些开源和之前在 Gitea (GitHub🌟40.3k) 公司实习的一段时光。

qq_41468830的博客 1499

TI C2000 DSP CLA实战:用F28069的协处理器实现ADC采样与PWM相位实时联动控制

本文详细介绍了如何利用TI C2000系列DSP的CLA协处理器在TMS320F28069上实现ADC采样与PWM相位的实时联动控制。通过CLA的零周期上下文切换和硬件级任务触发特性,显著提升了电机控制和数字电源应用的实时性能,特别适用于需要亚微秒级响应的场景。

weixin_30932215的博客 3968

Pytorch学习笔记(III)——提取特征

目录一、引言二、具体步骤1、参数模型2、网络结构3、参数载入4、特征提取器5、读取图片三、完整代码 一、引言   深度学习在许多任务中主要充当着特征学习的作用,而学习完的特征才是后续应用的一个关键。本文将主要介绍,如何提取任意目标层的特征图。   本文以输入数据为图片为例。 二、具体步骤 1、参数模型 博主使用了ResNet50训练了一个人脸识别的网络   训练完成的深度学习模型,我们会保存一...

lockonlxf的博客 2645

我的开源项目与开源经历分享

一位93年的前端开发者从一个开源门外汉变成了一个开源发起者,项目已经1K+ Star,分享一下自己的开源项目和开源历程,供大家参考。 逐字稿

nihaojob123的博客 6391

HMC5883L磁力计在STM32F4上的I2C驱动与数据校准实战

本文详细介绍了HMC5883L磁力计在STM32F4平台上的I2C驱动开发与数据校准实战。通过解析寄存器配置、数据读取处理和椭圆拟合校准算法,帮助开发者实现精准的地磁测量,特别适用于无人机导航和机器人系统中的航向确定与陀螺仪漂移修正。

2y3u4i5o6p的博客 1038

5个开源的Java项目快速开发脚手架,项目经验有了

今天推荐几个 Java 项目快速开发脚手架,解放双手 ✋ 从现在开始。 以下推荐项目都是码云上的优质项目,并且都是项目快速开发脚手架,代码质量什么的无法保证能有多好,毕竟很多也是个人开发,或多或少也有个人色彩影响。

lujiawei00的专栏 6330

W25N01GV SPI NAND Flash驱动开发避坑指南:详解2KB缓冲区机制与状态寄存器正确用法

本文深入解析W25N01GV SPI NAND Flash芯片的2KB缓冲区机制与状态寄存器正确用法,提供STM32 HAL和ESP-IDF项目的实战解决方案。涵盖双阶段操作原理、状态寄存器深度解析、时序控制优化及跨平台驱动设计要点,帮助开发者避免常见错误并提升存储性能。

aizhouqian5537的博客 640

西门子S7-1200/1500 PLC编程与应用技巧

西门子S7-1200 PLC是一款紧凑型的控制器,适用于小型到中型的自动化控制任务。紧凑设计:集成了I/O模块,减少了控制柜的空间需求。高性能:高达25µs的扫描时间,能够快速响应。模块化扩展:支持扩展输入输出模块、通信模块和智能模块,满足不同的应用需求。多种编程语言:支持Ladder图(梯形图)、功能块图(FBD)、结构化文本(ST)等多种编程语言。西门子S7-1200与S7-1500 PLC是强大且灵活的工业控制系统,适用于各种自动化应用。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 2677

个人搞开源,挺难的

为什么80%的码农都做不了架构师?>>> ...

weixin_34064653的博客 288

软考高级-系统架构设计师 论文范文参考(一)

系统架构设计师 论文参考

片言可决讼,半纸能缚龙 4346

成为最差开发者的10条建议

昨天在devto上面看到一篇挺有意思的文章,一位国外开发老哥发表了一篇关于如何成为最糟糕开发者的10条建议,相比其他正向建议如何成为一名优秀程序员类的文章更为深刻。下面我们一起来看看这10条建议都是啥! Top 10:在做任何事情之前,你需要100%的了解JavaScript 这是一个非常好的建议,可以应用到任何地方。除非你是该领域的第一专家,否则你不应该做任何事情,即使不是在你的国家,至少在你周围的圈子里。不然你怎么确定你不会搞砸任何事情?否则你怎么确保自己不会被嘲笑? 如果你开始得太早,你可能会犯一个

程序猿DD 1万+

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

如何成为一名独立开发者

关于如何成为一名独立开发者的个人一些想法

csdn565973850的博客 1114

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

用 Cursor 开发 10+ 项目后,我整理了10 条经验60条提示词案例

✍默语是谁?大家好,我是默语,别名默语博主,擅长的技术领域包括Java、运维和人工智能。我的技术背景扎实,涵盖了从后端开发到前端框架的各个方面,特别是在Java 性能优化、多线程编程、算法优化等领域有深厚造诣。目前,我活跃在优快云、掘金、阿里云和 51CTO等平台,全网拥有超过10万的粉丝,总阅读量超过1400 万。统一 IP 名称为默语或者默语博主。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 2万+

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

【项目经验分享】成为一名优秀的开发者需要具备什么?

成为一名优秀的开发者需要具备以下多方面的素质和能力:一、技术能力二、问题解决能力三、项目管理能力四、团队协作能力五、创新能力六、职业道德和素养七、技术领域

源代码杀手的博客 2502

你想成为一名核心开发者吗?

-图片源自上次 Ewasm 团队冲刺写码。其中核心开发者只能用 6 号字体写代码。- 虽然核心开发者的准确定义尚存异议,但这个术语一般是指为区块链底层技术(比如底层协议本身或底层密码学技术、 P2P 技术等)做开发的开发人员。至于以太坊,除了指实现各种客户端,还指基础层的基础设施,如扩容技术(分片、Plasma等)、协议(如Whisper和Swarm) 以及就我而言的 EVM。 我...

跨链技术践行者 1万+

如何成为一名优秀的初级开发者?

“如果你无所作为,那么拥有再多资历也毫无意义。”对于初级开发来说,哪些是必须知道的道理呢? 作者 |Ravi Shankar Rajan 译者 |弯月,责编 | 郭芮 出品 | 优快云(ID:优快云news) 以下为译文: 明年将是我从事编程职业的第15年。我的天,不知不觉已经15年了! 回想起来,我仍然记得我成为一名初级开发人员的第一天,我走过一间间灯火通明的...

优快云资讯 1298

如何才能成为成功的独立游戏开发者?

不久前我收到一封邮件,对方在邮件上问我“如何才能成为一名独立游戏开发者?” 虽然我的回复是全力以赴,但是我却不清楚他们真正寻求的答案是什么。我们经常会被问及类似的答案,所以我决定针对这一点进行阐述,并提供一些有帮助的建议。 关于我们 Mode 7是总部位于英国牛津的独立开发工作室。我们创立于2005年,并在2007年发行了一款不是很成功的多人战争游戏《Determinace》。 在那之后,我们于2011年又发行了《冰封触点》。 Frozen Synapse(from mode7games)

专注MMORPG开发 2793

如何成为一名成功的 PHP 开发者

当今的网络应用开发市场,PHP 一直是其中最受欢迎的语言之一,许多优秀的网络应用程序都是由 PHP 开发人员设计和开发的。

Mr. 亮先生的博客 797

如何成为一名独立游戏开发者

有人通过邮件问我是有关于独立游戏开发者的一些问题,我尽最大努力给与了回复,但我仍不是十分清楚他们究竟想了解什么,我觉得有必要写篇文章,希望能给大家一些有用的建议。 有人通过邮件问我是有关于独立游戏开发者的一些问题,我尽最大努力给与了回复,但我仍不是十分清楚他们究竟想了解什么,我觉得有必要写篇文章,希望能给大家一些有用的建议。 我们是谁? Mode7是英国牛津的一个开发工作室,

Matthew_Chen1008的专栏 2006

40 岁的时候,我转行成为一名前端开发者!

以下文章来源于freeCodeCamp ,作者richard1230 40 岁的时候,我转行成为一名前端开发者。在此之前,我没有任何技术相关的工作经验,没有相关专业学位。我完全是通过免费的资源自学编程,几乎没有为此花费什么钱,而且学习的时候我做着一份全职工作。 “外面下着雨,我正坐在马德里市中心的一家咖啡馆里,一边喝着咖啡一边敲着键盘。不久后我将以前端开发者的身份开启全新的职业生涯。就在 10 个月前,我还在 Granada(西班牙格拉纳达大学)当英语老师,对编程一窍不通。而现在,我即将成为一名软件开发.

BOM485480的博客 4165

作为一名开发者,我在Github上最爱的开源工具(2025年最新清单)

2025年的开源生态比以往任何时候都更加强大。最让我欣喜的是,这些工具让开发者无需依赖封闭平台或臃肿的企业套件,就能轻松构建高质量的软件。这份清单上的所有工具均托管于GitHub,完全开源,旨在解决开发者实际痛点。从AI编程助手到PaaS替代方案,再到单体仓库工具,这些项目正在重塑当今的软件开发方式。如果你正在探索2025年的GitHub开源工具,这些精选项目堪称理想起点。

koolie_bd的博客 4257

如何成为一名优秀的开发者?

原文链接:http://www.sitepoint.com/good-developer/

Aylee_Liu的专栏 2348

如何成为一名成功的程序员?

技术文档也是我自己整理的,包括我参加大型网安行动、CTF和挖SRC漏洞的经验和技术要点,电子书也有200多本,由于内容的敏感性,我就不一一展示了。作为开发人员,你始终是团队中的一员,因为你只有在设计师、业务人员、分析师和销售人员等团队成员的帮助下,才能非常高效地实现你所期望的成果。不妨尝试构建一些新的应用程序,如游戏,拼图,聊天应用程序等,这将有助于使你更加热爱你的工作。网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己录的网安视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

Python_paipai的博客 1320
上一篇: 近7成开发者无开源收入、最想操作系统开源、Java最受欢迎 | 揭晓中国开源开发者现状
下一篇: Apache新晋董事姜宁:从Apache Member到Apache董事,他花了11年
开源头条
博客等级 码龄13年 1475粉丝 226原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值