Linux(centos)系统各个目录的作用详解 推荐

文件系统的类型

 LINUX有四种基本文件系统类型:普通文件、目录文件、连接文件和特殊文件,可用file命令来识别。

 普通文件:如文本文件、C语言元代码、SHELL脚本、二进制的可执行文件等,可用cat、less、more、vi、emacs来察看内容,用mv来改名。

 目录文件:包括文件名、子目录名及其指针。它是LINUX储存文件名的唯一地方,可用ls列出目录文件。

 连接文件:是指向同一索引节点的那些目录条目。用ls来查看是,连接文件的标志用l开头,而文件面后以"->"指向所连接的文件。

 特殊文件:LINUX的一些设备如磁盘、终端、打印机等都在文件系统中表示出来,则一类文件就是特殊文件,常放在/dev目录内。例如,软驱A称为/dev/fd0。LINUX无C:的概念,而是用/dev/had来自第一硬盘。



   对于linux新手来说,最感到迷惑的问题之一就是文件都存在哪里呢?特别是对于那些从windows转过来的新手来说,linux的目录结构看起来有些奇怪哦。所以,在这里讲一下linux下的主要目录以及它们都是用来干什么的。

    /

    This is the root directory. The mothership. The home field. The one and only top directory for your whole computer. Everything, and I mean EVERYTHING starts here. When you type ‘/home’ what you’re really saying is “start at / and then go to the home directory.”

    /

    这就是根目录。对你的电脑来说,有且只有一个根目录。所有的东西,我是说所有的东西都是从这里开始。举个例子:当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。

    /root

    This is where the root user lives. The root user is the god of your system. Root can do anything, up to and including removing your entire filesystem. So be careful using root.

    /root

    这是系统管理员(root user)的目录。对于系统来说,系统管理员就好比是上帝,它能对系统做任何事情,甚至包括删除你的文件。因此,请小心使用root帐号。

    /bin

    Here’s where your standard linux utilities(read programs) live — things like “ls” and “vi” and “more”. Generally this directory is included in your path. What this means is that if you type ‘ls’, /bin is one of the places your shell will look to see if ‘ls’ means anything.

    /bin

    这里存放了标准的(或者说是缺省的)linux的工具,比如像“ls”、“vi”还有“more”等等。通常来说,这个目录已经包含在你的“path”系 统变量里面了。什么意思呢?就是:当你在终端里输入ls,系统就会去/bin目录下面查找是不是有ls这个程序。

    /etc

    Here’s where the administrative and system configuration stuff lives. For instance, if you have samba installed, and you want to modify the samba configuration files, you’d find them in /etc/samba.

    /etc

    这里主要存放了系统配置方面的文件。举个例子:你安装了samba这个套件,当你想要修改samba配置文件的时候,你会发现它们(配置文件)就在/etc/samba目录下。

    /dev

    Here’s where files that control peripherals live. Talking to a printer? Your computer is doing it from here. Same goes for disk drives, usb devices, and other such stuff.

    /dev

    这里主要存放与设备(包括外设)有关的文件(unix和linux系统均把设备当成文件)。想连线打印机吗?系统就是从这个目录开始工作的。另外还有一些包括磁盘驱动、USB驱动等都放在这个目录。

    /home

    Here’s where your data is stored. Config files specific to users, your Desktop folder(whick makes your desktop what it is), and any data related to your user. Each user will have their own /home/username folder, with the exception of the root user.

    /home

    这里主要存放你的个人数据。具体每个用户的设置文件,用户的桌面文件夹,还有用户的数据都放在这里。每个用户都有自己的用户目录,位置为:/home/用户名。当然,root用户除外。

    /tmp

    This is the Temporary folder. Think of it as a scratch directory for your Linux system. Files that won’t be needed by programs once their used once or twice are put here. Many Linux systems are set to automatically wipe the /tmp folder at certain intervals, so don’t put things you want to keep here.

    /tmp

    这是临时目录。对于某些程序来说,有些文件被用了一次两次之后,就不会再被用到,像这样的文件就放在这里。有些linux系统会定期自动对这个目录进行清理,因此,千万不要把重要的数据放在这里。

    /usr

    Here’s where you’ll find extra utilities that don’t fit under /bin or /etc. Things like games, printer utilities, and whatnot. /usr is divided into sections like /usr/bin for programs, /usr/share for shared data like sound files or icons, /usr/lib for libraries whick cannot be directly run but are essential for running other programs.Your package manager takes care of the things in /usr for you.

    /usr

    在这个目录下,你可以找到那些不适合放在/bin或/etc目录下的额外的工具。比如像游戏阿,一些打印工具拉等等。/usr目录包含了许多子目录: /usr/bin目录用于存放程序;/usr/share用于存放一些共享的数据,比如音乐文件或者图标等等;/usr/lib目录用于存放那些不能直接 运行的,但却是许多程序运行所必需的一些函数库文件。你的软件包管理器(应该是“新立得”吧)会自动帮你管理好/usr目录的。

    /opt

    Here’s where optional stuff is put. Trying out the latest Firefox beta? Install it to /opt where you can delete it without affecting other settings. Programs in here usually live inside a single folder whick contains all of their data, libraries, etc.

    /opt

    这里主要存放那些可选的程序。你想尝试最新的firefox测试版吗?那就装到/opt目录下吧,这样,当你尝试完,想删掉firefox的时候,你就可 以直接删除它,而不影响系统其他任何设置。安装到/opt目录下的程序,它所有的数据、库文件等等都是放在同个目录下面。

    举个例子:刚才装的测试版firefox,就可以装到/opt/firefox_beta目录下,/opt/firefox_beta目录下面就包含了运 行firefox所需要的所有文件、库、数据等等。要删除firefox的时候,你只需删除/opt/firefox_beta目录即可,非常简单。

    /usr/local

    This is where most manually installed(ie. outside of your package manager) software goes. It has the same structure as /usr. It is a good idea to leave /usr to your package manager and put any custom scripts and things into /usr/local, since nothing important normally lives in /usr/local.

    /usr/local

    这里主要存放那些手动安装的软件,即不是通过“新立得”或apt-get安装的软件它和/usr目录具有相类似的目录结构。让软件包管理器来管理/usr目录,而把自定义的脚本(scripts)放到/usr/local目录下面,我想这应该是个不错的主意。

    /media

    Some distros use this folder to mount things like usb disks, cd or dvd drives and other filesystems.

    /media

    有些linux的发行版使用这个目录来挂载那些usb接口的移动硬盘(包括U盘)、CD/DVD驱动器等等。

补充:

       /bin 系统所需要的那些命令位于此目录,比如 ls、cp、mkdir等命令;功能和/usr/bin类似,这个目录中的文件都是可执行的、普通用户都可以使用的命令。作为基础系统所需要的最基础的命令就是放在这里(/usr/bin和/usr/sbin 类似与“/”根目录下对应的目录(/bin和/sbin),但不用于基本的启动(譬如,在紧急维护中)。大多数命令在这个目录下。 )。

        /boot Linux的内核及引导系统程序所需要的文件目录,比如 vmlinuz initrd.img 文件都位于这个目录中。在一般情况下,GRUB或LILO系统引导管理器也位于这个目录

 

/lost+found 在ext2或ext3文件系统中,当系统意外崩溃或机器意外关机,而产生一些文件碎片放在这里。当系统启动的过程中fsck工具会检查这里,并修复已经损 坏的文件系统。 有时系统发生问题,有很多的文件被移到这个目录中,可能会用手工的方式来修复,或移到文件到原来的位置上。

/mnt 这个目录一般是用于存放挂载储存设备的挂载目录的,比如有cdrom 等目录。可以参看/etc/fstab的定义。有时我们可以把让系统开机自动挂载文件系统,把挂载点放在这里也是可以的。主要看/etc/fstab中怎 么定义了;比如光驱可以挂载到/mnt/cdrom 。

/opt 表示的是可选择的意思,有些软件包也会被安装在这里,也就是自定义软件包,比如在Fedora Core 5.0中,OpenOffice就是安装在这里。有些我们自己编译的软件包,就可以安装在这个目录中;通过源码包安装的软件,可以通过 ./configure --prefix=/opt/目录 。

/proc 操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录伪装的文件系统proc的挂载目录,proc并不是真正的文件系统,它的定义可以参见 /etc/fstab 。 

/sbin 大多是涉及系统管理的命令的存放,是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,这个目录和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目录是相似的;我们记住就行了,凡是目录sbin中包含的都是root权限才能执行的。

/usr 这个是系统存放程序的目录,比如命令、帮助文件等。这个目录下有很多的文件和目录。当我们安装一个Linux发行版官方提供的软件包时,大多安装在这里。 如果有涉及服务器配置文件的,会把配置文件安装在/etc目录中。/usr目录下包括涉及字体目录/usr/share/fonts ,帮助目录 /usr/share/man或/usr/share/doc,普通用户可执行文件目录/usr/bin 或/usr/local/bin 或/usr/X11R6/bin ,超级权限用户root的可执行命令存放目录,比如 /usr/sbin 或/usr/X11R6/sbin 或/usr/local/sbin 等;还有程序的头文件存放目录/usr/include

/var 这个目录的内容是经常变动的,看名字就知道,我们可以理解为vary的缩写,/var下有/var/log 这是用来存放系统日志的目录。/var/www目录是定义Apache服务器站点存放目录;/var/lib 用来存放一些库文件,比如MySQL的,以及MySQL数据库的的存放地; 

 

关于/opt目录的一个小技巧

在Linux中,/opt目录是存放某些大型软件或者某些特殊软件的目录,比如谷歌浏览器(Google Chrome)默认就是安装在/opt中。但是我们一般不会把opt单独分在一个区,因为/opt中大多数时候是空的,即使安装了软件也不会太多,而且有 些软件的容量还比较大,这样就会占用/的容量,我们可以在其它你愿意的地方建立一个目录来将/opt“转移”到别处,比如我的的/usr是单独分在一个 区,容量有50G,这么大的空间不要浪费了不是?而且/usr本来就是安装软件的地方,所以我可以/usr下建立一个叫opt的文件夹,然后右键点击这个 /usr下的opt,选择“创建链接”,得到一个名为“到 opt 的链接”文件,然后把这个文件剪切到/下,将原来的/opt删除,再将“到 opt 的链接”改名为opt就可以了,以后我们安装在/opt的软件实际上是安装到了/usr/opt下(实际上是一个符号链接)。

/usr/local 这个目录一般是用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。这个目录下面有子目录。自己看看吧。

/usr/share 系统共用的东西存放地,比如 /usr/share/fonts 是字体目录,/usr/share/doc和/usr/share/man帮助文件。

 

/var/log 系统日志存放,分析日志要看这个目录的东西;

/var/spool 打印机、邮件、代理服务器等假脱机目录;

FTP over TLS is not enabled, users cannot securely

FTP over TLS 0.9.51升级后, 进入管理面板, 会出现如下警告提示:
Warning: FTP over TLS is not enabled, users cannot securely log in.
表示未启用tls模式, 为此今天特别实地操作了一次.

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

进入设置->ssl/tls设置.

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

生成一个新证书. 服务器地址用机器的ip即可.

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

点击生成证书, 一会儿就提示成功.

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

密钥的密码随意输入一个. 注意看下面有一个端口. 这是表示ssl, tls连接端口.
最后点击左下的确认即可.

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

当你用sll 或者 tls连接时, 它会提示你证书信息, 你选择通过并且保存即可

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

FTP日志显示, tls加密连接成功..

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

默认的ftp模式, 21端口是无法连接的.

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

你会收到它的异常信息.

FTP <wbr>over <wbr>TLS <wbr>is <wbr>not <wbr>enabled, <wbr>users <wbr>cannot <wbr>securely <wbr>

Implicit SSL 端口为990, 可以连接. 这端口号也就是刚才设置中那个.
explicit SSL 端口为21, 可以连接.
explicit TLS 端口为21, 可以连接.

个人推荐用: Implicit SSL

做开源项目的维护者,是怎样一种体验?

【导读】:热门开源项目的维护者都很不容易的,素不相识的伸手党会因为你没有及时回答问题、没有及时帮他们搜索出他们想要的答案而开骂,开源项目维护者们往往会憋出心理疾病来的。如果你有开源项目,或许已有体会了。

 

Nolan Lawson 是微软 Edge 浏览器 Web 平台的 PM。参与了多个开源项目,比如:PouchDB、optimize-js 等。做开源项目的维护者,是怎样一种体验?请看他 7 年的切身体会。

 


 

几百个人排成一个队伍,候在你家门外。他们耐心等待你去解答问题、听他们的抱怨、回复 Pull Request 和 Feature Request 。

 

你想去帮他们所有人,但你一直拖到现在。也许你辛苦工作了一整天,或者你累了,再或者你只是想跟家人和朋友享受周末。

 

但你如果登陆 github.com/notifications,Notification 会不断提醒有多少人在等着你:

 

 

当你设法找到一些空闲时间,你开门迎接第一个人(即处理第一个问题,其中可能包含不止一个人,下同)。他们足够善意;他们想使用你的项目,但在 API 上陷入一些困惑。他们把代码粘贴到 GitHub 评论上,但是忘记了或者不知道怎么格式化代码,结果代码一团糟。

 

还好,你编辑了他们的评论以添加代码块,把代码格式化了。但仍有许多代码需要读。

 

另外,他们对问题的描述有些让人难以理解。也许英语不是他们的母语,或者他们在书面表达上能力不足。不管怎样,你努力去理解他们提交的文本段落。

 

你疲倦地看了一眼,排在队伍后面等待的另外几百个人。你可以花半个小时去理解这第一个人的代码,或者你可以只是浏览一遍然后给出一些教程或者文档的链接,说不定可以帮助他们解决问题。你还愉快地建议他们尝试 Stack Overflow 或者 Slack 。

 

第二个人皱着眉头,脸上露出不悦的神情。他们不断抱怨你的项目如何浪费了他们生命中的两小时,因为某个 API 没有宣传中的效果。他说的话很刻薄,让你很不舒服。

 

你没有在这个人身上浪费太多时间。你简单地说道,“这是一个开源项目,且由志愿者维护。如果代码中有 Bug,请提交一个可复现的测试案例或者 PR 。”

 

第三个人遇到的是一个很常见的错误,解决方法很简单。你之前看到过几次这个错误,但是一时想不起解决方法在哪。Stack Overflow?维基?邮件列表?在谷歌搜索了几分钟后,你粘贴上了一个链接然后关闭了这个 Issue 。

 

第四个人是一个定期的贡献者。你从多个社区讨论会和兄弟项目( sibling project )中识出了他们的名字。他们陷在一个十分晦涩的 Issue ,并提交了一个 Pull Request 来解决它。很不幸这个 Issue 很复杂,所以他们的 PR 中包含许多枯燥的段落,来解释问题。

 

再一次地,你瞥了一眼还在排队等待的几百号人,你知道这第四个人在他们的解决方案上花了很多工夫,并且可能这个解决方案是合理的。Travis 测试通过,所以你打算只评论句“LGTM”,然后合并掉这个 Pull Request 。

 

然而,你之前被这类情况伤过。在过去,你合并了一个 PR 但没有经过充分的评价,最终因为一些你没有预见到的问题,它导致了新的麻烦。也许是测试通过了,但性能下降了 10% 。或者它引发了一个内存泄漏。或者可能这个 PR 让新用户对项目感到困惑,因为它使得 API 看起来过于复杂。

 

如果现在你合并了这个 PR,以后可能会有更多的问题,因为你为解决这个人的问题而打断了另一个人的工作流程。所以你把它放在次要位置,等有了更多时间再去处理它。

 

第五个人发现了一个新 Bug,但你知道实际上它是兄弟项目中的一个 Bug 。他们说这阻碍了他们启动 App 。你知道这是个大问题,但只是众多问题中的一个,所以你此刻没有时间去修复它。

 

你回应道,这看起来是一个真实的问题,但是它更适合在另一个 Repo 中打开。所以你关闭了他们的 Issue,把它复制到了另一个 Repo,然后你添加一个评论提示,在代码中从哪里开始修复它。尽管你怀疑他们实际上会这个做。很少人会。

 

第六个人只说道“现在是什么情况/状态?”你不知道他们在谈论什么,所以你看一下上下文。关于项目中的一个长期存在的 Bug,他们在冗长的 GitHub 线程上进行了评论。许多人不同意这个问题目前的解决方案,所以产生了许多讨论。

 

在这个特定 Issue 下有超过 20 条评论,要读完并记住,需要花费你很长的时间。所以你仅仅回应道,“对不起,这个 Issue 开放了一段时间了,但还没有人解决它。我们仍试着去理解问题的范围,最好是开一个 Pull Request !”

 

第七个人只是个 GreenKeeper 网站机器人。他们的问题很简单,除了这个特殊的 Repo 中有相当碎片化的测试,且这个测试由于看起来像是谬误的原因失败了,所以你不得不重新测试看是否通过。你重启了这个测试,并试图让自己记住在 Travis 有机会运行后再去观察一下。

 

第八个人开了一个 Pull Request,但所在的 Repo 相当活跃,另一个维护者已经做出反馈。你看了一眼线程,你相信其他维护者会处理好,所以你标记它为已读,然后走开继续。

 

第九个人遇到的似乎是个 Bug,而你之前也没见过。但不幸的是,他们对“这个问题实际是如何发生的”没有提供足够的细节。是什么浏览器下出现的?哪个 Node 版本?哪个版本的项目?他们用什么代码来复现它?你让他们做出澄清,然后关掉这个标签。

 

问题不断涌进

 

不一会儿,你接待了 10 到 20 个这样的人。仍有 100 多个在排队等待。但此刻你感到精疲力尽;每个人不是抱怨,就是有问题要解答或者是有增强的请求。

 

在某种程度上,这些 GitHub 通知就是不断涌出你项目中差的一面。当他们满意你的工作时,就不会有人建立一个 Issue 或 Pull Request。只有当他们发现有所缺失,才会如此。即使你只花了一点时间阅读这些通知,在精神和情感上都是消耗。

 

你妻子观察到在例行完这些公事之后你总是暴躁易怒。也许你发现自己总是没缘由地对她厉声呵斥,仅仅是心情不好。她问你:“如果开源工作这么让你愤怒,为什么你还要做它?”你找不到一个好的答案。

 

你可以暂停;事实上目前你可能已经有所体会了。在过去,你曾从 GitHub 休假过一两个星期,只为了精神健康。但最后因为有几百个人在耐心等待(你去处理问题),不得不停止休假。

 

如果你过去持续跟进 GitHub 通知,你可能每天要处理 20-30 条。相反,你让它们堆积,所以现在攒了几百条。你感到内疚。

 

在过去,由于这样或那样的原因,你确实让这些 Issue 堆积。你或许看到一条数个月都没人应答的 Issue 。通常,当你返回找到那个Issue,提出这个 Issue 的人从不回应。或者他们这么回应,“我们放弃了你的项目而用了另一个,这样我的问题就解决了。” 这让你感觉很糟,但你明白他们的挫败感。

 

你从经验中得知,对于这些陈旧的 Issue,最实用的回应往往是只说句,“我要关闭这些旧的 Issue,如果这对你仍是个问题,或者你能提供更多的细节,请重新开一个 Issue 。”通常没有人回应。有时候有,也仅是一个愤怒的评论,抱怨怎么让他们等这么久。

 

所以现在你想更勤快地处理你的通知收件箱。几百条太多。你渴望这个数字缩减到一百,几十,或者甚至是神话般地清空。所以你奋力前行。

 

吸引新的贡献者

 

在处理完足够多这样的 Issue 后,即使你的收件箱最终被清空,最后可能仍会积压大量的 Bug 和 Pull Request 。标签可以起到作用——例如,你可以把 Issue 标记为“需要复现”或“有测试用例”或者“很赞的首个补丁”。“很赞的首个补丁”尤其有帮助,因为他们常常可以吸引到新的贡献者。

 

然而,你发送能吸引到新贡献者的那一类 Issue ,往往是处理起来非常简单的那一类,这一类 Issue 由新的志愿者去记录,比你亲自去做更有价值。你创建了一些这类的 Issue,因为你知道它的价值所在,让新人参与到开源,当这条 Pull Request 的作者告诉你“这是我在开源社区做的第一个贡献。” 你感觉很棒。

 

但你知道他们回来的希望很渺茫;通常这些朋友不会成为定期贡献者或维护者。你怀疑是不是你哪里做错了,你在哪方面改进,才能吸引住新的贡献者来帮你减轻负担。

 

你有一个项目几乎就是靠自身维持的。你多年没碰了,但有一帮维护者会回应每一个 Issue 和 PR ,所以你不必亲自去。你非常感激这些维护者。但你不知道你做了什么才使得这么多贡献者投入这个项目,而其他项目最后都是你,且只有你自己负责。

 

向前看吧

 

你不愿去创建新项目,因为你知道它只会增加你的维护负担。事实上,这里有一种反效应,你做得越成功,在 GitHub 通知上得到的“惩罚”就越多。

 

你仍能回想起这种创建的快感,从零开始写一个新项目以及解决一个之前未解决问题的喜悦。但是现在你开始衡量这种喜悦,因为任何新项目必定会从旧项目中夺走时间。你不知道是否是时候该正式摒弃你的一个旧 Repo,或者把它标记为 Unmaintained。

 

你不知道在你倦怠之前,这样的情况还要持续多久。你曾考虑将开源工作作为你的白天工作,但是自从你和真正从事开源为生的朋友交流后,你知道这通常意味着,让一个特定的开源项目作为你的白天工作。这对你无益,因为你有几十个跨越多个领域的项目,这些都在争夺你的时间。

 

你最想要的是更多的项目可以自身独立维持,你尝试去遵守所有的最佳实践:你有 CONTRIBUTING.md 和行为指导,你热情地交出拥有的特权,给任何提交高质量 PR 的人。然而每个项目都这么做,也很耗费精力,所有你没有你期望的那样勤奋。

 

你也为此感到内疚,因为你知道开源常常被看做是有特权的白人男性(比如你自己)的专属俱乐部。所以你担心你做的还不够,去解决那样的问题。

 

更重要的是,你感到内疚:内疚来自于你知道你本可以帮助有些人解决他们的问题,但你让他们的 Issue 在关闭前被无视了好几个月,或者有人在你的 Repo 开了他们第一条 Pull Request,但你没有时间去回应,这可能因此让他们沮丧到永远不想再参与开源。你的内疚是因为你已做的事情,也是因为你没做过的事情,以及因为你没能招募到更多的人分享你的不幸而有负罪感的经历。

 

集中到一起

 

以上我说的一切都是基于我自己的经验。我不能声称自己代表所有开源软件工作者,这是我自己的感觉。

 

我从事开源工作已经有很长一段时间了(大约 7 年),我一直不愿去抱怨任何这些牢骚,因为我担心会被理解为是本应了解更多的前辈在这里夸张地发牢骚。毕竟,这种处境不是我自己造成的吗?我可以随时离开 GitHub;我没有跟任何人签合约。

 

还有,我不该感激吗?我从事的开源工作帮助我在社区树立了地位。我获得了在会议做演讲的邀请。在 Twitter 上我有几千号粉丝,他们倾听我的想法,并对我的意见给予很高的评价。可以说,我得到微软的工作是因为我的开源经历。我还有什么可抱怨的?

 

然而,我知道许多其他处在与我同样位置的人都已倦怠。伙伴们也都曾热情地合并 Pull Request ,处理 Issue,写博客展示他们的项目,之后就消失得无影无踪。对于其中有些人,我甚至不愿在他们的 Repo 中开 Issue 。因为我知道他们不会回应,我不反对他们,但我担心自己会变成他们一样。

 

(作者:Nolan Lawson)

 

我已经采取了大量的自我保护措施。我不再使用 Github 通知接口——我使用电子邮件过滤器,这样我可以基于项(Unmaintained 这一类可以忽略)或者通知的类别(提到过的或者我评论过的线程通常会有优先权)来分类通知。因为是电子邮件,这也有助于我离线工作和在同一处管理事务。

 

我常常会出乎意料地收到在项目上请求支持的邮件,而这个项目我停止维护已经很久了(例如这个项目,我仍至少每月会收到一封),而通常我都是不回应。我还选择忽视我博文下的评论,不回应 Stack Overflow 的回答和邮件列表下的问题。我还积极地取消关注了那些我认为其他人维护得足够好的 Repo 。

 

这种情况如此令人沮丧的另一个原因是,你越来越发现处理 Issue 从项目实际维护中夺去太多时间,换句话说,我通常只有足够读取Issue,然后说“对不起,我此刻没有时间看”的时间。仅仅是回应的行为,就会占据我为开源预留的大部分时间。

 

Issue templates、GreenKeeper、Travis、travis_retry、Coveralls、Sauce Labs… 有太多技术工具可以处理开源维护问题,我很感激有这些工具。如果没有这些自动化工具,我就不可能保持头脑清醒。但在某些时候,你会遇到很多 Issue,它们里面涉及的社会性问题比技术性问题更多。一个人不足以说明。我甚至没有进到前100位 npm 维护者榜单,我就已经累觉不爱了;我无法想象那 100 个人是什么体会。

 

我已经告诉我妻子,如果当我们打算开始要孩子,我还是放弃开源工作为好,我觉得自己没有能力兼顾抚养家庭和维护开源项目,我预料到,放弃开源才是我核心问题的解决方案。我只希望它会以一种积极的形式到来,就如开始我人生新的篇章,而不是以一种消极的形式,比如毫不客气地倦怠。

 

最后的一点思考

 

如果读到这里,你对困扰开源社区的问题和潜在的解决方案感兴趣,你可能会想研究下 Nadia Eghbal 的《Roads and Bridges》。它可能是对该问题最清晰最深入的分析。

 

我也乐于接受建议,尽管我在心中牢记我不愿在开源项目中把金钱和劳动混在一起(也许是出于天真的理想主义)。但我曾在其他项目中看到它是有效的。

 

请注意,尽管上文表达了开源消极的一面,但我仍觉得它是我生活里一个有价值的补充,我没有任何后悔。但我希望这篇文章对大家有帮助,让你们看到成为自身成功的牺牲者是什么感受,以及你会因为未完成的工作而感到沉重。

 

我从参与开源的经历中学到的一点就是:你参与越多,对你的要求就越多。我意识到这样的问题,并没有解决方法。

Top