2017年6月

 title=

大多数的开源项目的主要语言都是英语,但是开源项目的用户和贡献者却遍布全球。非英语母语的人在参与这个生态系统时会面临许多沟通和文化上的挑战。

在这篇文章中,作为不以英语为母语的 OpenStack 的贡献者的我们将会分享一些所面临挑战——如何去克服它们,还有一些好的方案,它们能够减轻不以英语为母语且刚开始从事的人的焦虑。我们的总部在日本、巴西和中国,每天都会与世界各地的大型 OpenStack 社区合作。

OpenStack 的官方语言是英语,这意味着我们是作为非英语为母语的人士来进行交流。

挑战

非英语为母语的人士在开源社区工作时会面临具体沟通挑战:它们与有限的语言技能和文化差异有关。

语言技能

让我们来关注在阅读、写作、听力和口语背后的具体语言技能。

阅读:这是最简单也是最重要的技能。最简单是因为:如果你不明白写了什么,你有机会再次阅读它,或者需要的话可以多次阅读。如果你遇到了一个不常见的短语、表达式或者缩写,你可以使用一个词典或者翻译器。在另一方面,它是最重要的技能是因为:对大多数开源项目而言,主要的交流方式都是邮件列表和 IRC。

写作:英语语法是一个问题,尤其是对句子结构不同的语言而言。这可能会在用电子邮件进行通信和通过 IRC 频道进行通信时产生问题。对一些人来说,写出又长又漂亮的句子比较困难,而普遍依赖于简单句子,这是因为这些易于书写和理解。

听力:这对非英语为母语的人来说比阅读和写作更加困难。通常,英语为母语的人之间的对话在非常快的,这就使得那些仍然处于刚从事阶段的人很难理解他们的讨论,同时也限制了他们参与到讨论当中。此外,试图理解一个遍布全球的社区的各种口音也增加了复杂性。有意思的是,美国人的发音往往比其他的容易理解。

口语:口语比听力更加的困难,因为参与者的词汇量可能会比较有限。而且,英语的音素和语法通常与那些母语不是英语的人的母语相差很大,这就使得互动更加的难以理解。

文化差异

在开源社区与其他人交流时,每种文化都有它自己不同的规范。例如,日本人通常不会明确的说好的或者不,他们认为这是尊重别人的一种方式,可以避免彼此间的争论。这通常与其他的文化大不一样,可能会对所表达的内容造成误解。

在中国文化中,人们倾向于只是说好的,而不是说不,或者试图商讨。在一个像 OpenStack 这样的分布于全球的社区里,这通常会导致在表达意见时缺乏自信。另外,中国人喜欢首先列出事实,然后在后面给出结论,而这会对来自其他文化中的人造成困惑,因为这不是他们所期望的。

例如,巴西人可能会认为讨论是以类似的方式进行的;然而,其他文化的反应会很直接和简短,这听起来可能会有点粗鲁。

克服障碍

语言技能方面的挑战要比文化差异方面的挑战容易克服。文化差异需要被受到尊重,然而英语技能却总是可以被改善的。

为了刷新你的语言技能,你应该尽可能多地接触该语言。不要担心你的局限,只管尽自己所能,你终将会得到改善。

尽可能多的阅读,因为这有助于你积累词汇。通过日常的聊天和邮件列表进行交流也很有帮助。一些工具,如实时字典和翻译器,对这些平台非常有用。

与别人或者你自己交谈可以帮助你更自如地频繁地说话。进行一对一的对话来表达你的想法比在更大的群体中讨论更容易。

新手的融入

来自新手和母语者的一些举措可能会对学习过程产生积极的影响。

新手

说出和写下你的意见,并且提出你的问题;参与其中总是一个练习你的英语的很好的机会。不要害怕。

对于会议,确保你提前准备过,这样你将会对会议主题比较熟悉,而且会对自己要表达的意见更加的自信。

与英语为母语的人结交朋友,多和他们讨论来提高你的英语技能。

用英语写博客和技术文章也是不错的主意。

给英语为母语的人士的建议

请说话慢一点儿,同时使用一些简单的单词和句子。如果你发现了非英语为母语的人使用英语中的一些错误请不要嘲笑他们,尝试鼓励新来的人表达自己的意见,让他们非常舒适地表达意见。

这篇文章由 Masayuki Igawa、Dong Ma 和 Samuel de Medeiros Queiroz 共同协作完成,可以在 Hobart 的 linux.conf.au 2017(#lca2017):开源社区中的非英语母语者:一个真实的故事中了解更多

( 题图:opensource.com)


作者简介:

Masayuki Igawa 是一名拥有 15 年大量软件项目经验的软件工程师,目前正在开发与 Linux 内核和虚拟化相关开源软件。自 2013 年起,他就一直是一名活跃的 OpenStack 项目贡献者。他是像 Tempest 和 subunit2sql 这样一些 OpenStack QA 项目的核心成员。他目前就职于 HPE 的 Upstream OpenStack 团队,该团队目的是使 OpenStack 更适合所有人。他以前曾在 OpenStack 峰会上发表演讲。


via: https://opensource.com/article/17/1/non-native-speakers-take-open-source-communities

作者:Masayuki Igawa 译者:zhousiyu325 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

通过一些简单的 Google 搜索,即使是编程入门者也可以尝试编写代码将以往枯燥和冗长的任务自动化。

 title=

我前几天写了一个脚本。对于一些人来说,这句话听起来没什么了不起的。而对于另一些人来说,这句话意义重大。要知道,我不是一个程序员,而是一个作家。

我需要解决什么?

我的问题相当简单:我需要将工程文件进行分类。这些文件可以从一个网站 URL 以 .zip 的格式下载。当我正手工将它们拷贝到我的电脑桌面,并移动到一个已按照我文件分类的需要进行了结构化的目录时,一位作家同事给我提了建议:“不就是写个脚本的事吗?”

我心想:“就写个脚本?”——说得好像这是世界上最容易做的事情一样。

Google 是如何解救我的?

同事的问题促使我思考,并且经过思考后,我进行了 Google 搜索。

Linux 上使用的是什么脚本编程语言?

这是我第一个 Google 搜索的准则。也许很多人心里会想:“她太笨了!”是的,我很笨。不过,这的确使我走上了一条解决问题的道路。最常见的搜索结果是 Bash 。嗯,我听说过 Bash 。呃,我要分类的文件中有一个里面就有 Bash,那无处不在的 #!/bin/bash 。我重新看了下那个文件,我知道它的用途,因为我需要将它分类。

这引导我进行了下一个 Google 搜索。

如何从一个 URL 下载 zip 文件?

那确实是我的基本任务。我有一个带有 .zip 文件的 URL ,它包含有所有我需要分类的文件,所以我寻求万能的 Google 的帮助。搜索到的精华内容和其它一些结果引导我使用 Curl 。但最重要的是:我不仅找到了 Curl ,其中一条置顶的搜索结果还展示了一个使用 Curl 去下载并解压 .zip 文件的 Bash 脚本。这超出了我本来想寻求的答案,但那也使我意识到在 Google 搜索具体的请求可以得到我写这个脚本需要的信息。所以,在这个收获的推动下,我写了最简单的脚本:

#!/bin/sh

curl http://rather.long.url | tar -xz -C my_directory --strip-components=1

我迫不及待地运行看看。但我发现一个问题: URL 是会变的,根据我要访问的文件的分组不同而不同。我有新的问题需要解决,这使我进行了下一轮搜索。

参数如何传递给 Bash 脚本?

我需要以不同的 URL 和不同的最终目录来运行此脚本。 Google 向我展示了如何使用 $1、$2 等等来替换我在命令行中运行脚本时输入的内容。比如:

bash myscript.sh http://rather.long.url my_directory

这就好多了。一切如我所愿,灵活,实用。最重要的是我只要输入一条简短的命令就可以节省 30 分钟无聊的复制、粘贴工作。这个早上的时间花得值得。

然后我发现还有一个问题:我很健忘,并且我知道我几个月才运行一次这个脚本。这留给我两个疑问:

  • 我要如何记得运行脚本时输入什么(URL 先,还是目录先)?
  • 如果我被货车撞了,其它作家如何知道该怎样运行我的脚本?

我需要一个使用说明 —— 如果我使用不正确,则脚本会提示。比如:

usage: bash yaml-fetch.sh <'snapshot_url'> <directory>

否则,则直接运行脚本。我的下一个搜索是:

如何在 Bash 脚本里使用 “if/then/else”?

幸运的是,我已经知道编程中 if/then/else 的存在。我只要找出如何使用它的方法。在这个过程中,我也学到了如何在 Bash 脚本里使用 echo 打印。我的最终成果如下:

#!/bin/sh

URL=$1
DIRECTORY=$2

if [ $# -eq 0 ];
 then
 echo "usage: bash yaml-fetch.sh <'snapshot_url'> <directory>".
 else

# 如果目录不存在则创建它
 echo 'create directory'

 mkdir $DIRECTORY

 # 下载并解压 yaml 文件
 echo 'fetch and untar the yaml files'

 curl $URL | tar -xz -C $DIRECTORY --strip-components=1
fi

Google 和脚本编程如何颠覆我的世界?

好吧,这稍微有点夸大,不过现在是 21 世纪,学习新东西(特别是稍微简单的东西)比以前简单多了。我所学到的(除了如何写一个简短的、自动分类的 Bash 脚本之外)是如果我有疑问,那么有很大可能性是其它人在之前也有过相同的疑问。当我困惑时,我可以问下一个问题,再下一个问题。最后,我不仅拥有了脚本,还拥有了可以一直拥有并可以简化其它任务的新技能,这是我之前所没有的。

别止步于第一个脚本(或者编程的第一步)。这是一个技能,和其它的技能并无不同,有大量的信息可以在这一路上帮助你。你无需阅读大量的书或参加一个月的课程。你可以像婴儿学步那样简单地开始写脚本,然后掌握技能并建立自信。人们总有写成千上万行代码的需求,并对它进行分支、合并、修复错误。但是,通过简单的脚本或其它方式来自动化、简单化任务的需求也一样强烈。这样的一个小脚本和小小的自信就能够让你启程脚本编程之路。

(题图: opensource.com)


作者简介:

Sandra McCann 是一位 Linux 和开源技术的倡导者。她是一位软件开发者、学习资源内容架构师、内容创作者。桑德拉目前是位于韦斯特福德马萨诸塞州的红帽公司的内容创作者,专注于 OpenStack 和 NFV 技术。


via: https://opensource.com/article/17/5/how-i-learned-bash-scripting

作者:Sandra McCann 译者:xllc 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Shell 脚本编程 是你在 Linux 下学习或练习编程的最简单的方式。尤其对 系统管理员要处理着自动化任务,且要开发新的简单的实用程序或工具等(这里只是仅举几例)更是必备技能。

本文中,我们将分享 10 个写出高效可靠的 bash 脚本的实用技巧,它们包括:

1、 脚本中多写注释

这是不仅可应用于 shell 脚本程序中,也可用在其他所有类型的编程中的一种推荐做法。在脚本中作注释能帮你或别人翻阅你的脚本时了解脚本的不同部分所做的工作。

对于刚入门的人来说,注释用 # 号来定义。

# TecMint 是浏览各类 Linux 文章的最佳站点

2、 当运行失败时使脚本退出

有时即使某些命令运行失败,bash 可能继续去执行脚本,这样就影响到脚本的其余部分(会最终导致逻辑错误)。用下面的行的方式在遇到命令失败时来退出脚本执行:

# 如果命令运行失败让脚本退出执行
set -o errexit 
# 或
set -e

3、 当 Bash 用未声明变量时使脚本退出

Bash 也可能会使用能导致起逻辑错误的未声明的变量。因此用下面行的方式去通知 bash 当它尝试去用一个未声明变量时就退出脚本执行:

# 若有用未设置的变量即让脚本退出执行
set -o nounset
# 或
set -u

4、 使用双引号来引用变量

当引用时(使用一个变量的值)用双引号有助于防止由于空格导致单词分割开和由于识别和扩展了通配符而导致的不必要匹配。

看看下面的例子:

#!/bin/bash
# 若命令失败让脚本退出
set -o errexit 
# 若未设置的变量被使用让脚本退出
set -o nounset
echo "Names without double quotes" 
echo

names="Tecmint FOSSMint Linusay"

for name in $names; do
  echo "$name"
done

echo
echo "Names with double quotes" 
echo

for name in "$names"; do
  echo "$name"
done

exit 0

保存文件并退出,接着如下运行一下:

$ ./names.sh

Use Double Quotes in Scripts

在脚本中用双引号

5、 在脚本中使用函数

除了非常小的脚本(只有几行代码),总是记得用函数来使代码模块化且使得脚本更可读和可重用。

写函数的语法如下所示:

function check_root(){
  command1; 
  command2;
}
# 或
check_root(){
  command1; 
  command2;
}

写成单行代码时,每个命令后要用终止符号:

check_root(){ command1; command2; }

6、 字符串比较时用 = 而不是 ==

注意 == 是 = 的同义词,因此仅用个单 = 来做字符串比较,例如:

value1=”tecmint.com”
value2=”fossmint.com”
if [ "$value1" = "$value2" ]

7、 用 $(command) 而不是老旧的 command 来做代换

命令代换 是用这个命令的输出结果取代命令本身。用 $(command) 而不是引号 command 来做命令代换。

这种做法也是 shellcheck tool (可针对 shell 脚本显示警告和建议)所建议的。例如:

user=`echo “$UID”`
user=$(echo “$UID”)

8、 用 readonly 来声明静态变量

静态变量不会改变;它的值一旦在脚本中定义后不能被修改:

readonly passwd_file=”/etc/passwd”
readonly group_file=”/etc/group”

9、 环境变量用大写字母命名,而自定义变量用小写

所有的 bash 环境变量用大写字母去命名,因此用小写字母来命名你的自定义变量以避免变量名冲突:

# 定义自定义变量用小写,而环境变量用大写
nikto_file=”$HOME/Downloads/nikto-master/program/nikto.pl”
perl “$nikto_file” -h  “$1”

10、 总是对长脚本进行调试

如果你在写有数千行代码的 bash 脚本,排错可能变成噩梦。为了在脚本执行前易于修正一些错误,要进行一些调试。通过阅读下面给出的指南来掌握此技巧:

  1. 如何在 Linux 中启用 Shell 脚本调试模式
  2. 如何在 Shell 脚本中执行语法检查调试模式
  3. 如何在 Shell 脚本中跟踪调试命令的执行

本文到这就结束了,你是否有一些其他更好的 bash 脚本编程经验想要分享?若是的话,在下面评论框分享出来吧。


作者简介:

Aaron Kili 是一个 Linux 和 F.O.S.S(Free and Open-Source Software,自由及开放源代码软件)爱好者,未来的 Linux 系统管理员、Web 开发人员,目前是 TecMint 的内容创作者,他喜欢用电脑工作,且崇尚分享知识。


via: https://www.tecmint.com/useful-tips-for-writing-bash-scripts-in-linux/

作者:Aaron Kili 译者:ch-cn 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

漂亮的新 Google Play Music 应用,从电子风格转向完美契合 Play 商店的风格。 [Ron Amadeo 供图]

在 I/O 大会推出的另一个应用更新是 Google Music 应用。音乐应用经过了完全的重新设计,最终摆脱了蜂巢中引入的蓝底蓝色调的设计。Play Music 的设计和几个月前发布的 Play 商店一致,有着响应式的白色卡片布局。Music 同时还是最早采用新抽屉导航样式的主要应用之一。谷歌还随新应用发布了 Google Play Music All Access,每月 10 美元的包月音乐订阅服务。Google Music 现在拥有订阅计划,音乐购买,以及云端音乐存储空间。这个版本还引入了“Instant Mix”,谷歌会在云端给相似的歌曲计算出一份歌单。

一个展示对 Google Play Games 支持的游戏。上面是 Play 商店游戏特性描述,登陆游戏触发的权限对话框,Play Games 通知,以及成就界面。 [Ron Amadeo 供图]

谷歌还引入了 “Google Play Games”,一个后端服务,开发者可以将其附加到游戏中。这项服务简单说就是安卓版的 Xbox Live 或苹果的 Game Center。开发者可以给游戏添加 Play Games 支持,这样就能通过使用谷歌的后端服务,更简单地将成就、多人游戏、游戏配对、用户账户以及云端存档集成到游戏中。

Play Games 是谷歌在游戏方面推进的开始。就像单独的 GPS 设备,翻盖手机,以及 MP3 播放器,智能手机的生产者希望游戏设备能够变成智能手机的一个功能点。当你有部智能手机的时候你为什么还有买个任天堂 DS 或 PS Vita 呢?一个易于使用的多人游戏服务是这项计划的重要部分,我们仍能看到这个决定最后的成果。在今天,坊间都在传言谷歌和苹果有关于客厅游戏设备的计划。

Google Keep,谷歌自 Google Notebook 以来第一个笔记服务。 [Ron Amadeo 供图]

毫无疑问一些产品为了赶上 Google I/O 大会的发布准时开发完成了,但是三个半小时内的主题已经够多了,一些产品在大会的发布上忽略了。Google I/O 大会的三天后一切都清楚了,谷歌带来了 Google Keep,一个用于安卓和在线的笔记应用。Keep 看起来很简单,就是一个用上了响应式 Google-Now 风格设计的笔记应用。用户可以改变卡片的尺寸,从多栏布局改为单列视图。笔记可以由文本,清单,自动转文本的语音或者图片组成。笔记卡片可以拖动并在主界面重新组织,你甚至可以给笔记换个颜色。

Gmail 4.5,换上了新的导航抽屉设计,去掉了几个按钮并将操作栏合并到了抽屉里。 [Ron Amadeo 供图]

在 I/O 大会之后,没有哪些应用没出现在谷歌的周期外更新里。2013 年 6 月,谷歌发布了新版设计的 Gmail。最显眼的变化就是一个月前 Google I/O 大会引入的新导航抽屉界面。最吸引眼球的变化是用上了 Google+ 资料图片来取代复选框。虽然复选框看起来被去掉了,它们其实还在那,点击邮件左边的图片就是了。

新谷歌地图,换上了全白的 Google-Now 风格主题。 [Ron Amadeo 供图]

一个月后,谷歌在 Play 商店发布了全新的谷歌地图。这是谷歌地图自冰淇淋三明治以来第一个经过细致地重新设计的版本。新版本完全适配了 Google Now 白色卡片审美,还大大减少了屏幕上显示的元素。新版谷歌地图似乎设计时有意使地图总是显示在屏幕上,你很难找到除了设置页面之外还能完全覆盖地图显示的选项。

这个版本的谷歌地图看起来活在它自己的小小设计世界中。白色的搜索栏“浮动”在地图之上,地图显示部分在它旁边和上面都有。这和传统的操作栏设计有所不同。一般在应用左上角的导航抽屉,在这里是在左下角。这里的主界面没有向上按钮、应用图标,也没有浮动按钮。

新谷歌地图轻量化了许多,在一屏内能够显示更多的信息。 [Ron Amadeo 供图]

左边的图片显示的是点击了搜索栏后的效果(带键盘,这里关闭了)。过去谷歌在空搜索栏下面显示一个空页面,但在地图中,谷歌利用这些空间链接到新的“本地”页面。搜索结果页显示一般信息的结果,比如餐馆、加油站,以及景点。在结果页的底部是个列表,显示你的搜索历史和手动缓存部分地图的选项。

右侧图片显示的是地点页面。上面地图 7.0 的截图里显示的地图不是略缩图,它是完整的地图视图。在新版的谷歌地图中,地点作为卡片浮动显示在主地图之上,地图重新居中显示该地点。向上滑动可以让卡片覆盖地图,向下滑动可以显示带有底部一小条结果的完整地图。如果该地点是搜索结果列表中的一个,左右滑动可以在结果之间切换。

地点页面重新设计以显示更有用的信息概览。在第一页,新版添加了重要信息,比如地图上的位置,点评得分,以及点评数目。因为这是个手机,所以软件内可以直接拨打电话,电话号码的显示被认为是毫无意义的,被去掉了。旧版地点显示到那里的距离,新版谷歌地图显示到那里的时间,基于交通状况和偏好的交通方式——一个更加实用的衡量方式。新版还在中间放了个分享按钮,这使得通过即时通讯或短信协调的时候更加方便。

Android 4.3,果冻豆——早早支持可穿戴设备

如果谷歌没有在安卓 4.3 和安卓 4.2 之间通过 Play 商店发布更新的话,安卓 4.3 会是个不可思议的更新。如果新版 Play 商店、Gmail、地图、书籍、音乐、Hangouts 环聊,以及 Play Games 打包作为新版安卓的一部分,它将会作为有史以来最大的发布受到欢呼。虽然谷歌没必要延后新功能的发布。有了 Play 服务框架,只剩很少的部分需要系统更新,2013 年 7 月底谷歌发布了看似无关紧要的“安卓 4.3”。

安卓 4.3 通知访问权限界面的可穿戴设备选项。 [Ron Amadeo 供图]

谷歌也毫无疑问地认为 4.3 的重要性不高,将新版也叫做“果冻豆”(第三个叫果冻豆的版本了)。安卓 4.3 的新功能列表像是谷歌无法通过 Play 商店或谷歌 Play 服务更新的部分的细目清单,大部分包含了为开发者作出的底层架构改动。

但许多新增功能似乎只为了一个目的——安卓 4.3 是谷歌对可穿戴计算支持的特洛伊木马。4.3 加入了低功耗蓝牙支持,使用很少的能耗将安卓和其它设备连接到一起并传输数据——可穿戴设备的必要特性。安卓 4.3 还添加了“通知访问权限”API,允许应用完全复制和控制通知面板。应用可以显示通知文本以及和用户操作一样地和通知交互——也就是点击操作按钮和消除通知。当你有个通知面板时从本机应用做这个操作没什么意义,但是在一个独立于你手机的设备上,复制通知面板的消息就显得很有用了。为数不多的接入的应用是 “Android Wear Preview(安卓可穿戴预览)”,使用了通知 API 驱动大部分的 Android Wear 界面。

“4.3 是给可穿戴设备准备的”这个理论解释了 4.3 相对较少的新特性:它的推出是为了给 OEM 厂商时间去升级设备,为 Android Wear 的发布做准备。这个计划看起来起作用了。Android Wear 要求 安卓 4.3 及以上版本,安卓 4.3 已经发布很长时间了,大部分主要的旗舰设备都已经升级了。

安卓并没有那么激动人心,但安卓从现在起的新版也不需要那么激动人心了。一切都变得那么模块化了,谷歌可以通过 Google Play 在它们完成时随时推送更新,不用再作为一个大系统更新来更新这么多组件。


Ron Amadeo / Ron是Ars Technica的评论编缉,专注于安卓系统和谷歌产品。他总是在追寻新鲜事物,还喜欢拆解事物看看它们到底是怎么运作的。@RonAmadeo


via: http://arstechnica.com/gadgets/2016/10/building-android-a-40000-word-history-of-googles-mobile-os/24/

译者:alim0x 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出

One Last Question

ps aux 以及 ps -elf 都是查看进程的方式,分别来自于 BSD 风格(必须不带 -)和 UNIX 风格(必须带 -),这两种方式都有不少人用,此外除了这种可组合的单字母选项方式之外,还有以 -- 开头的 GNU 选项方式。

这个漫画就是说使用这两种方式的人就像 vim 党和 Emacs 党一样,随时都可能爆发圣战(大误 。

附录:

ps aux 是最常用的 BSD 风格选项组合,其中的 a 简单的说,表示所有关联到终端的进程,如果同时使用 x 则代表所有进程;u 表示列出进程的用户。

另外,可能是由于错用 ps -aux 的人太多,一些新的 ps 版本会在输入 ps -aux 时显示 ps aux 的结果,而不是 ps -aux 原本的意义:列出用户 x 所有的进程,如果没有则报错。

ps -elf 的 -e 代表列出所有进程,-l 代表长格式,-f 代表完整的格式,有时候也用 -F 代表超完整的格式,具体大家试试便知。 不过,不同操作系统(如 Linux、BSD)的 ps 的版本和参数有很大差异,具体还是要以自己的手册而定。

另外一句题外话,之所以 aux 和 -elf 这两种选项组合常用,是由于这个组合正好是易记、易读的英文单词(辅助、精灵),其组合后的用途也很有用。这种情况也出现在其它的常见命令中。

注:本漫画中原来用的是 ps -eLF,在某些版本上这个参数是成立的,但是,大部分情况下都使用的是 ps -elf,因此我们做了修改。


via: http://turnoff.us/geek/one-last-question/

作者:Daniel Stori 译者:name1e5s 校对:wxy 合成:name1e5s 点评:name1e5s

本文由 LCTT 原创编译,Linux中国 荣誉推出

你们都知道了吧,LinuxCon 第一次走进中国了,就在下周一,Linux 基金会将携豪华阵容隆重降临北京国家会议中心,而且,Linus Torvalds 大神也将第一次出现在中国。

好吧,我知道你们知道了,可是你们知道,就是那个微软公司,它又又又来了!你或许知道微软参加 LinuxCon 已经不是第一次了,从 2015 年开始,微软就频频出现在 LinuxCon 上了,而且,就在去年11月,还进一步宣布成为了 Linux 基金会的最顶级的白金会员!

可能还有人不太习惯将微软和开源视作一个阵营,也有一些社区意见领袖一直对此持谨慎的态度。好吧,无论是不是还担心微软的居心,但是我们这几年可以看到,微软在开源领域的举措之多,已经不亚于其在商业软件方面的动作了。

那么,这次微软来 LinuxCon 会做什么演讲呢?老王专门找了 Linux 基金会的 Maggie 去联系上了微软,想要提前挖掘一些内幕出来。

《我变故我在——微软与开源共舞》

根据日程安排,这次微软安排了若干重量级代表出席 LinuxCon,其中就包括微软中国云计算与企业事业部的资深合伙人及高级总监梁戈碧女士,而她除了会 LinuxCon 大会上的技术女性午餐会之外,还会做题为《我变故我在——微软与开源共舞》的演讲,这真是一个意料之外又在情理之中的演讲啊。

梁戈碧女士

梁戈碧女士拥有威廉玛丽学院的计算机科学硕士学位。在加盟微软前就职于英特尔15年,先后在美国和中国的英特尔公司担任多个技术和领导职务。她在云计算领域拥有卓越的成就,领导设计了 Windows Azure 存储等面向全球客户的云计算产品和服务。更重要的是,她对开源和技术有独特的认知,在微软内部积极推动和布道开源的技术和解决方案。更是在微软内部积极参与女性平权活动,为倡导女性在 IT 领域的地位和发展做出了卓越的贡献。

让我们猜猜梁女士将会谈到什么?

✿ 根据我们侧面了解到的信息,她会回顾微软的开源历史,总结微软已经在开源上取得的进展。

2014 年 10 月 20 日,出任微软公司首席执行官不久的萨提亚 ∙ 纳德拉第一次公开宣示了微软对 Linux 和开源世界的新感情。过去两年,从微软智能云 Azure 到 Windows 10,从开发工具到数据库平台,“把 Linux 放在重中之重”,已经成为微软内部人人皆知的准则。

—— 《拥抱开源,微软是认真的 》

微软开源简史

现在,微软逐渐加大了对开源和 Linux 方面的关注和投入,诸如 PowerShell、Visual Studio Code 以及 Edge JavaScript 引擎这样的项目,已经逐个开源化,将微软推近这个它曾经憎恨过的开源世界。而且,通过 Windows 10,微软开始走进 Linux,因为该操作系统内置了 Ubuntu。 在收购了 Xamarin 之后,还开源了其软件开发工具包。此外,微软还和 Red Hat 和 SUSE 合作在Azure 云上推出了有官方支持的 Linux 镜像。而今年初,微软还发布了 Linux 上的 SQL Server,甚至得到了鲍尔默的赞誉。

开源在整个微软公司,已经蔚然成风

✿ 她还会解释微软是如何和Linux 社区及其它社区合作的。

据我们所知,Linux 基金会并不是微软加入的第一个行业领袖级的 Linux 团体,微软已经参与了几个 Linux 基金会项目的贡献,包括 Node.js 基金会、 OpenDaylight、开放容器促进联盟、R 社团、开放 API 促进联盟等。

✿ 然后会通过对微软的开源战略的分享,用一系列真实的例子来例证微软不仅仅是拥抱开源,而且还对开源技术进行创新,并将这些创新回馈给社区。

根据去年的章鱼猫报告,GitHub上开源贡献者最多的组织是微软,超过了 Facebook、docker,以及谷歌。

GitHub 的 2016 章鱼猫报告中,微软以贡献者数量最多而排名第一

这充分证明了微软的开源策略的实行情况。据微软内部资料,其开源策略分为四个方面:支持、整合、发布和贡献。

微软的开源策略

✿ 通过与社区密切合作,让核心创新给客户带来更具敏捷性、创造性的产品和服务之选。

随着微软在开源开放方面的举措,其核心产品,无论是 SQL Server 这样的重量级数据库,还是 Windows 10 中内置 Linux 子系统,也包括 .NET Core 、TypeScript 这样的开发环境和工具语言,纷纷开源或支持 Linux 。

微软核心产品开源或支持 Linux

而作为微软近年来重中之重的 Azure 云业务,也在各个层面上全面支持开源。包括从底层的基础设施、容器、数据库和中间件,乃至于平台框架、应用程序。均采用和支持了大量的开源组件。

Azure 在各个层次全面支持开源

梁女士的演讲时间并不长,按照日程安排只有短短的15分钟,但其所表达出来微软对开源的信心和坚决的态度,令人瞩目,我想,开源社区是该正视微软这个软件巨人闯入开源世界的所带来的新格局了。

LinuxCon 技术女性午餐会

当然,除了这段演讲之外,其实,我也非常关注由微软主持的 LinuxCon 技术女性午餐会。虽然作为中年大叔,但是我觉得我还是坚决支持女性在技术和开源领域的发展的(我不是为了混进午餐会才这么说的!)。据说,有人引荐的话,像我这样的进步分子是可以参加技术女性午餐会的,我正在考虑要不要推掉下周一中午的其它(机油)邀约……

国内技术圈对技术女性的处境和发展并没有像硅谷那样形成一种潮流,但是我们也听到和看到了一些这样的活动和观点。事实上,在国内技术女性的发展还处于较早的阶段,因此,关怀女性,尤其是关怀技术女性的发展,是技术界应该重视的一件事。这也是为什么 LinuxCon 上有专门的技术女性午餐会的安排的原因。

具体,在这个午餐会上有什么见闻,请大家等我的第一时间火线报道吧!:-D

那么,LinuxCon 见!

(本文中所采用的部分图片来自微软公司,得到了梁戈碧女士、微软公司的许可。文中提及的名称和商标均属于其商标许可人所有。)