最近、GitLab Core Teamメンバーになりました、@tnirです。
現在GitLab Core Teamは5人しかいませんので、オープンなイシュー数1万という大台に乗るかどうかという状況の中、Core Teamメンバーを積極募集中です。
GitLabはIssue TrackerとしてGitLab Issuesをドッグフーディングして日々開発が行なわれています。
Core Teamメンバーはそのイシューのトリアージをすることも一つのタスクです。
今日はGitLab CEのIssuesに上がっている未解決機能のうち、人気の20個を取り上げたいと思います。
人気のある今後導入されるかもしれない機能 20選
順位は2017年12月上旬のものですので、今後の 数の増減によって変動します。
20-11位
時間がないので、11-20位は一気にいきます。
20位: Create dark application theme
19位: Discord integration
18位: Extend online view of HTML artifacts to private projects
17位: Feature Request: Allow runners to push via their CI token
16位: One group level issue board in CE
15位: Allow arbitrary build "results"
14位: Make GitLab pages support access control
13位: User inputted variables for manual CI steps
12位: Per-group and per-project notification emails (just like for notification levels)
11位: Snippets with multiple files
10位: Visual UML diagram editor
2が5個並んで気持ちのよいイシューですね。
しかし、内容はよく分かりません。Viasul UMLエディタと聞くと、既に実装済みのPlantUMLのWYSIWYG対応かと思ったのですが、そうではなく、もっと自由度の高いUMLエディタが欲しいという流れのようです。
via https://draw.io
ちなみに、GitLab TeamによるGitLab本体の開発では、そのような自由な図を共有するた目的でGoogle Docs/Slidesを使っています。
9位: Shared CI runners for groups
CIランナーの共有範囲は、プロジェクト個別指定(プロジェクトごとに有効化していくホワイトリスト方式)かシステム全体に共有するしかありませんでした。3グループ(A,B,C)でそれぞれ10個ずつのプロジェクト(1-10)を持っていたとします。グループAのプロジェクト1, 2, 3, ..., 9, 10と、グループBのプロジェクト1, 2, 3, ..., 9, 10とにプロジェクト個別指定タイプのCIランナーを割り当てるには、20回のWeb UI操作(60回くらいのクリック?)または20回のAPI呼び出しが必要です。
そこで必要になるのがこのグループへのCIランナーアサインです。グループの数(この場合2個)だけのクリックで、グループへのランナーのアサインが可能です。
※ 「グループ」: GitHubでいうところのTeamに相当。
8位: Run jobs only/except when there are modifications on a given path
CIパイプラインのジョブの実行要否/除外条件として、変更されたオブジェクト(ファイル)のパス(ディレクトリ名+ファイル名)を使う、というものです。
既に、ブランチ名よるジョブの実行要否/除外条件設定機能は提供されていますので、その延長線とも言えます。
実装するのは簡単だけど、実用上のパフォーマンス劣化、限定的ユースケースなど検討すべき点が多そうな印象です。
7位: add the ability to delete an environment
GitLab CI/CDには環境(environements)と呼ばれるコードベースのインスタンスの管理機能があるのですが、環境を削除することができないので、Web UI上からはそれを削除することができません。(REST APIには削除APIが存在します。)
あまり需要がないのが、実装する人が現れないようです。こちらのイシューは初めてのコントリビューションとして取り組むのに適切な規模と言えると思います。
6位: Let's encrypt support for GitLab Pages
元々EEのみにあった機能であるGitLab Pagesでletsencryptを使えるようにするというイシューでした。
Pagesの機能がEEからCEにポートされたため、イシューもCEに移されています。
GitLab PagesではSSL証明書を自前で用意しなければならず、GitLabインスタンス管理者の工数を下げられる機能です。
開発者(GitLabユーザ)としてはメリットがなく、本イシューの解決ではdeveloper experience (デベロッパーエクスペリエンス)は改善しないと思われます。
5位: Pipelines for Merge Requests
CIパイプラインの実行開始タイミングとして、Merge Requestsに基づくものを追加するという要望です。
既に、タグ、ブランチが作成・更新された際に、CIパイプラインが実行されるようになっていますが、これにマージリクエストを追加することになります。
これにより、
- ブランチ作成時の無駄なCIパイプライン/ジョブのキューがされなくなる
- フォーク済みプロジェクトにおいて、フォーク元プロジェクトのコンテキストでジョブが実行ができる
- フォーク済みプロジェクトにおいて、フォーク元プロジェクトにマージリクエストに対応するCIパイプライン/ジョブ/アーティファクト/Review Appsが表示/利用できる
などのメリットが享受できるようになると考えられます。
4位: Provide an option/toggle in settings so that private repo commits show up on public user profile graph
プライベートリポジトリにおけるアクティビティをグラフに出すかどうかを切り替えられる機能が欲しいという要望です。
GitHubだとこちらにあります。Publicizing or hiding your private contributions on your profile
個人的には要らないと思っているし、GitHub上で Include private contributions in my profile を有効化している人のねらいも分からないので、優先度はかなり低いと個人的に思っています。
3位: Custom Roles
RBAC (role-based access control) とも言われる機能です。GiLabではpredefined rolesとも呼べるperssmisonsというもので管理していました。
AWSのIAMやKubernetesのRBACのようにプロダクトの成熟やユースケースの増大により必要に迫られていくことが多いので、GitLabも近い将来に導入されるはず(導入されるべき)です。
これがCEでできると、CEで十分だという人も増えるかもしれません。ので、EEのみにするかはコミュニティコントリビューション次第と言えるでしょう。
2位: Add group wiki page support
個人的には全く困っていなくてここまでたくさんの (200以上) が付く理由が分からないのですが、グループ(GitHubでいうところのOrganizations)全体のWikiが欲しいという要望です。
現在は1プロジェクト(GitHubでいうところのrepository)に1個のWikiがひもづくようになっています。
実現するかは分かりませんが、今すぐできるソリューションとしては、グループにWiki専用のプロジェクトを作ってやる、というものです。Wikiではこの方法を利用していたことはありませんが、Issuesではこの方法を使っているという話をしばしば聞きます(し、私も使っています)。
1位: Please bring squash option when merging MRs to CE
2015年12月に一度ユーザフォーラムでリクエストが上がり、CEのイシュー化された(#4106)ものの、EEの機能とするのがふさわしいと判断されて、Enterprise Edition (EES)として導入されています(8.17から)。
その機能をCEにもポートしてほしいというのが本イシューです。EEの機能の基準は100人規模の開発組織で利用されるかどうか、ということになっていますが、30人未満のチームでも欲しくなる機能の一つだと思う人は少なくないようです。
以上、GitLab CEのIssuesに上がっている未解決機能のうち、人気の20個を取り上げました。今後も人気の出てきた/新たに追加されたイシューを定期的にウォッチしていきたいと思います。