工作中的开源

2020-10-27 00:56:34

30多年前,我在十几岁的时候就开始学习如何编程,从20世纪90年代初开始,我就一直从事软件工程师和开发人员的工作。我作为开发人员的第一份工作是在1993年。从那以后,我为许多公司工作,多年来我一直在开发大量(专有的)软件产品和设备。含义:我的人生当然不是从开源开始的。我必须自己挣来。

当我20岁的时候,我在瑞典服过兵役(当时是强制性的)。在忍受了这一切之后,我申请了大学,同时获得了IBM的一份工作。我犹豫了一下,但还是接受了这份工作。我原以为我可以晚点上大学--但是生活发生了其他转折,我从来没有这样做过。我一天也没上过大学。我并没有后悔。

我在80年代中期学会了在Commodore 64上编程,从那以后,软件开发一直是我的主要爱好之一。它教会我的一件事是每天花几个小时在家里的电脑前,这件事我至今仍随身携带。

1998年春天,我重新命名了当时我最喜欢的小项目,并发布了有史以来第一个Curl版本。这个故事我已经讲过很多次了,但从那时起,我就把两个小时左右的业余时间都花在了这个项目上--20多年来每天都是如此。而白天还在做软件工程师。

随着时间的推移,curl逐渐变得流行起来,并吸引了更多的用户。没有任何突然的时刻,我发现了黄金,一切都起飞了。当我和我的其他项目成员不断改进和打磨卷发时,它只是慢慢地取得了进展。在某个时间点上,我碰巧注意到curl和libcurl将出现在越来越多的确认以及产品和设备的开放源码许可集合中。

我想强调的是,我作为合同和顾问开发人员工作了很多年(超过20年!),主要是在专有软件和自定义解决方案方面,在我设法找到一个职位之前,我可以将主要编写开放源码作为我工作的一部分。

2014年,我加入了Mozilla,并获得了从事开源项目Firefox的机会,以此为生--而且完全是在家里做。这是在我的职业生涯中,我第一次真正把大部分时间花在公开并向世界提供的代码上。他们甚至允许我把部分工作时间花在curl上,即使这对他们没有真正的帮助,curl也不是任何Mozilla工作或产品的基本部分。还是很棒的。

我在Mozilla获得了这份工作,这在很大程度上要归功于我在可移植网络编码方面的多年和长期经验,以及在这个级别上成功地运行了一个开放源码项目。

我与Mozilla的工作安排使我有可能在curl上花费更多的时间,除了每天两个小时的空闲时间(现在还在继续)。在Mozilla,没有人太关心(我对Curl的工作),那里甚至没有人问我这件事。我以开发火狐为生。

对于任何想要将开源作为工作一部分的人来说,在一家已经做了大量开源工作的公司找到一份工作可能是最好的前进道路。即使这可能也不容易,而且这也可能意味着您将不得不接受一些您自己可能并不完全喜欢的开源项目。

2018年末,我退出了Mozilla,部分原因是我想尝试“真正地”使用curl(还有其他一些原因,我不会在这里赘述)。当时,Curl已经二十多岁了,比以往任何时候都更多地使用Curl。

我现在为wolfssl工作。我们向公司出售CURL支持和相关服务。公司付钱给wolfssl,wolfssl付给我工资,我就能得到餐桌上的食物。只要我们能让足够多的公司相信这是个好主意,这就行得通。

当然,绝大多数的curl用户不需要支付任何费用,而且永远不会支付任何费用。我们只需要一小部分公司就可以做到这一点--而且这似乎正在奏效。我们帮助客户更好地使用curl,我们让curl为他们做得更好,我们让他们通过这种方式发货更好的产品。这是一场双赢。多亏了这一点,我可以整天从事开源工作。

工作日正常的一天,我早上7点前起床,和我的家人一起吃早餐:我的妻子和我的两个孩子。然后,我拿起当天的第一杯咖啡,走上13级楼梯去我的“办公室”。

我坐在我的主开发(Linux)机器前,有两个27英寸的屏幕,然后开始工作。

我是卷发项目的负责人。这意味着许多问题和决定都落到了我的头上,我需要对此发表意见或发表意见,我的首要任务是确保尽快解除对这些情况的阻止,这样想要使用curl的开发人员就可以继续这样做。

因此,我每天都会阅读和回复关于curl的电子邮件,因为我是清醒的,并且可以访问网络。当然,传入的消息实际上很少需要立即响应,然后我可以将它们排队,稍后再进行。我也试着尽快阅读和评估所有新的卷曲问题,看看是否有什么紧急的事情我应该立即处理,或者想办法继续处理它们。

我通常有一组bug或功能要处理,所以当没有留下令人担忧的电子邮件或gihub问题时,我会立即上下文切换到curl源代码树和我正在处理的特定分支。我通常有20-30个不同的发展分支,处于不同的阶段和成熟期。如果我被某件事卡住了,或者如果我为其中一个创建了需要时间来完成所有CI工作的Pull-Request,我就会切换到另一个。

当我决定要做什么的时候,客户和他们的需求当然是优先的。例外可能是报告的安全漏洞或其他真正严重的错误,但值得庆幸的是,它们很少见。但在那之后,我会随机应变,做我认为有趣的事情,以及我认为用户可能会欣赏的事情。

如果我想要继续做某事,为了我自己或客户的利益,这需要修改或改进其他项目中的其他软件,那么我不会回避为他们提交拉回请求-或者至少提交一个问题。

是的,我仍然把我的空闲时间花在开源上,主要是卷曲。这意味着我每周经常要花50-55个小时在卷发和卷发相关的活动上。但我不计算或衡量工作时间,我也很少向任何人报告。这是一部充满爱的作品。

很多人会说,因为生活、家庭、孩子等原因,他们没有时间。这些年来,我当然非常幸运,有机会和能力把所有的时间花在我想做的事情上,但我们不要忘记,人们通常会把很多时间花在自己的爱好上,比如看电视、玩电脑游戏和和朋友社交,为什么不呢?那就是睡觉。如果你减少所有这些事情(是的,包括睡觉),很可能会有机会。这通常是一个优先顺序的问题。我已经把业余时间开发作为我生活中的优先事项。

任何使用curl或libcurl的公司-而且数量很多-都可以从我们那里购买支持,而不是浪费自己的时间和资源。我们wolfSSL可能已经在cURL方面做得更好了,我们可以更快地找到并解决问题,这最终会带来更便宜、更好的长期效果。

上面这张照片是由我的妻子安雅·斯坦伯格拍摄的。这是我在当地的森林里,2020年夏天。