惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
V
V2EX
大猫的无限游戏
大猫的无限游戏
腾讯CDC
博客园 - Franky
WordPress大学
WordPress大学
Jina AI
Jina AI
GbyAI
GbyAI
云风的 BLOG
云风的 BLOG
B
Blog RSS Feed
Last Week in AI
Last Week in AI
The Cloudflare Blog
V
Visual Studio Blog
P
Proofpoint News Feed
博客园 - 叶小钗
L
LangChain Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Recorded Future
Recorded Future
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Blog of Author Tim Ferriss
人人都是产品经理
人人都是产品经理
Y
Y Combinator Blog
罗磊的独立博客
雷峰网
雷峰网
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
L
LINUX DO - 热门话题
Cisco Talos Blog
Cisco Talos Blog
L
Lohrmann on Cybersecurity
Martin Fowler
Martin Fowler
Spread Privacy
Spread Privacy
MongoDB | Blog
MongoDB | Blog
Engineering at Meta
Engineering at Meta
C
Cybersecurity and Infrastructure Security Agency CISA
小众软件
小众软件
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
Recent Announcements
Recent Announcements
T
Threat Research - Cisco Blogs
Security Archives - TechRepublic
Security Archives - TechRepublic
量子位
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
宝玉的分享
宝玉的分享
D
DataBreaches.Net
T
The Exploit Database - CXSecurity.com
Vercel News
Vercel News
IT之家
IT之家
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
T
Troy Hunt's Blog
aimingoo的专栏
aimingoo的专栏

夜行人

回家路上 第一期的直播演示项目 震动检测器 正能量 在线参观CodeLab Neverland 发布 CodeLab Adapter 3.3.1 DynamicTable 之 纸糊方向盘 CodeLab DynamicTable: 一个可实施的技术方案 CodeLab Insight 发布 Alpha 版 情人节 Home Assistant 周报 && IoT 周报 (02) Joplin: 关注隐私的 Evernote 开源替代软件 浏览器的未来与 Web 传感器 Home Assistant 周报 && IoT 周报 (01) 百宝箱(01) 论自由 介绍 WebThings Home Assistant 周报 && iot 周报 (00) 百宝箱(00) 毛姆读书心得 传世之作 周末徒步 CodeLab Adapter ❤️ Jupyter/Python 航班 躲雨 夏令营途中 [译]思想--作为一种技术 The future of coding 美国之行 三门问题的程序模拟 从Python转向Pharo https://blog.just4fun.site/post/iot/iot-open-source-projects/ Python异步编程笔记 https://blog.just4fun.site/post/iot/iot-open-source-hardware-community/ 万物积木化开发者社区 CodeLab ❤️ Blender Scratch3技术分析之云变量 API(第7篇) [译]对管道(Pipes)的偏爱 [译]提出正确的问题比得到正确答案更重要 蓝牙设备与Scratch3.0 创建你的第一个Scratch3.0 Extension Scratch3技术分析之项目内部数据(第6篇) Scratch3技术分析之社区 API(第5篇) Scratch3技术分析之User API(第4篇) Scratch3技术分析之项目主页API(第3篇) Scratch3技术分析之静态资源API(第2篇) Scratch3.0、micro:bit与Windows7 https://blog.just4fun.site/post/iot/zerynth-vs-micropython/ 核聚变、方所与半宅空间 可视化编程为何是个糟糕的主意 codelab.club周末聚会 关于codelab.club '下一件大事'是一个房间 Hungry Robot - Eat everything 编程作为一种思考方式 今日简史 史蒂夫·乔布斯传 罗素自选文集 https://blog.just4fun.site/post/edx/tianjin-scratch-ai/ https://blog.just4fun.site/post/edx/richie-cms-openedx/ 徒步武功山 WebUSB与micro:bit 积木化编程与3D场景 夜宿武功山顶 scratch3-adapter接入优必选Alpha系列机器人 https://blog.just4fun.site/post/edx/video-migration-note/ scratch3-adapter重构笔记 https://blog.just4fun.site/post/edx/edx-community-members/ 两种硬件编程风格的比较 使用micro:bit自制PPT翻页笔 柏拉图对话集 scratch3.0 + micro:bit 七月电影放映计划 非营利组织的管理 Screenly--用树莓派让任何屏幕变为可编程的数字标牌 以最佳实践开始你的Django项目 micro:bit与事件驱动 为Scratch3.0设计的插件系统(上篇) OCR应用一例 近两年读过的一些好书 blockly开发之使用python驱动浏览器中的turtle(2) 牛顿新传 文学理论入门 逻辑的引擎 人生的意义 blockly开发之生成并运行js代码(1) blockly开发之hello world(0) micro:bit使用笔记 神器之Termux https://blog.just4fun.site/post/iot/micropython-notes/ Cozmo what is this Scratch的前世今生 下段旅程 我行在远方 爆裂 途中杂记 https://blog.just4fun.site/post/edx/open-edx-startup/ cozmo系列之入门 - 有性格且可编程的机器人 PaperWeekly开发笔记 创业二三事
开源项目与开源社区
种瓜 · 2019-09-09 · via 夜行人

一个在封闭项目中只靠自己的开发者,将远远落后于这种开发者:他们知道如何创建一个开放的、有改进能力的环境,在这个环境中,上百人(甚至上千人)反馈并提供设计空间拓展、代码贡献、bug 定位以及软件的其他改进 – 埃里克·雷蒙《大教堂与集市》

前言

最近@曾老师在学校里为大二学生开设了一门选修课:开源软件开发技术(2019 年秋季项目设计),这门课将带着大家接触开源文化、构建开源项目、参与开源社区。

课程计划采用类似编程马拉松的形式在三个周末完成项目。

编程马拉松(hackathon)是一种活动。在该活动当中,编程者在一段时间内,以合作的形式去进行编程、合作是其灵魂。编程马拉松这个术语是个合成词,它由编程(hack)马拉松(marathon)两部分构成。这个术语诞生于 1999 年。OpenBSD 于 1999 年 6 月 4 日在卡尔加里举办的一次密码学开发活动上第一次使用了该术语。

开源软件开发技术课程一共邀请了 14 位开发者担任校外导师,他们中有些来自大公司: 阿里巴巴、字节跳动、亚马逊…有些则来自很酷的创业团队:Peak Labs…他们的共同特点是:热爱开源,业余时间积极参与开源社区相关的工作。

有个周末在爬白云山的时候,@曾老师打电话跟我聊起这个话题,他觉得 CodeLab Adapter 是个很合适的项目,学生通过构建 CodeLab Adapter 插件,可以了解到开源软件的构建方式以及开源社区的典型协作方式, 这些学生也是 CodeLab Adapter 的潜在志愿者。我觉得十分契合,便说乐于参与,于是也成为校外导师之一。

目前有 200 多名学生选修这门课, 他们根据自己的兴趣选择感兴趣的项目,通过参与这个项目,了解开源项目的构建过程和开源社区的运作方式。目前可选的一些项目包括:

  • Wordpress Plugin:全球每三个网站就有一个是 WP
  • Codelab Adapter:AIOT 连接器
  • iOS/Android APP
  • 机器学习模型

开源社区

兴趣驱动

如何参与开源社区?

这是个很大的问题,我能想到这个问题最好的答案是:你应该带着这个问题去开源社区里问问大家

开源社区有点像一个集市(参见大教堂与集市),它有些嘈杂和混乱,对于那些热爱秩序和围墙花园的人来说,一开始恐怕会有些不适应。可一旦你习惯之后,就会发现开源社区的居民大多友好、开明而善意。他们中的许多人都乐于给陌生人提供力所能及的帮助。

在你一开始还不清楚去哪个社区,以及如何提问时,如何参与开源社区呢?

追随你的兴趣是我喜欢给出的建议。

开源社区里的大多数人都是由兴趣驱动着,即便在周末和旅途中,他们也可能混迹在社区里,社区已经成为他们的一种生活方式,当然也包括我自己。

在你不知道干嘛的情况下,追随自己的兴趣,大多时候都是很好的选择。

如果你不知道自己对什么感兴趣又该怎么办呢?

我喜欢乔布斯对此的回答: 你应该花时间去找到它,还有什么比这更重要的事呢?关于这个话题,乔布斯在斯坦福大学毕业典礼致辞也许值得一看。

大教堂与集市里提到说兴趣往往意味着效率的巅峰,这句话在某种程度上解释了为何开源会成为整个软件行业的基石和创新来源,它是由一群充满热情的人驱动的。

参与社区

你对某个项目有了兴趣,在多数情况下,你首先是它的用户,作为用户,在使用软件的过程中,常常会遇到一些问题和困难,此外也可能会发现一些软件的 bug,这些都是参与社区的良好契机。

你可以到社区里提问,描述你遇到的问题,以及你的困惑。

在提问之前,开源社区居民的习俗是先在搜索引擎里搜一下问题解决方案,如果能自行解决再好不过了,社区鼓励你把解决方案写成博客,分享出来。如果你自己努力了但还是解决不了,尽可大大方方去社区寻求帮助,大多数情况下,大家都乐于相助。

那么社区又在哪里呢?它是个什么组织形式?

社区是个抽象概念,它可能有多种形式,可能是一个微信群、一个邮件组、一个论坛…这取决于你使用的软件,一般在在项目主页里会提到社区地址。

今天很多开发者会直接使用Github作为他们的根据地(CodeLab 就是), 在你的开源旅程里,Github 是随处可见的风景,所以我们接下来先了解一下它。

Github

你可能在很多地方都听过Github,尤其是最近的中美贸易战,让许多非技术社区的人也开始关注Github

Github只是一个普通网站,它和你用过的哔哩哔哩知乎是一类东西, 都是一种能够使用浏览器打开的东西。它的特点在于这个网站上,存放了大量开源项目的源代码。目前,一些国家将宪法也放在上边,有些小说作者开始使用它来管理小说草稿。

Github主要是个技术社区,它是很多开源项目的根据地,而开源项目又是整个软件行业的基石,这就是为何中美贸易战,很多人担心Github被封的问题,人们担心这会影响整个软件产业,这也可以看出今天开源项目在人们心目中所占据的地位。

Github 是个源代码托管服务平台,你除了可以在这儿参与开源项目之外,也可以把自己的构建的项目在这儿发布,向全世界开源。

发布这个词听起来很有舞台感,它让你想到聚光灯下的舞台,巨屏上的 PPT,偌大的黑底 PPT 上写着的颠覆二字,以及台下即将爆发的掌声。这种仪式感也让人想到,恐怕我与发布二字是扯不上什么关系的。

但请放心,在 Github 中发布一个开源项目,就跟在朋友圈发布一个状态差不多简单。

至于如何使用Github, 这两个链接提供了很棒的参考:

开源项目

随着你对一个项目的使用和了解,你开始有了自己的需求,你为开源软件增加了新功能,或者为它写了新的插件,又或者你干脆不满于手头上在使用的软件,准备打造一个更好的,这些工作你都可以发布到开源社区里(诸如发布到 Github)。

构建和发布一个开源项目,往往从成为一个开源项目的用户开始。

如果你的项目帮助其他人解决了 ta 遇到的问题,戳中了 ta 的痛点,当你将开源项目发布到开源社区里之后,这些感兴趣的人就会加入进来与你一起改进它,推动它的前进。

今天全球有数十万人参与到 Linux 项目中,共同推动它的前进,无论是军舰、卫星、手机平板还是你厨房里的电器、很可能都运行着这份来自开源社区的礼物。这也许是迄今为止这个星球上发生的最大规模的自发组织,它松散但有效。(大教堂与集市)。

那么你要如何发布你的开源项目呢?

有许多的选择,在今天,人们比较喜欢把它发布在Github上,所以如果你对开源感兴趣,熟悉一下如何使用Github总是值得的,它只是一个网站,不要有什么心理负担。

我将在下一篇文章里,构建一个 CodeLab Adapter 插件,并将其作为独立的开源项目发布到 Github 上。

延展阅读

参考