Merge remote-tracking branch 'LCTT/master'

This commit is contained in:
Xingyu Wang 2020-01-21 08:22:12 +08:00
commit 24e2e01bce
9 changed files with 801 additions and 85 deletions

View File

@ -0,0 +1,69 @@
[#]: collector: (lujun9972)
[#]: translator: (Morisun029)
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-11803-1.html)
[#]: subject: (4 ways to volunteer this holiday season)
[#]: via: (https://opensource.com/article/19/12/ways-volunteer)
[#]: author: (John Jones https://opensource.com/users/johnjones4)
假期志愿服务的 4 种方式
======
> 想要洒播些节日的快乐吗?为开源组织做贡献,帮助有需要的社区。
![](https://img.linux.net.cn/data/attachment/album/202001/20/223730f7983z8atxp1tf4l.jpg)
当领导者们配置人员和资源以做出积极改变时,就会产生社会影响。但是,许多社会努力都缺乏能够为这些改变者提供服务的技术资源。然而,有些组织通过将想要做出改变的开发人员与迫切需要更好技术的社区和非营利组织联系起来,来促进技术进步。这些组织通常为特定的受众提供服务,并招募特定种类的技术人员,它们有一个共同点:开源。
作为开发人员,我们出于各种原因试图加入开源社区。有些是为了专业发展,有些是为了能够与广阔的网络上令人印象深刻的技术人员合作,还有其他人则是因为他们清楚自己的贡献对于项目的成功的必要性。为什么不将你作为开发人员的才华投入到需要它的地方,而同时又为开源组织做贡献呢?以下组织是实现此目标的一些主要事例。
### Code for America
“Code for America” 是在数字时代,政府如何依靠人民为人民服务的一个例子。通过其 Brigade Network该组织在美国各个城市中组织了一个由志愿程序员、数据科学家、相关公民和设计师组成的全国联盟。这些本地分支机构定期举行聚会向社区开放。这样既可以向小组推出新项目又可以协调正在进行的工作。为了使志愿者与项目相匹配该网站经常列出项目所需的特定技能例如数据分析、内容创建和JavaScript。同时Brigade 网站也会关注当地问题,分享自然灾害等共同经验,这些都可以促进成员之间的合作。例如,新奥尔良、休斯敦和坦帕湾团队合作开发了一个飓风响应网站,当灾难发生时,该网站可以快速响应不同的城市灾难情况。
想要加入该组织,请访问 [该网站][2] 获取 70 多个 Brigade 的清单,以及个人加入组织的指南。
### Code for Change
“Code for Change” 显示了即使在高中时期也可以为社会做贡献。印第安纳波利斯的一群高中开发爱好者成立了自己的俱乐部他们通过创建针对社区问题的开源软件解决方案来回馈当地组织。“Code for Change” 鼓励当地组织提出项目构想,学生团体加入并开发完全自由和开源的解决方案。该小组已经开发了诸如“蓝宝石”之类的项目,该项目优化了当地难民组织的志愿者管理系统,并建立了民权委员会的投诉表格,方便公民就他们所关心的问题在网上发表意见。
有关如何在你自己的社区中创建 “Code for Change”[访问他们的网站][3]。
### Python for Good/Ruby for Good
“Python for Good” 和 “Ruby for Good” 是在俄勒冈州波特兰市和弗吉尼亚州费尔法克斯市举办的双年展活动,该活动将人们聚集在一起,为各自的社区开发和制定解决方案。
在周末,人们聚在一起聆听当地非营利组织的建议,并通过构建开源解决方案来解决他们的问题。 2017 年“Ruby For Good” 参与者创建了 “Justice for Juniors”该计划指导当前和以前被监禁的年轻人并将他们重新融入社区。参与者还创建了 “Diaperbase”这是一种库存管理系统为美国各地的<ruby>尿布库<rt>diaper bank</rt></ruby>所使用。这些活动的主要目标之一是将看似不同的行业和思维方式的组织和个人聚集在一起以谋求共同利益。公司可以赞助活动非营利组织可以提交项目构想各种技能的人都可以注册参加活动并做出贡献。通过两岸美国大西洋和太平洋东西海岸的努力“Ruby for Good” 和 “Python for Good” 一直恪守“使世界变得更好”的座右铭。
“[Ruby for Good][4]” 在夏天举行,举办地点在弗吉尼亚州费尔法克斯的乔治•梅森大学。
### Social Coder
英国的 Ed Guiness 创建了 “Social Coder”将志愿者和慈善机构召集在一起为六大洲的非营利组织创建和使用开源项目。“Social Coder” 积极招募来自世界各地的熟练 IT 志愿者,并将其与通过 Social Coder 注册的慈善机构和非营利组织进行匹配。项目范围从简单的网站更新到整个移动应用程序的开发。
例如PHASE Worldwide 是一个在尼泊尔支持工作的小型非政府组织,因为 “Social Coder”它获得了利用开源技术的关键支持和专业知识。
有许多慈善机构已经与英国的 “Social Coder”进行了合作也欢迎其它国家的组织加入。通过他们的网站个人可以注册为社会软件项目工作找到寻求帮助的组织和慈善机构。
对 “Social Coder” 的志愿服务感兴趣的个人可以 [在此][5]注册.
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/12/ways-volunteer
作者:[John Jones][a]
选题:[lujun9972][b]
译者:[Morisun029](https://github.com/Morisun029)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/johnjones4
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_gift_giveaway_box_520x292.png?itok=w1YQhNH1 (Gift box opens with colors coming out)
[2]: https://brigade.codeforamerica.org/
[3]: http://codeforchange.herokuapp.com/
[4]: https://rubyforgood.org/
[5]: https://socialcoder.org/Home/Programmer

View File

@ -1,29 +1,30 @@
[#]: collector: (lujun9972)
[#]: translator: (geekpi)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: reviewer: (wxy)
[#]: publisher: (wxy)
[#]: url: (https://linux.cn/article-11804-1.html)
[#]: subject: (Keep your email in sync with OfflineIMAP)
[#]: via: (https://opensource.com/article/20/1/sync-email-offlineimap)
[#]: author: (Kevin Sonney https://opensource.com/users/ksonney)
使用 OfflineIMAP 同步邮件
======
将邮件镜像保存到本地是整理消息的第一步。在我们的 20 个使用开源提升生产力的系列的第三篇文章中了解该如何做。
![email or newsletters via inbox and browser][1]
> 将邮件镜像保存到本地是整理消息的第一步。在我们的 20 个使用开源提升生产力的系列的第三篇文章中了解该如何做。
![](https://img.linux.net.cn/data/attachment/album/202001/20/235324nbgfyuwl98syowta.jpg)
去年,我在 19 天里给你介绍了 19 个新(对你而言)的生产力工具。今年,我换了一种方式:使用你在使用或者还没使用的工具,构建一个使你可以在新一年更加高效的环境。
### 使用 OfflineIMAP 在本地同步你的邮件
我与邮件之间存在爱恨交织的关系。我喜欢它让我与世界各地的人交流的方式。但是,像你们中的许多人一样,我收到过很多邮件,许多是来自列表,但也有很多垃圾邮件、广告等。这些积累了很多。
我与邮件之间存在爱恨交织的关系。我喜欢它让我与世界各地的人交流的方式。但是,像你们中的许多人一样,我收到过很多邮件,许多是来自邮件列表的,但也有很多垃圾邮件、广告等。这些积累了很多。
![The OfflineIMAP "blinkenlights" UI][2]
我尝试过的大多数工具(除了大型提供商外)都可以很好地处理大量邮件,它们都有一个共同点:它们都依赖于以 [Maildir][3] 格式存储的本地邮件副本。这其中最有用的是 [OfflineIMAP][4]。OfflineIMAP 是将 IMAP 邮箱镜像到本地 Maildir 文件夹树的 Python 脚本。我用它来创建邮件的本地副本并使其保持同步。大多数 Linux 发行版都包含它,并且可以通过 Python 的 pip 包管理器获得。
示例的最小配置文件是一个很好的模板。首先将其复制到 **~/.offlineimaprc**。我的看起来像这样:
我尝试过的大多数工具(除了大型邮件服务商外)都可以很好地处理大量邮件,它们都有一个共同点:它们都依赖于以 [Maildir][3] 格式存储的本地邮件副本。这其中最有用的是 [OfflineIMAP][4]。OfflineIMAP 是将 IMAP 邮箱镜像到本地 Maildir 文件夹树的 Python 脚本。我用它来创建邮件的本地副本并使其保持同步。大多数 Linux 发行版都包含它,并且可以通过 Python 的 pip 包管理器获得。
示例的最小配置文件是一个很好的模板。首先将其复制到 `~/.offlineimaprc`。我的看起来像这样:
```
[general]
@ -54,9 +55,9 @@ createfolder = true
我的配置要做的是定义两个仓库:远程 IMAP 服务器和本地 Maildir 文件夹。还有一个**帐户**,告诉 OfflineIMAP 运行时要同步什么。你可以定义链接到不同仓库的多个帐户。除了本地复制外,这还允许你从一台 IMAP 服务器复制到另一台作为备份。
如果你有很多邮件,那么首次运行 OfflineIMAP 将花费一些时间。但是完成后,下次会花_少得多_的时间。你也可以将 CoffeeIMAP 作为 cron 任务(我的偏好)或作为守护程序在仓库之间不断进行同步。文档涵盖了所有这些内容以及 Gmail 等高级配置选项。
如果你有很多邮件,那么首次运行 OfflineIMAP 将花费一些时间。但是完成后,下次会花*少得多*的时间。你也可以将 OfflineIMAP 作为 cron 任务(我的偏好)或作为守护程序在仓库之间不断进行同步。文档涵盖了所有这些内容以及 Gmail 等高级配置选项。
现在,我的邮件已在本地复制,并有多种工具用来加快搜索、归档和管理邮件的速度。我明天再说。
现在,我的邮件已在本地复制,并有多种工具用来加快搜索、归档和管理邮件的速度。这些我明天再说。
--------------------------------------------------------------------------------
@ -65,7 +66,7 @@ via: https://opensource.com/article/20/1/sync-email-offlineimap
作者:[Kevin Sonney][a]
选题:[lujun9972][b]
译者:[geekpi](https://github.com/geekpi)
校对:[校对者ID](https://github.com/校对者ID)
校对:[wxy](https://github.com/wxy)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (Morisun029)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )

View File

@ -1,5 +1,5 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: translator: (Morisun029)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )

View File

@ -0,0 +1,141 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Learning about Partitions and How to Create Them for Fedora)
[#]: via: (https://fedoramagazine.org/learning-about-partitions-and-how-to-create-them-for-fedora/)
[#]: author: (Gregory Bartholomew https://fedoramagazine.org/author/glb/)
Learning about Partitions and How to Create Them for Fedora
======
![][1]
Operating system distributions try to craft a one size fits all partition layout for their file systems. Distributions cannot know the details about how your hardware is configured or how you use your system though. Do you have more than one storage drive? If so, you might be able to get a performance benefit by putting the write-heavy partitions (_var_ and _swap_ for example) on a separate drive from the others that tend to be more read-intensive since most drives cannot read and write at the same time. Or maybe you are running a database and have a small solid-state drive that would improve the databases performance if its files are stored on the SSD.
The following sections attempt to describe in brief some of the historical reasons for separating some parts of the file system out into separate partitions so that you can make a more informed decision when you install your Linux operating system.
If you know more (or contradictory) historical details about the partitioning decisions that shaped the Linux operating systems used today, contribute what you know below in the comments section!
### Common partitions and why or why not to create them
#### The boot partition
One of the reasons for putting the ***/*_boot_ directory on a separate partition was to ensure that the boot loader and kernel were located within [the first 1024 cylinders of the disk][2]. Most modern computers do not have the 1024 cylinder restriction. So for most people, this concern is no longer relevant. However, modern UEFI-based computers have [a different restriction][3] that makes it necessary to have a separate partition for the boot loader. UEFI-based computers require that the boot loader ([which can be the Linux kernel directly][4]) be on a FAT-formatted file system. The Linux operating system, however, requires a POSIX-compliant file system that can designate access permissions to individual files. Since [FAT file systems do not support access permissions][5], the boot loader must be on a separate file system than the rest of the operating system on modern UEFI-based computers. A single partition cannot be [formatted][6] with more than one type of file system.
#### The var partition
One of the historical reasons for [putting the /var directory on a separate partition][7] was to prevent files that were frequently written to (_/var/log/*_ for example) from filling up the entire drive. Since modern drives tend to be much larger and since other means like [log rotation][8] and [disk quotas][9] are available to manage storage utilization, putting _/var_ on a separate partition may not be necessary. It is much easier to change a disk quota than it is to re-partition a drive.
Another reason for isolating _/var_ was that file system corruption was much more common in the original version of the Linux [Extended File System (EXT)][10]. The file systems that had more write activity were much more likely to be irreversibly corrupted by a power outage than those that did not. By partitioning the disk into separate file systems, one could limit the scope of the damage in the event of file system corruption. This concern is no longer as significant because modern file systems support [journaling][11].
#### The home partition
Having ***/*_home_ on a separate partition makes it possible to re-format the other partitions without overwriting your home directories. However, because modern Linux distributions are much better at doing in-place operating system upgrades, re-formatting shouldnt be needed as frequently as it might have been in the past.
It can still be useful to have _/home_ on a separate partition if you have a dual-boot setup and want both operating systems to share the same home directories. Or if your operating system is installed on a file system that supports snapshots and rollbacks and you want to be able to rollback your operating system to an older snapshot without reverting the content in your user profiles. Even then, some file systems allow their descendant file systems to be rolled back independently, so it still may not be necessary to have a separate partition for _/home_. On ZFS, for example, one pool/partition can have multiple descendant file systems.
#### The swap partition
The _swap_ partition reserves space for the contents of RAM to be written to permanent storage. There are pros and cons to having a swap partition. A pro of having swap memory is that it theoretically gives you time to gracefully shutdown unneeded applications before [the OOM killer][12] takes matters into its own hands. This might be important if the system is running mission-critical software that you dont want abruptly terminated. A con might be that your system runs so slow when it starts swapping memory to disk that youd rather the OOM killer take care of the problem for you.
Another use for swap memory is [hibernation mode][13]. This might be where the rule that the swap partition should be twice the size of your computers RAM originated. Ideally, you should be able to put a system into hibernation even if nearly all of its RAM is in use. Beware that Linuxs support for hibernation is not perfect. It is not uncommon that after a Linux system is resumed from hibernation some hardware devices are left in an inoperable state (for example, no video from the video card or no internet from the WiFi card).
In any case, having a swap partition is more a matter of taste. It is not required.
#### The root partition
The _root_ partition (/) is the catch-all for all directories that have not been assigned to a separate partition. There is always at least one root partition. BIOS-based systems that are new enough to not have the 1024 cylinder limit can be configured with only a root partition and no others so that there is never a need to resize a partition or file system if space requirements change.
#### The EFI system partition
The [EFI System Partition (ESP)][14] serves the same purpose on UEFI-based computers as the _boot_ partition did on the older BIOS-based computers. It contains the boot loader and kernel. Because the files on the ESP need to be accessible by the computers firmware, the ESP has a few restrictions that the older boot partition did not have. The restrictions are:
1. The ESP must be formatted with a FAT file system (_vfat_ in Anaconda)
2. The ESP must have a special [type-code][15] (_EF00_ when using [gdisk][16])
Because the older boot partition did not have file system or type-code restrictions, it is permissible to apply the above properties to the _boot_ partition and use it as your ESP. Note, however, that the GRUB boot loader does not support combining the boot and ESP partitions. If you use GRUB, you will have to create a separate partition and mount it beneath the _/boot_ directory.
The [Boot Loader Specification (BLS)][17] lists several reasons why it is ideal to use the legacy boot partition as your ESP. The reasons include:
1. The UEFI firmware should be able to load the kernel directly. Having a separate, non-ESP compliant boot partition for the kernel prevents the UEFI firmware from being able to directly load the kernel.
2. Nesting the ESP mount point three mount levels deep increases the likelihood that an intermediate mount could fail or otherwise be unavailable when needed. That is, requiring _root_ (/), then _boot_ (/boot), then _efi_ (/efi) to be consecutively mounted is unnecessarily complex and prone to error.
3. Requiring the boot loader to be able to read other partitions/disks which may be formatted with arbitrary file systems is non-trivial. Even when the boot loader does contain such code, the code that works at installation time can become outdated and fail to access the kernel/initrd after a file system update. This is currently true of GRUBs _ZFS_ file system driver, for example. You must be careful not to update your _ZFS_ file system if you use the GRUB boot loader or else your system may not come back up the next time you reboot.
Besides the concerns listed above, it is a good idea to have your startup environment — up to and including your [initramfs][18] — on a single self-contained file system for recovery purposes. Suppose, for example, that you need to rollback your root file system because it has become corrupted or it has become infected with malware. If your _kernel_ and _initramfs_ are on the _root_ file system, you may be unable to perform the recovery. By having the _boot loader_, _kernel_, and _initramfs_ all on a single file system that is rarely accessed or updated, you can increase your chances of being able to recover the rest of your system.
In summary, there are many ways that you can layout your partitions and the type of hardware (BIOS or UEFI) and the brand of boot loader (GRUB, Syslinux or [systemd-boot][19]) are among the factors that will influence which layouts will work.
### Other considerations
#### MBR vs. GPT
[GUID Partition Table (GPT)][20] is the newer partition format that supports larger disks. GPT was designed to work with the newer UEFI firmware. It is backward-compatible with the older [Master Boot Record (MBR)][21] partition format but not all boot loaders support the [MBR boot method][21]. _GRUB_ and _Syslinux_ support both MBR and UEFI, but _systemd-boot_ only supports the newer [UEFI boot method][22].
By using GPT now, you can increase the likelihood that your storage device, or an image of it, can be transferred over to a newer computer in the future should you wish to do so. If you have an older computer that natively supports only MBR-partitioned drives, you may need to add the _inst.gpt_ parameter to **Anaconda** when starting the installer to get it to use the newer format. How to add the _inst.gpt_ parameter is shown in the below video titled **“Partitioning a BIOS Computer”**.
If you use the _GPT_ partition format on a BIOS-based computer, and you use the _GRUB_ boot loader, you must additionally create a one megabyte _biosboot_ partition at the start of your storage device. The _biosboot_ partition is not needed by any other brand of boot loader. How to create the _biosboot_ partition is demonstrated in the below video titled **“Partitioning a BIOS Computer”**.
#### LVM
One last thing to consider when manually partitioning your Linux system is whether to use standard partitions or logical volumes. Logical volumes are managed by the [Logical Volume Manager (LVM)][23]. You can setup LVM volumes directly on your disk without first creating standard partitions to hold them. However, most computers still require that the boot partition be a standard partition and not an LVM volume. Consequently, having LVM volumes only increases the complexity of the system because the LVM volumes must be created within standard partitions.
The main features of LVM — online storage resizing and clustering — are not really applicable to the typical end user. Most laptops do not have hot-swappable drive bays for adding or reconfiguring storage while the system is running. And not many laptop or desktop users have [clvmd][24] configured so they can access a centralized storage device concurrently from multiple client computers.
LVM is great for servers and clusters. But it adds extra complexity for the typical end user. Go with standard partitions unless you are a server admin who needs the more advanced features.
### Video demonstrations
Now that you know which partitions you need, you can watch the sort video demonstrations below to see how to manually partition a Fedora Linux computer from the Anaconda installer.
These videos demonstrate creating only the minimally required partitions. You can add more if you choose.
Because the _GRUB_ boot loader requires a more complex partition layout on UEFI systems, the below video titled **“Partitioning a UEFI Computer”** additionally demonstrates how to install the _systemd-boot_ boot loader. By using the _systemd-boot_ boot loader, you can reduce the number of needed partitions to just two — _boot_ and _root_. How to use a boot loader other than the default (GRUB) with Fedoras Anaconda installer is officially documented [here][25].
**Partitioning a UEFI Computer**
**Partitioning a BIOS Computer**
--------------------------------------------------------------------------------
via: https://fedoramagazine.org/learning-about-partitions-and-how-to-create-them-for-fedora/
作者:[Gregory Bartholomew][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://fedoramagazine.org/author/glb/
[b]: https://github.com/lujun9972
[1]: https://fedoramagazine.org/wp-content/uploads/2020/01/partitions-fedora-816x346.png
[2]: https://en.wikipedia.org/wiki/Cylinder_1024
[3]: https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#EFI_system_partition
[4]: https://www.kernel.org/doc/Documentation/efi-stub.txt
[5]: https://en.wikipedia.org/wiki/File_system_permissions#Operating_system_variations
[6]: https://en.wikipedia.org/wiki/Disk_formatting#Formatting
[7]: https://access.redhat.com/discussions/641923
[8]: https://linuxconfig.org/setting-up-logrotate-on-redhat-linux
[9]: https://docs.oracle.com/cd/E19253-01/819-5461/gazud/index.html
[10]: https://en.wikipedia.org/wiki/Extended_file_system
[11]: https://en.wikipedia.org/wiki/Journaling_file_system
[12]: https://lwn.net/Articles/317814/
[13]: https://www.fosslinux.com/184/what-is-difference-between-suspend-and-hibernate-in-linux.htm
[14]: https://en.wikipedia.org/wiki/EFI_system_partition
[15]: https://en.wikipedia.org/wiki/GUID_Partition_Table#Partition_type_GUIDs
[16]: https://fedoramagazine.org/managing-partitions-with-sgdisk/
[17]: https://systemd.io/BOOT_LOADER_SPECIFICATION/
[18]: https://fedoramagazine.org/initramfs-dracut-and-the-dracut-emergency-shell/
[19]: https://www.freedesktop.org/wiki/Software/systemd/systemd-boot/
[20]: https://en.wikipedia.org/wiki/GUID_Partition_Table
[21]: https://en.wikipedia.org/wiki/Master_boot_record
[22]: https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface#UEFIBOOT
[23]: https://en.wikipedia.org/wiki/Logical_Volume_Manager_(Linux)
[24]: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/5/html/logical_volume_manager_administration/lvm_cluster_overview
[25]: https://docs.fedoraproject.org/en-US/fedora/rawhide/install-guide/install/Installing_Using_Anaconda/#sect-installation-gui-storage-partitioning-bootloader

View File

@ -0,0 +1,70 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Use this Twitter client for Linux to tweet from the terminal)
[#]: via: (https://opensource.com/article/20/1/tweet-terminal-rainbow-stream)
[#]: author: (Kevin Sonney https://opensource.com/users/ksonney)
Use this Twitter client for Linux to tweet from the terminal
======
Keep up with your Twitter feed without leaving the terminal by using
Rainbow Stream in the tenth in our series on 20 ways to be more
productive with open source in 2020.
![Chat bubbles][1]
Last year, I brought you 19 days of new (to you) productivity tools for 2019. This year, I'm taking a different approach: building an environment that will allow you to be more productive in the new year, using tools you may or may not already be using.
### Keep up with Twitter with Rainbow Stream
I love social networking and microblogging. It's quick, it's easy, and I can share my thoughts with the world really quickly. The drawback is, of course, that almost all the desktop options for non-Windows users are wrappers around the website. [Twitter][2] has a lot of clients, but what I really want is something lightweight, easy to use, and most importantly, attractive.
![Rainbow Stream for Twitter][3]
[Rainbow Stream][4] is one of the prettier Twitter clients. It is easy to use and installs quickly with a simple **pip3 install rainbowstream**. On the first run, it will open a browser window and have you authorize with Twitter. Once that is done, you land at a prompt, and your Twitter timeline will start scrolling by.
![Rainbow Stream first run][5]
The most important commands to know are **p** to pause the stream, **r** to resume the stream, **h** to get help, and **t** to post a new tweet. For example, **h tweets** will give you all the options for sending and replying to tweets. Another useful help screen is **h messages**, which gives the commands for working with direct messages, which is something my wife and I use a lot. There are a lot of other commands, and I refer back to help a lot.
As your timeline scrolls by, you can see that it has full UTF-8 support and, with the right font, will show indicators for how many times something was retweeted and liked, as well as icons and emojis.
![Kill this love][6]
One of the _best_ things about Rainbow Stream is that you don't have to give up on photos and images. This feature is off by default, but you can try it out with the **config** command.
```
`config IMAGE_ON_TERM = true`
```
This command renders any images as ASCII art. If you have a photo-heavy stream, this may be a bit much, but I like it. It has a very retro-1990s BBS feel, and I did love the BBS scene in the 1990s.
You can also use Rainbow Stream to manage lists, mute people, block people, follow, unfollow, and everything else that is available with the Twitter API. There is also theme support, so you can customize the stream to your favorite color scheme.
When I'm working and don't want to have yet-another-tab open on my browser, Rainbow Stream lets me keep up in a terminal off to the side.
Without open source, Twitter wouldn't exist. Every Tweet you send and receive touches open source...
Sergey Bronnikov shares why the OpenVZ team created Twisource, an open source social media tool.
--------------------------------------------------------------------------------
via: https://opensource.com/article/20/1/tweet-terminal-rainbow-stream
作者:[Kevin Sonney][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/ksonney
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/talk_chat_communication_team.png?itok=CYfZ_gE7 (Chat bubbles)
[2]: https://twitter.com/home
[3]: https://opensource.com/sites/default/files/uploads/productivity_10-1.png (Rainbow Stream for Twitter)
[4]: https://rainbowstream.readthedocs.io/en/latest/
[5]: https://opensource.com/sites/default/files/uploads/productivity_10-2.png (Rainbow Stream first run)
[6]: https://opensource.com/sites/default/files/uploads/day10-image3_1.png (Kill this love)

View File

@ -0,0 +1,360 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Ansible Automation Tool Installation, Configuration and Quick Start Guide)
[#]: via: (https://www.2daygeek.com/install-configure-ansible-automation-tool-linux-quick-start-guide/)
[#]: author: (Magesh Maruthamuthu https://www.2daygeek.com/author/magesh/)
Ansible Automation Tool Installation, Configuration and Quick Start Guide
======
There are many automation tools on the market.
I can name a few of them, and they are widely used by many organizations, such as Puppet, Chef, CFEngine, Foreman, Katello, Saltstock, Space Walk.
### What Automation Tool Does?
Automation tools make the life of a Linux administrator much easier by automating routine tasks without human intervention.
These tools allow users to perform configuration management, application deployment and provisioning.
### Why do you like Ansible?
Ansible is an agent-less automation tool that uses SSH to perform all tasks, but others require agents on client nodes.
### What is Ansible?
Ansible is an open source, easy-to-use, powerful IT automation tool that performs tasks on client nodes over SSH.
It is built in Python and is one of the most popular and robust programming languages in the world todays.
The Python package is required on both ends to perform all the modules.
It can configure systems, deploy software, and schedule advanced IT tasks such as continuous deployment or zero downtime rolling updates.
You can easily perform any kind of automation tasks with simple and complex tasks through Ansible.
Before you get started, you need to understand some of the Ansible terminology that helps you to make a task easier.
### How Ansible Works?
Ansible works by pushing small programs known as ansible modules on the client nodes, and these modules are temporarily stored in the client nodes, which are used to communicate with the Ansible server via a JSON protocol.
Ansible runs these modules via SSH and remove them when finished.
Modules are nothing but scripts written in Python, Perl, etc,.
![][1]
The control node, which controls the entire functionality of the playbook, including client nodes (hosts).
* **Control node:** The host you use Ansible to execute tasks on managed nodes. You can have multiple control nodes, but you cannot use a Windows machine as a control node.
* **Managed nodes:** List of hosts configured by the control node
* **Inventory:** A list of hosts managed by the control nodes, these nodes are configured in the **“/etc/ansible/hosts”** file. It contains information about each node, such as an IP address or its hostname, and these nodes can be grouped as needed.
* **Modules:** Each module is used to perform a specific task, which currently supports 3387 modules.
* **ad-hoc:** It allows you to run one task at a time (it uses the **/usr/bin/ansible** binary).
* **Tasks:** There is a list of tasks in each play. Tasks are executed in order, one at a time in the managed nodes.
* **Playbooks:** You can perform multiple tasks simultaneously using playbooks, whereas you can only perform one task using an ad-hoc command. Playbooks are written in YAML and are easy to read (which uses the **/usr/bin/ansible-playbook** binary). In the future we will create an article about playbooks that you can use to perform complex tasks.
### Testing Environment:
This environment contains one control node (**server.2g.lab**) and three managed nodes (**node1.2g.lab, node2.2g.lab, node3.2g.lab**), all running in the virtual environment with the following operating systems.
```
+----------------------+---------------+-------------+---------------+
| System Purpose | Hostname | IP Address | OS |
+----------------------+---------------+-------------+---------------+
|Ansible Control Node | server.2g.lab | 192.168.1.7 | Manjaro 18 |
|Managed Node1 | node1.2g.lab | 192.168.1.6 | CentOS7 |
|Managed Node2 | node2.2g.lab | 192.168.1.5 | CentOS8 |
|Managed Node3 | node3.2g.lab | 192.168.1.9 | Ubuntu 18.04 |
|User: daygeek |
+--------------------------------------------------------------------+
```
### Prerequisites:
* Enable password-less authentication between Ansible control node and managed nodes.
* The control node must be Python 2 (version 2.7) or Python 3 (versions 3.5 and higher).
* The managed node must be Python 2 (version 2.6 or later) or Python 3 (version 3.5 or later).
* If you have SELinux enabled on remote nodes, you will also want to install **libselinux-python** on them before using any copy/file/template related functions in Ansible.
### How to Install the Ansible on Control Node
The Ansible package is available in the distribution official repository, so you can easily install it.
For **“Fedora/RHEL 8/CentOS 8”** system, use the **[DNF Command][2]** to install ansible.
Make a note: You need to enable the **[EPEL repository][3]** on RHEL/CentOS systems because the Ansible package is not available in the distribution official repository.
```
$ sudo dnf install ansible
```
For **“Debian/Ubuntu”** systems, use **[APT-GET Command][4]** or **[APT Command][5]** to install ansible.
Configure the blow PPA to install the latest stable version of ansible on Ubuntu.
```
$ sudo apt update
$ sudo apt install software-properties-common
$ sudo apt-add-repository --yes --update ppa:ansible/ansible
$ sudo apt install ansible
```
For Debian system, configure the blow source list:
```
$ echo "deb http://ppa.launchpad.net/ansible/ansible/ubuntu trusty main" | sudo tee -a /etc/apt/sources.list.d/ansible.list
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 93C4A3FD7BB9C367
$ sudo apt update
$ sudo apt install ansible
```
For **“Arch Linux”** based systems, use **[Pacman Command][6]** to install ansible.
```
$ sudo pacman -S ansible
```
For **“RHEL/CentOS”** systems, use **[YUM Command][7]** to install ansible.
```
$ sudo yum install ansible
```
For **“openSUSE”** system, use **[Zypper Command][8]** to install ansible.
```
$ sudo zypper install ansible
```
Alternatively, you can install it using the **[PIP Python package manager][9]**
```
$ curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
$ sudo python get-pip.py
$ sudo pip install ansible
```
Check the version of Ansible installed on the control node as follows:
```
$ ansible --version
ansible 2.9.2
config file = /etc/ansible/ansible.cfg
configured module search path = ['/home/daygeek/.ansible/plugins/modules', '/usr/share/ansible/plugins/modules']
ansible python module location = /usr/lib/python3.8/site-packages/ansible
executable location = /usr/bin/ansible
python version = 3.8.1 (default, Jan 8 2020, 23:09:20) [GCC 9.2.0]
```
### How to Install Python Package on Managed Nodes
Use the following command to install the python package on managed nodes.
```
$ sudo yum install -y python
$ sudo dnf install -y python
$ sudo zypper install -y python
$ sudo pacman -S python
$ sudo apt install -y python
```
### How to Setup SSH key authentication (Password-less Authentication) on Linux
Use the following command to create an ssh key, and then copy them to remote machines.
```
$ ssh-keygen
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
$ ssh-copy-id [email protected]
```
Refer the following article to **[setup SSH key authentication (Password-less Authentication) on Linux][10]**
### How to Create Ansible Inventory
Add the list of nodes you want to manage in the **“/etc/ansible/hosts”** file. If you do not find an existing one you can create a new file. This is a sample inventory file for my test environment.
```
$ sudo vi /etc/ansible/hosts
[web]
node1.2g.lab
node2.2g.lab
[app]
node3.2g.lab
```
Lets see if we can find all hosts using the following command.
```
$ ansible all --list-hosts
hosts (3):
node1.2g.lab
node2.2g.lab
node3.2g.lab
```
Run the below command for individual groups.
```
$ ansible web --list-hosts
hosts (2):
node1.2g.lab
node2.2g.lab
```
### How to Perform a Task Using the ad-hoc Command
Once the host inventory validation check is done, you are ready to drive a car. Here you go..!
**Syntax:**
```
ansible [pattern] -m [module] -a "[module options]"
Details:
========
ansible: A command
pattern: Enter the entire inventory or a specific group
-m [module]: Run the given module name
-a [module options]: Specify the module arguments
```
Use the Ping module to ping all nodes in your inventory:
```
$ ansible all -m ping
node3.2g.lab | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
node1.2g.lab | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/bin/python"
},
"changed": false,
"ping": "pong"
}
node2.2g.lab | SUCCESS => {
"ansible_facts": {
"discovered_interpreter_python": "/usr/libexec/platform-python"
},
"changed": false,
"ping": "pong"
}
```
All systems have given a successful result, nothing has changed, and return `pong on success.
You can get a list of available modules using the following command.
```
$ ansible-doc -l
```
Currently supports 3387 built-in modules, which will grow with each Ansible release:
```
$ ansible-doc -l | wc -l
3387
```
Use the command module to execute commands against all nodes in your inventory:
```
$ ansible all -m command -a "uptime"
node3.2g.lab | CHANGED | rc=0 >>
18:05:07 up 1:21, 3 users, load average: 0.12, 0.06, 0.01
node1.2g.lab | CHANGED | rc=0 >>
06:35:06 up 1:21, 4 users, load average: 0.01, 0.03, 0.05
node2.2g.lab | CHANGED | rc=0 >>
18:05:07 up 1:25, 3 users, load average: 0.01, 0.01, 0.00
```
Execute the command module for a specific group.
To check the memory usage for the **“app”** group.
```
$ ansible app -m command -a "free -m"
node3.2g.lab | CHANGED | rc=0 >>
total used free shared buff/cache available
Mem: 1993 1065 91 6 836 748
Swap: 1425 0 1424
```
To run the hostnamectl command against the **“web”** group, use the following format.
```
$ ansible web -m command -a "hostnamectl"
node1.2g.lab | CHANGED | rc=0 >>
Static hostname: CentOS7.2daygeek.com
Icon name: computer-vm
Chassis: vm
Machine ID: 002f47b82af248f5be1d67b67e03514c
Boot ID: dc38f9b8089d4b2d9304e526e00c6a8f
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
CPE OS Name: cpe:/o:centos:centos:7
Kernel: Linux 3.10.0-957.el7.x86_64
Architecture: x86-64
node2.2g.lab | CHANGED | rc=0 >>
Static hostname: node2.2g.lab
Icon name: computer-vm
Chassis: vm
Machine ID: e39e3a27005d44d8bcbfcab201480b45
Boot ID: 27b46a09dde546da95ace03420fe12cb
Virtualization: oracle
Operating System: CentOS Linux 8 (Core)
CPE OS Name: cpe:/o:centos:centos:8
Kernel: Linux 4.18.0-80.el8.x86_64
Architecture: x86-64
```
**Reference:** [Ansible Docs][11]
--------------------------------------------------------------------------------
via: https://www.2daygeek.com/install-configure-ansible-automation-tool-linux-quick-start-guide/
作者:[Magesh Maruthamuthu][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://www.2daygeek.com/author/magesh/
[b]: https://github.com/lujun9972
[1]: data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7
[2]: https://www.2daygeek.com/linux-dnf-command-examples-manage-packages-fedora-centos-rhel-systems/
[3]: https://www.2daygeek.com/install-enable-epel-repository-on-rhel-centos-oracle-linux/
[4]: https://www.2daygeek.com/apt-get-apt-cache-command-examples-manage-packages-debian-ubuntu-systems/
[5]: https://www.2daygeek.com/apt-command-examples-manage-packages-debian-ubuntu-systems/
[6]: https://www.2daygeek.com/pacman-command-examples-manage-packages-arch-linux-system/
[7]: https://www.2daygeek.com/yum-command-examples-manage-packages-rhel-centos-systems/
[8]: https://www.2daygeek.com/zypper-command-examples-manage-packages-opensuse-system/
[9]: https://www.2daygeek.com/install-pip-manage-python-packages-linux/
[10]: https://www.2daygeek.com/configure-setup-passwordless-ssh-key-based-authentication-linux/
[11]: https://docs.ansible.com/ansible/latest/user_guide/index.html

View File

@ -0,0 +1,146 @@
[#]: collector: (lujun9972)
[#]: translator: ( )
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (Syncthing: Open Source P2P File Syncing Tool)
[#]: via: (https://itsfoss.com/syncthing/)
[#]: author: (Ankush Das https://itsfoss.com/author/ankush/)
Syncthing: Open Source P2P File Syncing Tool
======
_**Brief: Syncthing is an open-source peer-to-peer file synchronization tool that you can use for syncing files between multiple devices (including an Android phone).**_
Usually, we have a cloud sync solution like [MEGA][1] or Dropbox to have a backup of our files on the cloud while making it easier to share it.
But, what do you do if you want to sync your files across multiple devices without storing them on the cloud?
That is where [Syncthing][2] comes to the rescue.
### Syncthing: An open source tool to synchronize files across devices
![][3]
Syncthing lets you sync your files across multiple devices (including the support for Android smartphones). It primarily works through a web UI on Linux but also offers a GUI (to separately install).
However, Syncthing does not utilize the cloud at all it is a [peer-to-peer][4] file synchronization tool. Your data doesnt go to a central server. Instead, the data is synced with all the devices between them. So, it does not really replace the [typical cloud storage services on Linux][5].
To add remote devices, you just need the device ID (or simply scan the QR code), no IP addresses involved.
If you want a remote backup of your files you should probably rely on the cloud.
![Syncthing GUI][6]
All things considered, Syncthing can come in handy for a lot of things. Technically, you can have your important files accessible on multiple systems securely and privately without worrying about anyone spying on your data.
For instance, you may not want to store some of the sensitive files on the cloud so you can add other trusted devices to sync and keep a copy of those files.
Even though I described it briefly, theres more to it and than meets the eye. Id also recommend reading the [official FAQ][7] to clear some confusion on how it works if youre interested.
### Features of Syncthing
You probably do not want a lot of options in a synchronization tool it should be dead simple to work reliably to sync your files.
Syncthing is indeed quite simple and easy to understand even though it is recommended that you should go through the [documentation][8] if you want to use every bit of its functionality.
Here, Ill highlight a few useful features of Syncthing:
#### Cross-Platform Support
![Syncthing on Android][9]
Being an open-source solution, it does support Windows, Linux, and macOS.
In addition to that, it also supports Android smartphones. Youll be disappointed if you have an iOS device so far, no plans for iOS support.
#### File Versioning
![Syncthing File Versioning][10]
Syncthing utilizes a variety of [File Versioning methods][11] to archive the old files if they are replaced or deleted.
By default, you wont find it enabled. But, when you create a folder to sync, thats when you will find the option to toggle the file versioning to your preferred method.
#### Easy To Use
While being a peer-to-peer file synchronization tool, it just works out of the box with no advanced tweaks.
However, it does let you configure advanced settings when needed.
#### Security &amp; Privacy
Even though you do not share your data with any cloud service providers, there are still some connections made that might gain the attention of an eavesdropper. So, Syncthing makes sure the communication is secured using TLS.
In addition to that, there are solid authentication methods to ensure that only the devices/connections you allow explicitly will be granted access to sync/read data.
For Android smartphones, you can also force the traffic through Tor if youre using the [Orbot app][12]. Youll find several other options for Android as well.
#### Other Functionalities
![][13]
When exploring the tool yourself, you will notice that there are no limits to how many folders you can sync and the number of devices that you can sync.
So, being a free and open-source solution with lots of useful features makes it an impressive choice for Linux users looking to have a peer-to-peer sync client.
### Installing Syncthing on Linux
You may not observe a .deb file or an .AppImage file for it on its official download webpage. But, you do get a snap package on the [Snap store][14] if youre curious you can read about [using snap apps][15] on Linux to get started.
You may not find it in the software center (if you do it may not be the latest version).
**Note:** _Theres also a [Syncthing-GTK][16] available if you want a GUI to manage that instead of a browser._
[Syncthing][2]
You can also utilize the terminal to get it installed if you have a Debian-based distro the instructions are on the [official download page][17].
### My experience with Syncthing
Personally, I got it installed on Pop!_OS 19.10 and used it for a while before writing this up.
I tried syncing folders, removing them, adding duplicate files to see how the file versioning works, and so on. It worked just fine.
However, when I tried syncing it to a phone (Android) the sync started a bit late, it wasnt very quick. So, if we could have an option to explicitly force sync, that could help. Or, did I miss the option? Let me know in the comments if I did.
Technically, it uses the resources of your system to work so if you have a number of devices connected to sync, it should potentially improve the sync speed (upload/download).
Overall, it works quite well but I must say that you shouldnt rely on it as the only backup solution to your data.
**Wrapping Up**
Have you tried Syncthing yet? If yes, how was your experience with it? Feel free to share it in the comments below.
Also, if you know about some awesome alternatives to this let me know about it as well.
--------------------------------------------------------------------------------
via: https://itsfoss.com/syncthing/
作者:[Ankush Das][a]
选题:[lujun9972][b]
译者:[译者ID](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://itsfoss.com/author/ankush/
[b]: https://github.com/lujun9972
[1]: https://itsfoss.com/install-mega-cloud-storage-linux/
[2]: https://syncthing.net/
[3]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/01/syncthing-screenshot.jpg?ssl=1
[4]: https://en.wikipedia.org/wiki/Peer-to-peer
[5]: https://itsfoss.com/cloud-services-linux/
[6]: https://i1.wp.com/itsfoss.com/wp-content/uploads/2020/01/syncthing-gtk.png?ssl=1
[7]: https://docs.syncthing.net/users/faq.html
[8]: https://docs.syncthing.net/users/index.html
[9]: https://i0.wp.com/itsfoss.com/wp-content/uploads/2020/01/syncthing-android.jpg?ssl=1
[10]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/01/syncthing-file-versioning.jpg?ssl=1
[11]: https://docs.syncthing.net/users/versioning.html
[12]: https://play.google.com/store/apps/details?id=org.torproject.android&hl=en_IN
[13]: https://i2.wp.com/itsfoss.com/wp-content/uploads/2020/01/syncthing-screenshot1.jpg?ssl=1
[14]: https://snapcraft.io/syncthing
[15]: https://itsfoss.com/install-snap-linux/
[16]: https://github.com/syncthing/syncthing-gtk/releases/latest
[17]: https://syncthing.net/downloads/

View File

@ -1,71 +0,0 @@
[#]: collector: (lujun9972)
[#]: translator: (Morisun029)
[#]: reviewer: ( )
[#]: publisher: ( )
[#]: url: ( )
[#]: subject: (4 ways to volunteer this holiday season)
[#]: via: (https://opensource.com/article/19/12/ways-volunteer)
[#]: author: (John Jones https://opensource.com/users/johnjones4)
假期志愿服务的4种方式
======
想要洒播些节日的快乐吗?为开源组织做贡献,帮助有需要的社区。
![Gift box opens with colors coming out][1]
当领导者们配置人员和资源以做出积极改变时,就会产生社会影响。但是,许多社会努力都缺乏能够为这些改变者提供服务的技术资源。然而,有些组织通过将想要做出改变的开发人员与迫切需要更好技术的社区和非营利组织联系起来,来促进技术进步。这些组织通常为特定的受众提供服务,并招募特定种类的技术人员,它们有一个共同点:开源。
作为开发人员,我们出于各种原因试图加入开源社区。有些是为了专业发展,有些是为了能够与广阔的网络上令人印象深刻的技术人员合作,还有其他人则是因为他们清楚自己的贡献对于项目的成功的必要性。为什么不将你作为开发人员的才华投入到需要它的地方,而同时又为开源组织做贡献呢?以下组织是实现此目标的一些主要事例。
### Code for America
Code for America 是在数字时代政府如何依靠人民为人民服务的一个例子。通过其Brigade Network该组织在美国各个城市中组织了一个由志愿程序员数据科学家相关公民和设计师组成的全国联盟。这些本地分支机构定期举行聚会向社区开放。这样既可以向小组推出新项目又可以协调正在进行的工作。为了使志愿者与项目相匹配各网站经常列出项目所需的特定技能例如数据分析内容创建和JavaScript。同时Brigade网站也会关注当地问题分享自然灾害等共同经验这些都可以促进成员之间的合作。例如新奥尔良休斯敦和坦帕湾团队合作开发了一个飓风响应网站当灾难发生时该网站可以快速响应不同的城市灾难情况。
想要加入该组织,请访问 [网站][2] 获取70 多个 Brigade 的清单,以及个人加入组织的指南。
### Code for Change
Code for Change 显示了即使在高中时期,也可以为社会做贡献。印第安纳波利斯的一群高中编码员成立了自己的俱乐部,他们通过创建针对社区问题的开源软件解决方案来回馈当地组织。 Code for Change 鼓励当地组织提出项目构想,学生团体加入并开发完全免费和开源的解决方案。该小组已经开发了诸如“蓝宝石”之类的项目,该项目优化了当地难民组织的志愿者管理系统,并建立了民权委员会的投诉表格,方便公民就他们所关心的问题在网上发表意见。
有关如何在你自己的社区中创建 Code for Change[访问他们的网站][3].
### Python for Good/Ruby for Good
Python for Good and Ruby for Good 是在俄勒冈州波特兰市和弗吉尼亚州费尔法克斯市举办的双年展活动,该活动将人们聚集在一起,为各自的社区开发和制定解决方案。
在周末,人们聚在一起聆听当地非营利组织的建议,并通过构建开源解决方案来解决他们的问题。 2017年Ruby For Good参与者创建了“ Justice for Juniors”该计划指导当前和以前被监禁的年轻人并将他们重新融入社区。参与者还创建了“ Diaperbase”这是一种库存管理系统已被美国各地的尿布银行使用。这些活动的主要目标之一是将看似不同的行业和思维方式的组织和个人聚集在一起以谋求共同利益。公司可以赞助活动非营利组织可以提交项目构想各种技能的人都可以注册参加活动并做出贡献。通过两岸美国大西洋和太平洋东西海岸的努力Ruby for Good 和Python for Good 一直恪守“使世界变得更好”的座右铭。
[Ruby for Good][4] 在夏天举行举办地点在弗吉尼亚州费尔法克斯的乔治•梅森George Mason大学。
### Social Coder
英国的Ed Guiness创建了Social Coder将志愿者和慈善机构召集在一起为六大洲的非营利组织创建和使用开源项目。 Social Coder积极招募来自世界各地的熟练IT志愿者并将其与通过Social Coder注册的慈善机构和非营利组织进行匹配。项目范围从简单的网站更新到整个移动应用程序的开发。
例如PHASE Worldwide 是一个在尼泊尔支持工作的小型非政府组织因为Social Coder它获得了利用开源技术的关键支持和专业知识。
有许多慈善机构已经与英国的Social Coder进行了合作也欢迎其它国家的组织加入。通过他们的网站个人可以注册为社会软件项目工作找到寻求帮助的组织和慈善机构。
对 Social Coder 的志愿服务感兴趣的个人可以 [在此][5]注册.
--------------------------------------------------------------------------------
via: https://opensource.com/article/19/12/ways-volunteer
作者:[John Jones][a]
选题:[lujun9972][b]
译者:[Morisun029](https://github.com/译者ID)
校对:[校对者ID](https://github.com/校对者ID)
本文由 [LCTT](https://github.com/LCTT/TranslateProject) 原创编译,[Linux中国](https://linux.cn/) 荣誉推出
[a]: https://opensource.com/users/johnjones4
[b]: https://github.com/lujun9972
[1]: https://opensource.com/sites/default/files/styles/image-full-size/public/lead-images/OSDC_gift_giveaway_box_520x292.png?itok=w1YQhNH1 (Gift box opens with colors coming out)
[2]: https://brigade.codeforamerica.org/
[3]: http://codeforchange.herokuapp.com/
[4]: https://rubyforgood.org/
[5]: https://socialcoder.org/Home/Programmer