作者归档:白宦成

关于白宦成

独立开发者, 自由职业者, 写作者

开源人是如何培养的?

最近我在华东师范大学的王伟老师那边去做了一下项目的宣讲,介绍了一下 Linux 中国的开源激励解决方案,希望能够吸引一些学生参与到项目中来,参与项目开发、参与开源的过程。

在这个过程中,我在想一个问题,究竟什么样的方式,才可以培养出一个开源人?

我一直自诩是互联网原住民、开源原住民,虽然我并不是最早接触开源的,但是我自从 2011 年开始,就不断在做和开源相关的事情,从早期的使用开源,到中期的参与开源,到后期的贡献开源,和如今的推广开源。我自开源社区成长,也因此成为一个活跃的社区人。我希望能够有更多的人和我一样,加入到开源社区中来。那么,我们应该如何培养出一个像我一样的开源人呢?
思考再三,如果用一句话来描述,那么就是
开源人应当是由开源社区教育出来的,而不是某一个开源人教育出来的。
每一个开源人不是因为他的老师是开源人而是开源人,每一个开源人都因为他自己在开源世界投入了足够的精力,最终成为了一个开源人。
对于开源人的培养,应当以开源的方式进行,这里就不得不说一个项目了。FreeCodeCamp 拥有一个全 Github Star 最多的项目,就是 freeCodeCamp/freeCodeCamp 。如果你在 FreeCodeCamp 学习编程,当你学习到 Github 的相关章节时,就会告诉你,你需要去给这个项目点 Star ,去贡献 PR ,让你从一开始就体验开源、学习开源。
对于我们来说,开源的教育也当是如此(当然,王老师的课程中引入了开源项目来做 Mentor ,本身就是在实践这种理念),我们需要让我们的程序员能够知道开源、了解开源、理解开源、参与开源。
长期以往,我们的程序员中,也会涌现出越来越多的开源世界原住民。

乐在其中,才会无敌精彩:评台湾开源人之精神面貌

源自长荣航空广告

COSCUP参会后记中,我提到,因为提交的议题得到了通过,因此我成功的抵达台湾,参加了 2019 年的 COSCUP,并在会后,进行了一系列的开源访谈,以期促进两岸的开源软件、开源社群、开源人的交流。

这次的台湾之行,也让我看到了两岸在开源之间的差异,因此,希望能够通过这一篇文章,让更多的大陆开源人,看到不同的世界,了解多元的开源世界。

 Just For Fun 的开源事业

Linux 之父 Linus Torvalds 有一本书 《Just For Fun》,在中国大陆的书名是 《只是为了好玩》(也有译作一生只为寻欢笑),这一句话,在我看来,很好的表现出台湾开源人的精神风貌。

在台湾参会期间,令我印象最为深刻的,莫过于所有议程结束后的 Lighting Talk。

Lighting Talk,闪电演讲,每个人都只有 5 分钟完成自己的演讲,如果没有完成,就会被主持人拔掉电源,强制停止演讲。在这五分钟里,每一个演讲者都竭尽所能,将自己的演讲内容完成。

现在听起来似乎还很正常?但是当你看到演讲者的题目,就会觉得不那么正常了。

今年的 COSCUP 的 Lighting Talk 的主题是这样的

  • 聖家堂與軟體開發 by hlb
  • 開源與 COSCUP 起源圖文 by 唐唐
  • 不務正業工程師成長之路 by 聽風
  • How to get beer using Pinpoint by HyunGil Jeong
  • HackMD feat. XXX by 黃鈺凱
  • 如何(物理上的)延長你的工程師生涯 by LSChyi
  • 機房監控酷炫上手 by Haraguroicha Hsu
  • 我在Taipei Ethereum Meetup的跳坑滅頂全記錄 by Jerry Ho
  • 基於數據科學的房地產價格預測,做成Chat bot應用,最後如何被政府一句話終止開發 – 柯克
  • 如何才能做好自己的工作Side Project by 白宦成
  • 4分鐘看Free list的演進 by Julian
  • 報到 App – OPass 專案回顧及展望 by Denny Huang

你会看到,大家提供的议题并不像我们在大陆所提交的议题那样,高端大气上档次,反而是十分的接地气,大家在起标题时,选择的也是尽可能有意思的话题,并以此来吸引参会者来听。

或许你会想,只是一个 Lighting Talk,随意一点也正常,正式的议题肯定就很正经了,然而,并不是。

正式的议题是这样的:

  • 懶惰鬼的函數式爬蟲 ー 以 Tezos 應用需求為例
  • 當 Rails 遇上 Docker,環境部署原來是這樣!?
  • 開拓者們建立鐵道的辛酸血淚史
  • 前端開發的再次典範轉移 – 如何走出混亂並讓複雜變的可掌控
  • 你媽知道你在用 PostgreSQL 看 PTT 嗎?

是的,正式议题也并不那么正式,也带有一丝戏谑和玩笑。回过头来看我们的大会的议题,支撑亿级XX的XX平台架构实践XXX面对亿级并发场景的组件体系设计,此类型的议题数不胜数。一场大会,从头到尾都是亿级流量,如今的架构师,如果没有扛过亿级流量,都没有资格上大会。

这种差异,使得两岸的开源会议的参与者完全不同。大陆的会议主题大多高端大气上档次,其门票也一样的高端大气上档次,使得大家根本提不起兴趣来自费参会,加上会议总是会在工作日举办,导致如果你想要自费参会,所要付出的成本是极高的。而台湾的会议主题则相对更加的接地气,门票一样接地气,针对开源贡献者,更是提供的免费的门票,让你可以开开心心参会。

台湾开源推崇的便是 “Just For Fun”,首先先要让开发者 Happy ,然后才是考虑产品的商业利益,让爱好,变为财富。首先学会快乐,再学会成功。

而大陆开源推崇的更多是“利益至上”,我如何让我的产品击败别人的产品?开发者先要考虑商业的利益,再去考虑自己的爱好。从一开始,便与利益挂钩,后续,便再也难于利益脱钩。

当然,我不能只是一味的说,台湾的开源更活泼、更有生机,我们也需要看到其后的原因,并提出相应的解决方案。

台湾之所以更活跃,首先应当是开源项目主要由个人及小企业主导。对于个人主导的开源项目来说,因为没有重重的 KPI,所以拥有更多的活力,开发者会大量投入自己的精力去完成、完善、推广一个项目。对于小企业主导的项目,则是希望帮助小企业在残酷的商业竞争中获取一定的竞争优势,有一个社区所认可的开源项目显然比没有要好。此外,这些小企业的团队领导人大多是从工程师起来的,所以对于开源社区、开源贡献是有认同感的,他们会思考,我的项目能够活下来,是得益于开源社区的贡献,因此,我需要也为社区做一些贡献。

而大陆的开源项目则更多是以企业主导,背负着特定的 KPI,大家做开源的动力难免不足。一方面,工作的压力使得不少人在工作之余,根本没有时间去做开源项目。另一方面,企业主导的开源项目因为也会背负一些从开源到业务引流的 KPI,也使得整个过程失去了快乐与活力。同时,大陆的企业领导者大多不是工程师,而是产品、商务等岗位,这会使得他们对于开源社区、开源软件没有认同感,他们也不会觉得,自己使用了开源软件,就需要为开源社区做出贡献。此外,大陆的开源教育也做的并不好,我们太过于看重成败,使得原本一些不错的项目,可能因为惧怕失败而放弃开源,如果我们不去看重成败,而是将更多的心思放在开源本身的价值,或许我们可以做的更好。

就像前面的长荣航空的广告中所言,”在学会赢之前,先学会享受了玩的乐趣”,也因此,才有了“乐在其中,才会无限精彩”。对于大陆的我们,或许需要找回自己最初的初心,享受生活、享受工作,让自己的工作不再是抑制成长的压力,而是推动我们前进的动力。

当然, Just For Fun 并非全然没有问题的,就如 Skywalking 的创始人吴晟老师所言,开源不能仅仅是 Just For Fun ,如果没有一个好的商业目标,一个好的开源项目可能随时因为创始人的离去而失去维护者。相比之下,一个好的商业目标虽然看起来与起初的目标相冲突,但是终归确保了开源项目的长期运转,也不失是一种贡献。

庄表伟老师补充:

 国内也是有一些比较happy的技术和开源大会的,少一些就是了

2019 年 8 月月度总结

TLDR

这个月最大的事情莫过于去台湾了,去台湾的 10 天,让我有了全新的体验。

在台湾,我见到了不一样的人生、世界、开源观,当然,也认识了不少的台湾好朋友,希望以后可以再有机会去一趟台湾。

月度总结

工作

辞职了,开源新一轮求职面试

  • 杭州某农业互联网创业公司,之前在网易的同事介绍的。
  • 广州微信团队
  • 腾讯云 Serverless 团队
  • 腾讯云 小程序云开发团队
  • 深圳某珠宝 SaaS 团队(腾讯的朋友出来创业的)
  • 南京某安全公司(LCTT 的朋友介绍的)
  • 支付宝小程序团队(阿里的朋友内推的)

不过,最后因为自己下半年的会议事情太多,最后还是放弃了固定工作,暂时考虑以 Freelancer 的形态来过活。

说起来,工作年限太短也是个问题,年轻对于我来说,是最大的优势,但,也正是因为年龄,导致我无法获得腾讯的 Offer, 因为太年轻,无法定级,即使按照你的能力,足以定级到 2-3 ,但是因为工作年轻太短,招聘方会被 HR 挑战,为了不给朋友们添麻烦,还是放弃了。

生活

这个月因为去了台湾,大吃大喝了一顿,不过不知道为啥,没有胖,实际上,还瘦了几斤。接下来有空了,要好好开始减肥。

Side Project

  • 这个月并没有花太多时间在 Side Project 方面有太多投入。

写作

  • 本月因为去了趟台湾,拖更严重。

财务状况

其他

  • 本月的最后两天,开始考虑使用 Windows 替代 macOS ,开始整理自己的常用软件,看看有没有什么好的解决方案。

年度对标

读书

  • 《闪电式开发》:很不错的书,不过不知道大陆有没有卖的,因为是我在台湾诚品买的。

旅行

  • 台湾
    • 台北
    • 台南

电影·电视剧

  • 《逃避虽然可耻但却有用》:gakki 真好看

课程学习

  • 知乎私家课:搞定面试,11招带你拿到心仪 Offer
  • 知乎私家课:求职面试通关秘籍,15招搞定高薪好工作

其他实证

  • 投资实证
  • 项目实证

Windows Terminal 的 WSL 配置

我在考虑将自己的笔记本从 macOS 转为 Windows,所以就开始研究 Windows 下我常用的软件的替代品,于是,便试了试 Windows Subsystem For Linux ,这一试,发现 WSL 的确不错,很好用,便下载了 Windows Terminal ,作为自己的新的开发环境。

在使用 Windows Terminal 的时候,我遇见了一个问题,我希望在 Windows Terminal 中添加一个新的配置文件,从而让我的 Windows Terminal 在启动的时候就自动进入 Linux 子系统,因此,在互联网上搜索了一些教程后,我将我自己的配置改成了这个样子的。

{
    "globals" :
    {
        "alwaysShowTabs" : true,
        "copyOnSelect" : false,
        "defaultProfile" : "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",
        "initialCols" : 120,
        "initialRows" : 30,
        "keybindings" :
        [
            {
                "command" : "closePane",
                "keys" :
                [
                    "ctrl+shift+w"
                ]
            }
        ],
        "requestedTheme" : "system",
        "showTabsInTitlebar" : true,
        "showTerminalTitleInTitlebar" : true,
        "wordDelimiters" : " ./\\()\"'-:,.;<>~!@#$%^&*|+=[]{}~?\u2502"
    },
    "profiles" :
    [
        {
            "acrylicOpacity" : 0.5,
            "background" : "#012456",
            "closeOnExit" : true,
            "colorScheme" : "Campbell",
            "commandline" : "powershell.exe",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 12,
            "guid" : "{61c54bbd-c2c6-5271-96e7-009a87ff44bf}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{61c54bbd-c2c6-5271-96e7-009a87ff44bf}.png",
            "name" : "Windows PowerShell",
            "padding" : "0, 0, 0, 0",
            "snapOnInput" : true,
            "startingDirectory" : "%USERPROFILE%",
            "useAcrylic" : false
        },
        {
            "acrylicOpacity" : 0.75,
            "closeOnExit" : true,
            "colorScheme" : "One Half Dark",
            "commandline" : "debian",
            "cursorColor" : "#FFFFFF",
            "cursorShape" : "bar",
            "fontFace" : "Consolas",
            "fontSize" : 11,
            "guid" : "{58ad8b0c-3ef8-5f4d-bc6f-13e4c00f2530}",
            "historySize" : 9001,
            "icon" : "ms-appx:///ProfileIcons/{9acb9455-ca41-5af7-950f-6bca1bc9722f}.png",
            "name" : "Debian Path",
            "padding" : "0, 0, 0, 0",
            "startingDirectory" : "/home/bestony",
            "snapOnInput" : true,
            "useAcrylic" : true
        }
    ],
    "schemes" :
    [
        {
            "background" : "#282C34",
            "black" : "#282C34",
            "blue" : "#61AFEF",
            "brightBlack" : "#5A6374",
            "brightBlue" : "#61AFEF",
            "brightCyan" : "#56B6C2",
            "brightGreen" : "#98C379",
            "brightPurple" : "#C678DD",
            "brightRed" : "#E06C75",
            "brightWhite" : "#DCDFE4",
            "brightYellow" : "#E5C07B",
            "cyan" : "#56B6C2",
            "foreground" : "#DCDFE4",
            "green" : "#98C379",
            "name" : "One Half Dark",
            "purple" : "#C678DD",
            "red" : "#E06C75",
            "white" : "#DCDFE4",
            "yellow" : "#E5C07B"
        }
    ]
}

这个配置项目中,需要注意的是 profiles.[1].commandline 你会发现,我设置的是 debian 这个和很多教程是不一样的,不少教程使用的是 wsl -d debian 这样的,但是实际上,如果你使用的是 wls -d debian ,你会发现,你配置的 startingDirectory 就会失效,但是如果你的启动命令是 debian, 不会影响你的 startingDirectory 的配置,非常舒服。

Reference

  • https://lwz322.github.io/2019/06/01/Terminal.html
  • https://github.com/microsoft/terminal/issues/1183

乐在其中,才会无限精彩:记 COSCUP 2019 台湾行

在 2018 年的时候,COSCUP(Conference For OpenSource Coders, Users & Promoters) 我虽然知道,但因为自己的缘故,没有办法参会,于是在 COSCUP 2019 的消息出来之后,我便主动提交了自己的议题,希望可以去台湾参加一次 COSCUP ,感受一下台湾最大的 FLOSS 社群会议活动。

幸运的是,我提交的两个议题「从 GRANK 到 GITRANK ,我们是这样针对开源项目建模的」和「一个 P0rnHub 周边项目的诞生和成长」都通过了筛选,成功被组委会选中,也便有了此次的台湾之行,有了这篇 COSCUP 后记。

前路坎坷:艰难的台湾之行

停办的个人自由行签注

在台湾之前,我在西藏出差了三个月,因为时间的关系,当时只来得及办理台湾自由行个人签注。在西藏出差期间,因为没有时间回深圳,导致我一直没有办理入台证,后续,8 月 1 日,国台办停办了所有的个人自由行签注,更是让我陷入了十分紧张的状态,担心自己能否前往台湾,参加本届的 COSCUP。

入台证
入台证

幸运的是,在我 13 号回到深圳后, 提交资料,加急办理后,还是成功的在前往台湾前,成功办理了入台证,获取了前往台湾的许可。

艰难的飞行之旅

在确定了议题被选中后,我就订了从香港飞往台湾的机票(毕竟从香港飞比从大陆飞能便宜 1000 左右),但是,后续因为环境原因,我不得不选择退掉我从香港起飞的机票,改为从大陆直飞台湾。

一开始订的票是从广州直飞台北,结果,到了出发的早上,因为前一天晚上休息的时间太晚了,导致我醒来以后,无法赶上从深圳到广州的列车,不得已,我将飞机改签,转而从深圳飞上海转机飞台湾。

马上就要登机飞✈️往台北了
马上就要登机飞✈️往台北了

经过这么一番折腾,最终,我在 8 月 16 日的下午,成功抵达台北。

看到远处的台北 101 大厦了么?
看到远处的台北 101 大厦了么?

Happy Hacking:愉快的 COSCUP 参会体验

Welcome Party

COSCUP 在会议的前一天晚上,安排了会前派对,参加派对的大家可以在 Party 现场见面、聊天,讨论关于开源等一切事务。

邮件中为
邮件中为

我在 Airbnb 完成入驻后,就尽快赶到了 Party 的会场,参与现场的交流。会场选在了台北 101 大厦的附近,我们在 Party 的现场只需要抬头,就可以看到台北 101 大厦,非常的漂亮。

中间的尖塔状建筑,就是台北 101 大厦
中间的尖塔状建筑,就是台北 101 大厦

整个 Party 的氛围可惜因为我还是太过于腼腆,并没有和太多在场的台湾同胞交流,倒是和大陆一同前往台湾演讲的各位讲师聊的很开心。

大家得知附近刚好有个诚品书店,便一致决定,去看看这个“网红”书店,我还在诚品书店买到了几本不错的书,都带回了大陆看。

左起分别是王蕴博老师(滴滴)、吴晟老师(Apache Skywalking)、我、Ted 刘(开源社理事)
左起分别是王蕴博老师(滴滴)、吴晟老师(Apache Skywalking)、我、Ted 刘(开源社理事)

COSCUP Day 1

今年的 COSCUP 是在台北的台湾科技大学举办,租借了台科大的一栋大楼来做会议。相比于大陆的会议主要是一个主会场,所有人都去听,COSCUP 的主办方的看法有所不同,在他们看来,他们需要的是更多的会场,让更多的开发者可以勇敢的 Show 出自己。

OPasss
OPasss

参会的话,首先需要下载一个 OPass App,安装了这个 App ,就可以在现场使用 App 进行签到,十分的方便,值得大家学习。

现场的各项基础设施,也做的非常的棒,有大的议程台,可以帮助参会者了解议程。

现场照片
现场照片
COSCUP 会场之 IB101
COSCUP 会场之 IB101

大陆来的讲师的议程基本在第一天,所以我第一天的事情主要是去听一听大陆这边的讲师的议程,听一听大家都讲的是什么,并选一些我感兴趣的其他议程听一下

Ted Liu 的议程
Ted Liu 的议程

Ted Liu 讲的是自己在 Apache 基金会看到的一些东西,以及他作为 Apache Member ,看到的不同的内容、开源项目能够从中学习到什么。

吴晟老师的议程
吴晟老师的议程

吴晟老师则分享了他的项目 Skywalking 如何从一个个人项目进入 Apache 基金会的项目孵化器、成为 Apache 顶级项目的历程。

马全一老师分享了他在阿里巴巴、腾讯、华为等多家企业从业看到的大陆的企业的开源的现状,因为他说他的议程不能拍照不能录像,所以这里没有图片。

李辉老师则以自己的个人经历,为大家介绍了一个普通程序员如果变成一个全栈工程师、如何成为一个项目的 Core Maintainer 等等的一些信息。

水歌则分享了其在 Web Components 中的实践,帮助大家了解了 Web Components 的前世今生,并介绍了他自己基于 Web Components 实现的框架, WebCell。

其他几位老师的议程,因为时间的缘故,没有能去参加。

除了听议程以外,第一天我还去参加了 LPI 在 COSCUP 举办的考试,毕竟作为 Linux 中国的一员我还真没有正经的参加过 Linux 相关的考试,刚好这次有机会,就参加一下考试。

LPI 在 COSCUP 的展台
LPI 在 COSCUP 的展台

总体来说,LPI 的考试还是不错的,会考到一些比较基础的,平时可能根本想不到的知识点。

第一天的议程结束后,开源社成员 Richard 和 Kevin (他们是台湾人)作东,邀请了来台湾参会的讲师么,一同聚餐。

聚餐合影
聚餐合影

台湾菜,很好吃!

COSCUP Day 2

第二天,因为我自己有两场演讲,所以也仅仅参加了两个议程和一场 BoF(有相同喜好的人大家坐在一起聊聊天的活动)。

王伟老师的议程
王伟老师的议程

王伟老师在议程中,分享了他自己在大陆做的开源相关的教育的事情,并分享了自己的一些成果。

水歌的分享
水歌的分享

水歌的分享则介绍了他如何借助 Hexo 去建立一个开放透明的开源组织,介绍了他自己的实践,还进行了一个 WorkShop,帮助大家上手。

在 BoF 上,大家则讨论了关于开源、教育等一些实践、大家的思考。

关于我自己的议程,因为我在演讲,所以只能等后续组委会放出的视频和照片了?。

One More Thing:会后采访

这次来台湾参会,我给自己留了10天时间,除去来回的2天,我还有8天时间,以及 2 天的会议时间,我仍然有 6 天的自由时间,除了在台湾游玩,我还能为两岸的开源、IT 界做些什么呢?

那就来做采访吧!

得益于 COSCUP 的关系,很多人对于我有一个初始的印象,也借此,我可以成功的在台湾访谈一些很好的朋友,包括 Anti996 License 的主导者 Suji Yan、Hexo 的开发者 Tommy、台湾的 Ruby 社群的高见龙、Ubuntu TW 的负责人 BlueT、台北 iOS 开发社群的早期负责人豆花、COSCUP 的总办 Bobchao、台湾 Laravel Dojo 的创办人范圣佑等人, 如果你对他们的访谈感兴趣,就持续关注我吧,我会在后续将这些采访都发出来。

当然,如果你对于其他的开发者有兴趣,也可以告诉我,我后续会一一进行访谈。

学而时习之:COSCUP 值得学习的小细节

在参加 COSCUP 中,我也发现一些值得我们去学习的细节,这里也分享给大陆的同行,帮助大家更好的去举办大陆自己的会议。

He、She、Ze

在 COSCUP 中,每一个人可以在自己的卡片上贴上一个标签,这个标签分为 He、 She、Ze,其中 He 和 She 就不多说, Ze 则是针对一些跨性别者,或性别认知与其天然性别不同的人。对于跨性别者,或者性别认知不同的人来说,直接称呼其 He、 She 都略不尊敬,而 Ze 则很好的避开了这个问题,而且参会者可以根据自己的需要,选择标签,他人在称呼自己的时候,可以根据你的选择了填写。

共笔系统

共笔系统也是我在 COSCUP 中认为的一个值得我们学习的点。共笔系统,是指 COSCUP 为每一场活动都提供了一个可以在线协作的文档,每一个参会者都可以打开这个文档,然后为文档共享内容,大家共创会议笔记,这种方式,可以让大家更好的去参与这个会议,每个人对于会议的理解不同,能够结合自己的经历,写出一些不同的东西,帮助更多人去理解。

总结

最后,做一个小的总结,这一次的 COSCUP ,其实让我感受到非常多大陆和台湾的不同,大陆这边我们会关于效率,项目,成长。台湾则会更关注娱乐,就像我在标题中写的那样 「乐在其中,才会无限精彩」,因为乐在其中,所以我们可以更加持久的做下去,至于精彩,就听天由命了。

对于大陆的开源人来说,我想,我们需要做一些改变,不应仅仅是为了工作目标而开源,为了快乐去做一些事情,不也很棒么?

Vlog 两则

视频托管在 Youtube,需要你懂的通道才能查看。

在西藏我们都吃什么

https://www.youtube.com/watch?v=jk99ErRA0pM&feature=youtu.be

西藏:无题

https://www.youtube.com/watch?v=6qF0cEj1maU&feature=youtu.be