Status | Authors | Coach | DRIs | Owning Stage | Created |
---|---|---|---|---|---|
proposed | - |
このドキュメントは作業中のものであり、セルズの設計のごく初期の状態を表しています。重要な点は文書化されていませんが、将来的には追加される予定です。これはCellsの可能性のあるアーキテクチャの一つであり、どのアプローチを実装するか決める前に、代替案と比較検討するつもりです。この文書化は、このアプローチを選ばなかった理由を文書化できるよう、これを実装しないと決めた場合でも残しておきます。
セル個人の名前空間
Cells のアーキテクチャは、すべてのデータが単一の組織に属していることに依存しているため、個人の名前空間は Cells の全体的なアーキテクチャに容易に適合しません。ユーザーが複数の組織にまたがって仕事をすることが許可されている場合、個人の名前空間とそのプロジェクトを保存するために単一の組織を選択することは自然ではありません。
Cellsにおけるエンジニアリング上の重要な制約の一つは、あるOrganizationに属するデータを別のOrganizationに属するデータにリンクしてはならないということです。そして特に、GitLabの機能は一度に一つのOrganizationにスコープすることができます。これは、個人用Namespaceにとって重要なワークロードの一つであるフォークという課題をもたらします。フォークに関連する機能や、フォークされた MR をユーザーに表示する UI は、ダウンストリームとアップストリームの両方のプロジェクトのデータを同時に必要とすることがよくあります。そのような機能を実装することは、データが異なるセルに保存された異なる組織に属している場合、非常に困難です。これは特にマージリクエストの場合です。マージリクエストはGitLabで最も複雑でパフォーマンスが重要な機能の一つだからです。
今日、個人的な名前空間は、ほとんど重複しない2つの目的を果たします:
- それは、ユーザーが他のユーザーからの貢献を期待しない個人的なプロジェクトを作成する場所を提供することです。この使用例では、自分専用のグループを作成する必要がありません。
- ブランチをプッシュする権限のないプロジェクトに貢献する際に、ユーザーが作成したフォークを置くデフォルトの場所を提供します。この場合も、フォークを保存するためだけにグループを作成する必要はありません。しかし、ここでのユーザーの主なニーズは、アップストリームプロジェクトにブランチをプッシュできないのでフォークを作成し、そのフォークからマージリクエストを貢献することです。
1.定義
個人ネームスペースはユーザー名に基づいており、ユーザーがアカウントを作成するときに提供されます。ユーザーは、個人ネームスペースの下に個人プロジェクトを作成できます。
2.データフロー
3.提案
上述したように、個人用ネームスペースは現在2つの役割を果たしています:
- グループを作成する手間を省くために、ユーザーがプロジェクトを保存する場所です。
- ユーザーがブランチをプッシュする権限を持っていないプロジェクトに貢献したいときに、フォークを保存する場所。
この提案では(1)のみに焦点を当て、(2)はCellsで説明されている適切なワークフローで置き換えられることを想定しています:貢献する:フォーク
フォークを保存するためのホームとして個人の名前空間を使用することから脱却する予定なので、残された主なユースケースは組織間のリンクをサポートする必要はないと仮定できます。この場合、最も簡単なのは、すべての個人NamespaceをデフォルトのOrganizationに保持することです。個人Namespacesで発生するワークロードの量によっては、将来的にそれらを別のCellにマイグレーションする必要があるかもしれません。そのため、ユーザー専用に作成された組織にすべて移動する必要があるかもしれません。このルートに進むと、グループやプロジェクトを独自の組織に移動したときと同じような破損が発生する可能性があります。
しかし、この決定によって、アップストリームのプロジェクトに貢献するためのフォークとして使われていた既存の個人用名前空間は、アップストリームが組織に移動すると同時にアップストリームから切り離されることになります。GitLab.com では、個人ネームスペースにあるプロジェクトの 10% がフォークです。これはワークフローを少し混乱させるかもしれませんが、フォークが主にマージリクエストで使われたブランチを保存しているだけであれば、影響を受けるユーザーに組織のコンテキストでフォークを再作成するよう求めるのは合理的かもしれません。
既存のユーザーには、既存の個人ネームスペースをデフォルトの組織に維持することをお勧めします。デフォルトの組織以外の組織に新規に参加するユーザーも、個人の名前空間はデフォルトの組織でホストされます。すべての個人ネームスペースをデフォルトの組織に保持することは、他の組織に存在する場合に発生する、親組織の削除や個人ネームスペースへの影響を心配する必要がないことを意味します。これは、すべてのユーザーが個人の名前空間を経由してデフォルトの組織に関連付けられ、個人の名前空間にアクセスするためにデフォルトの組織に切り替える必要があることを意味します。
ユーザーがブランチをプッシュする権限を持っていないプロジェクトに貢献したい場合、contribution space
。この議論は、Cellsがフォークに与える影響に関するより大きな議論の一部として扱われるでしょう。