未来のいつか/hyoshiokの日記

hyoshiokの日々思うことをあれやこれや

GitHub勉強に行ってきたにゃん

ともちゃんがGitHubを勉強したいにゃん、ということなので、勉強会に行ってきた。みんな猫耳つけて発表するというわけのわからない勉強会であった。
http://atnd.org/events/48075

のれんがかかっていた。
これらはすべて手作り
沢田さんの説明
LTもあった
GitHub実践入門とステッカー

わたしのお話は、GitがLinusの自分の問題を解決することから始まったというような歴史の話からあれやこれや。Linuxソースコードを管理するためには分散型、高速、高信頼性などが必要。

Linusは自分のPCのバックアップをとっていなくてもコミットしたものをインターネットにおいておけば誰かがコピーして、そのコピーは改竄することが非常に難しいので安全に複数のバックアップをもつことが出来る、というようなことを言っている。

Gitのレポジトリはどれが親とか子とかなくて、forkしたものをどんどん変更してcommitすることができる。これが分散型の特徴。特に、元のレポジトリにアクセス権を持つ必要がない。昔のOSSの開発スタイルだと、ごく少数のすごい人たちだけがコミット権を持っていて、その人たちがボトルネックになっていた。それが分散型だと、だれもが自分がコピーしたレポジトリにどんどんコミットができるので、バグを入れちゃって壊すこともあるし、すごい機能が出来ちゃうこともある。すごいものが出来たら、それをpull requestして本家本元に取り込んで貰うように頼む。このようなワークフローのおかげで、コミッターと呼ばれる人たちの文化的な役割がかなりかわってきた。

コミットの粒度は、論理的な一塊、例えば、バグ修正とか機能追加とか。そして、コミットのコメントは命令形で書く。Fix bug-1234とか。こーゆーことはドキュメントに書いてあるので、読む。

GitHub flowというのがあって、標準的なワークフローになっている。ブランチを作って、そこで何か作業をしてコミットして、プルリクエストをして、レビューして、マージしてデプロイする。シンプルなワークフローである。

GitHubにはパンチカードという機能があって、作業が可視化できる。
https://github.com/RyuPiT/SharePla/graphs/punch-card

OSSを自由にフォークして開発し、プルリクエストを行うというソーシャルコーディングがGitHubを中心に広がってきた。元のレポジトリに対してコミット権を必要としていないのが集中型のレポジトリをもとにした運用、ワークフローとの決定的な違いである。

OSSのコラボレーションを加速するためにも、ソフトウェアのライセンスは明示しよう。デフォルトでは、MIT/Apache/GPLから選ぶといい。

ハッカー倫理は、情報の共有、公開、分散、コンピュータに対する自由なアクセス、世界をよくすることなどからなる。インターネットはそのような価値観で発展してきた。FacebookのHackerwayなどは有名だ。

Be Hacker ハッカーになろう。
Make the World a better place 世界をよりよくしよう。