Openstack贡献者须知 — OpenPGP/SSH/CLA贡献者协议

目录

前言

由Openstack基金委员会管理的Openstack社区,现在已经成为了全球第二大开源社区仅次于Linux社区,所以也有人将Openstack定义为下一个Linux。就从我个人角度出发,我认为Openstack和Linux不属于同一类事物,所以不具有继承性和可比性。但无论怎样都好,如果想成为Openstack这一个方向的专家的话,加入Openstack社区是必不可少的一步。

Openstack基金委员会

Openstack基金委员会的主要工作:

  • 管理Openstack的开发流程、版本发布
  • 管理Openstack开发者、用户、社区生态体系
  • 收集用户需求
  • 商标管理
  • 社区事务管理(summit meetup)
  • 法律问题

Openstack基金会成员类型:

  • 技术委员会:负责Openstack代码管理、项目质量把握
  • 董事委员会:决定了Openstack未来发展的方向,有铂金会员、黄金会员、个人会员等几个级别
  • 用户委员会:收集不同的用户对Openstack的需求

Openstack贡献者须知

注册Openstack In Launchpad

Launchpad是Ubuntu的亲妈Canonical所资助的网站,是一个提供维护、支持或连络Ubuntu或相关开发者的Web平台,在这个平台上还可以使用汇报机制来报告相关软件的Bug,或进一步提供建议。

Launchpad中包含了Openstack Project Group托管了Openstack的所有项目 —— Openstack In Launchpad
注意:我们可以通过电子邮箱来注册Launchpad的账号,注意在选择LaunchpadID时要慎重,这是不可修改的。点这里 进入Launchpad。

在Openstack in Launchpad中你能得到什么帮助?

  • 很方便跳转到Openstack相关的网站
    这里写图片描述

  • 常见问题的答案
    这里写图片描述

  • 了解最新的Bugs reported
    这里写图片描述

  • 最新的Openstack blueprints
    这里写图片描述

  • 上传一个自己遇见的BUG,提出自己的问题
    这里写图片描述

生成并上传OpenPGP密钥

在注册Launchpad完成之后,需要设置OpenPGP密钥,并上传SSH公钥,来保证往后在Launchpad上进行操作的安全性。
注意:一下的步骤必须使用Ubuntu才能完成。

OpenPGP:Pretty Good Privacy(PGP)是一个提供加密和认证的计算机程序。PGP经常被用于签名、加密和解密电子邮件,以增加电子邮件通信的安全性。

Introducing OpenPGP keys:
An OpenPGP (also called GnuPrivacyGuard) key allows you to sign documents, such as emails or text files, using a digital key.

There are two parts to an OpenPGP key:
one public that you share with the world and the other private, which you should guard closely. Both are standard text files that make up a digital signature.

为什么要在Launchpad中使用OpenPGP
In Launchpad, you can use your OpenPGP key to identify yourself when using the bug tracker’s email interface, when uploading distribution packages and when signing a code of conduct.
简单来说, 就是Launchpad需要使用数字签名来确认我们所作的工作是否为自己的操作。 如果上传了一个源码包到Launchpad, 系统必须在接受这个源码包之前确认你的身份。

在Ubuntu中创建一个OpenPGP Key

  • 方式一:使用Passwords and Encryption Keys tool来创建OpenPGP Key。
    可以直接通过GUI打开 ==> 安装sudo apt-get install seahorse ==> seahorse启动Passwords and Encryption Keys
    这里写图片描述

    • Create the OpenPGP Keys
      这里写图片描述
    • 等上一段时间,在PGP密钥选项卡能找到新建的OpenPGP Key
      这里写图片描述
  • 方式二:也可以直接通过指令行来完成创建和上传OpenPGP key

    • 创建:gpg --gen-key
jmilkfan@jmilkfan-guestos:~/桌面$ gpg --gen-key 
gpg (GnuPG) 1.4.16; Copyright (C) 2013 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

请选择您要使用的密钥种类:
   (1) RSA and RSA (default)
   (2) DSA and Elgamal
   (3) DSA (仅用于签名)
   (4) RSA (仅用于签名)
您的选择? 1                              #选择默认的(RSA and DSA)Key type 就可以
RSA 密钥长度应在 1024 位与 4096 位之间。    
您想要用多大的密钥尺寸?(2048)              #Key size,默认为(currently 2048),4096会更安全
您所要求的密钥尺寸是 2048 位
请设定这把密钥的有效期限。
         0 = 密钥永不过期
      <n>  = 密钥在 n 天后过期
      <n>w = 密钥在 n 周后过期
      <n>m = 密钥在 n 月后过期
      <n>y = 密钥在 n 年后过期
密钥的有效期限是?(0) 0                    #0 = 密钥永不过期
密钥永远不会过期
以上正确吗?(y/n) y

您需要一个用户标识来辨识您的密钥;本软件会用真实姓名、注释和电子邮件地址组合
成用户标识,如下所示:
    “Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>”

真实姓名: fanguiju
电子邮件地址: fan_guiju@163.com
注释: This is LaunchPad OpenPGP key
您选定了这个用户标识:
    “fanguiju (This is LaunchPad OpenPGP key) <fan_guiju@163.com>”

更改姓名(N)、注释(C)、电子邮件地址(E)或确定(O)/退出(Q)? o
您需要一个密码来保护您的私钥。

我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。               #需要一些时间来创建Key,期间由于程序需要一些随机数, 你需要尽量的进行一些操作,比如移动鼠标或者点击键盘

随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要201字节)
..+++++
.........+++++
我们需要生成大量的随机字节。这个时候您可以多做些琐事(像是敲打键盘、移动
鼠标、读写硬盘之类的),这会让随机数字发生器有更好的机会获得足够的熵数。

随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要92字节)
..+++++

随机字节不够多。请再做一些其他的琐事,以使操作系统能搜集到更多的熵!
(还需要128字节)
..............+++++
gpg: 密钥 B88FA626 被标记为绝对信任
公钥和私钥已经生成并经签名。

gpg: 正在检查信任度数据库
gpg: 需要 3 份勉强信任和 1 份完全信任,PGP 信任模型
gpg: 深度:0 有效性:  3 已签名:  0 信任度:0-,0q,0n,0m,0f,3u
pub   2048R/B88FA672 2016-07-15
      密钥指纹 = AA32 3EBD 1FBF 11F6 9B3C  9F44 3F53 EDE7 B88F XXXX
uid                  fanguiju (This is LaunchPad OpenPGP key) <fan_guiju@163.com>
sub   2048R/05B876C1 2016-07-15


#到处Key创建成功B88FA672为KeyID。 指纹为AA32 3EBD 1FBF 11F6 9B3C  9F44 3F53 EDE7 B88F XXXX
  • 上传你的OpenPGP key到Ubuntu keyserver
gpg --keyserver keyserver.ubuntu.com --sendkeys <KeyID>
  • 在Launchpad上填写密钥指纹来匹配Key
    这里写图片描述
    在匹配成功后Launchpad会发送一封邮件给你,邮件包含了你的密钥和接触密钥的方法。

  • 在本地验证OpenPGP key
    首先需要将邮件中给出的key的内容存放到一个文件中,EG. gpgkey
    注意:需要存放-----BEGIN PGP MESSAGE-----开始,到-----BEGIN PGP MESSAGE-----结尾的全部内容。

jmilkfan@JmilkFan-Openstack:~$ gpg -t 桌面/gpgkey 

您需要输入密码,才能解开这个用户的私钥:“fanguiju (This is Launchpad openpgp keys) <fan_guiju@163.com>”
2048 位的 RSA 密钥,钥匙号 DD3FF8DC,建立于 2016-07-15 (主钥匙号 06E66903)

gpg:2048 位的 RSA 密钥加密,钥匙号为 DD3FF8DC、生成于 2016-07-15
      “fanguiju (This is Launchpad openpgp keys) <fan_guiju@163.com>”
gpg: 桌面/gpgkey:未知的后缀名
请输入新的文件名 [-&38]: gpgkeyDecryption       #给出一个新文件名用于放解密的结果


1. OpenPGP操作手册
2. PGP Howto使用手册

生成并上传SSH公钥

为Gerrit设置SSH帐户。Gerrit是OpenStack的代码评审工具,用于保证贡献者贡献代码的质量。登陆OpenStack代码审查页面(使用Launchpad帐户登录),并上传SSH公钥。

SSH(Secure Shell),是一个允许你在网络上安全传输数据的协议。推荐使用SSH来进入另外一台服务器,以及传输文件。例如:我们会使用SSH来上传源码包到Launchpad。

  • 生成SSH Keygen
jmilkfan@JmilkFan-Openstack:~/桌面$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/jmilkfan/.ssh/id_rsa):        
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /home/jmilkfan/.ssh/id_rsa.
Your public key has been saved in /home/jmilkfan/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:LjOkO8dlz5Vs42d3ZMXIr/Ur+uUdVRkJKzA6SzUqPAM jmilkfan@JmilkFan-Openstack
The key's randomart image is:
+---[RSA 2048]----+
|   E     =   ....|
|    o   + +   ..o|
|     = =   . o +.|
|      = o   . o +|
|      ..S  . . .o|
|     o .o   *   *|
|    ..+o.o + . B.|
|    ..o+  o ..* *|
|    .o     .o+.++|
+----[SHA256]-----+
jmilkfan@JmilkFan-Openstack:~/桌面$ cat /home/jmilkfan/.ssh/id_rsa.pub 
ssh-rsa AAAAB3NzaC1yc2EBBBBDAQABAAABAQDKfshB2KlZn54XWtqXThJohsT1F5MNR9IPDzDfIRUIeLxhyW+sSzXQniQPJBO2QOFktIAPyNvK+hIPxE6BWwCKvNYWFVnQLZ9N9S9+EuCpDONFUJY5N+I8wxNXMRMwo0Rs5HEj8wEvV1C7c6TcxoZXbt1pc6n37dwiEFd9b4vs55aVHljFBxrjLnLa7nIyMlGHo444qAPR9962Y/iqPFqscbu/QsOFuXv2PrIsCPOaIqYfQQXOwHMKcU12jLAL4Zw6aFeW34SSReA3UJYjw0wvowSfBB8m1BXdo6fpzCuumcEdjPMKEPCkL8/vB46kBLWJg9gxmDn3h9BnwuiTUM+x jmilkfan@JmilkFan-Openstack
  • 点击右上角的UserName ==> Setting ==> SSH Public Keys选项卡,再根据提示将上述操作获取的SSH公钥Upload。
    这里写图片描述

这里写图片描述

Join The OpenStack Foundation

The Mission
The OpenStack Foundation is an independent body providing shared resources to help achieve the OpenStack Mission by Protecting, Empowering, and Promoting OpenStack software and the community around it, including users, developers and the entire ecosystem.

Openstack Foundation有几种不同级别的账号,其中个人账号(Individual Member)是可以免费加入的。个人账号又分为社区成员基金会成员两种,对应拥有不同的权限。
这里写图片描述

一般而言,我们个人开发者更多的会申请基金会成员,因为需要签署CLA贡献者协议。

签署CLA贡献者协议

签署CLA贡献者协议的前提是你已经加入了Openstack Foundation。

Step1. Sign In Code Review(使用Launchpad Account to Sign In)

Step2. 签署贡献者协议。除非您是美国政府雇员,否则请同意ICLA(Individual Contributor License Agreement)并提供联系信息。你的所有姓名和电子邮件地址都是公开的。https://review.openstack.org/#/settings/agreements
这里写图片描述

填充信息并完成协议签署
注意:Launchpad的主要电子邮件地址需要与你的OpenStack Foundation Member身份设置的电子邮件地址相匹配。
这里写图片描述

这里写图片描述

Step3. 加入OpenStack Contributors Group。需要以会员身份提交代码更改。但这需要Team Administrator的确认才能够加入。如果你是以个人贡献者的身份工作的话,那么执行Step2就足够了。

参考资料

How do I make a PGP key?
向 OpenStack 贡献您的代码
如何使用Launchpad平台参与社区开发
加入ubuntu开源社区开发工作1-准备工作
“Cannot store contact Information” when updating info in OpenStack gerrit

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
文本详细介绍了HDFS中的许多概念,对于理解Hadoop分布式文件系统很有帮助。 1. 介绍 在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为分布式文件系统。而一旦在系统中,引入网络,就不可避免地引入了所有网络编程的复杂性,例如挑战之一是如果保证在节点不可用的时候数据不丢失。 传统的网络文件系统(NFS)虽然也称为分布式文件系统,但是其存在一些限制。由于NFS中,文件是存储在单机上,因此无法提供可靠性保证,当很多客户端同时访问NFS Server时,很容
首先,在这里首先感谢台湾林智仁先生的开源工具包libsvm。使SVM算法更加普及。大家可以到下面的libsvm官网去了解相关的信息。 Libsvm官方网站- https://www.csie.ntu.edu.tw/~cjlin/libsvm/ 其次,我在使用过程中发现,先生svm_scale文件中无法将经过规约的文件输出到本地txt文件中,只能在控制台重定向,而我并不想在程序运行中打开控制台进行较为繁琐的操作。 所以我改造了svm_scale文件,实现了文件的写入,在这里可以和大家分享一下。 改造后新增参

Sqoop-1.4.5用户手册 - 2016-07-15 17:07:22

本文以 Sqoop User Guide (v1.4.5) 为主,对Sqoop-1.4.5的用户手册进行翻译,同时会结合一些实际操作中的注意事项一并写入。由于原文档很长,本文首先会以实际使用到的部分为主,逐步进行完善。 1、Introduction Sqoop是一个用于在Hadoop和关系型数据库之间流转数据的一个工具。可以使用Sqoop将数据从关系型数据库系统(RDBMS)比如MySQL或者Oracle导入到Hadoop分布式文件系统(HDFS)上,然后数据在Hadoop MapReduce上转换,以及
前言 近日在线上发现有些mapreduce作业的执行时间很长,我们需要解决这个问题。输入文件的大小是5G,采用了lzo压缩,整个集群的默认block大小是128M。本文将详细描述这次线上问题的排查过程。 现象 线上有一个脚本,为了便于展示,我将这个脚本重新copy了一份并重命名为zzz。这个脚本实际是使用Hadoop streaming运行一个mapreduce任务,在线上执行它的部分输出内容如下: 可以看到map任务划分为1个。这个执行过程十分漫长,我将中间的一些信息省略,map与reduce任务的执行

Hadoop+Hive部署安装配置 - 2016-07-15 17:07:47

最近结合具体的项目,搭建了Hadoop+Hive,在运行Hive之前要首先搭建好Hadoop,关于Hadoop的搭建有三种模式,在以下的介绍中,我主要的采用的是Hadoop的伪分布安装模式。写下来给各位分享。 准备工作: 以上所有的下载的安装包和解压后文件均在/usr/local/hadoop目录 1、 分别ssh到每台服务器上 ,在root用户下修改hostname su root vim /etc/sysconfig/network 如上图所示,HOSTNAME=master vim /etc/hos
本文主要结合Spark-1.6.0的源码,对Spark中任务调度模块的执行过程进行分析。Spark Application在遇到Action操作时才会真正的提交任务并进行计算。这时Spark会根据Action操作之前一系列Transform操作的关联关系,生成一个DAG,在后续的操作中,对DAG进行Stage划分,生成Task并最终运行。整个过程如下图所示,DAGScheduler用于对Application进行分析,然后根据各RDD之间的依赖关系划分Stage,根据这些划分好的Stage,对应每个Sta

Hadoop 2.0工作原理学习 - 2016-07-15 17:07:13

1 HDFS简介 1.1 Hadoop 2.0介绍 Hadoop是Apache的一个分布式系统基础架构,可以为海量数据提供存储和计算。Hadoop 2.0即第二代Hadoop系统,其框架最核心的设计是HDFS、MapReduce和YARN。其中,HDFS为海量数据提供存储,MapReduce用于分布式计算,YARN用于进行资源管理。 Hadoop 1.0和Hadoop 2.0的结构对比: Hadoop 2.0的主要改进有: 1、通过YARN实现资源的调度与管理,从而使Hadoop 2.0可以运行更多种类的
    本文借鉴官文,添加了一些解释和看法,其中有些理解,写的比较粗糙,有问题的地方希望大家指出。写这篇文章,是想把一些官文和资料中基础、重点拿出来,能总结出便于大家理解的话语。与大多数“wordcount”代码不同的是,并不会有如何运行第一storm代码等内容,只有在运行完代码后,发现需要明白:“知其然,并知其所以然”。 Storm是什么?为什么要用Storm?为什么不用Spark? 第一个问题,以下概念足以解释: Storm是 基于数据流的实时处理系统 ,提供了大吞吐量的实时计算能力。通过数据入口获取
本文要解决的问题: 从源码级别对Spark Streaming进行简单学习。 Summarize Spark Streaming实现了对实时流数据的高吞吐量、低容错的数据处理API。它的数据来源有很多种:Kafka、Flume、Twitter、ZeroMQ、TCP Scoket等。架构图如下: Streaming接收实时流输入的数据,将其按批划分,然后交给Spark Enigne分批处理。如下图所示: StreamingContext 和SparkContext相似。要使用Spark的流处理就必须创建St
1.前言 HBase是云计算环境下最重要的NOSQL数据库,提供了基于Hadoop的数据存储、索引、查询,其最大的优点就是可以通过硬件的扩展从而几乎无限的扩展其存储和检索能力。但是HBase与传统的基于SQL语言的关系数据库无论从理念还是使用方式上都相去甚远,以至于要将基于SQL的项目移植到HBase时往往需要重写整个项目。 为了解决这个问题,很多开源项目提供了HBase的类SQL中间件,意即提供一种在HBase上使用的类SQL语言,使得程序员能够像使用关系数据库一样使用HBase, Apache Pho