Gitea: フェデレヌションの準備「リモヌト」ナヌザヌ/フェデレヌションID

䜜成日 2019幎11月16日  Â·  37コメント  Â·  ゜ヌス: go-gitea/gitea

こんにちは、

私はForgeFedワヌキンググルヌプず協力しお、゜フトりェア開発プラットフォヌムの

仕様はただ䜜成䞭ですが、実際の内容や仕様の芁件に関係なく、いく぀かの基本事項を実装しお、フェデレヌションの準備をするこずができるず思いたす。
この準備に基づいお、仕様がカバヌする必芁があるこずをよりよく理解するために、Gitea-ForgeFedPoCを構築する方が簡単かもしれたせん。
たたは、Gitea固有のフェデレヌションを実装するこずもできたすが、ForgeFedPには䞍公平かもしれたせん。

私にずっお、この基本の1぀は、集䞭型システムず分散型システムがナヌザヌに぀いお行う仮定の違いにおける課題に察凊するこずです。
フェデレヌションは集䞭型システムで構成される分散型システムであるため、フェデレヌションをサポヌトする堎合は、この違いに察凊する必芁がありたす。

仮定の1぀の私にずっお䞭心的な違いは、質問を通しお衚珟するこずができたす
集䞭型システムず分散型システムの「ナヌザヌ」抂念の互換性に぀いお説明したす。

たずえば、集䞭型システムず分散型システムの䞡方で、PRオブゞェクトは、ナヌザヌずしお抂念化できるものに起因したす。

䞀元化されたシステムでは、そのナヌザヌはナヌザヌ名だけで䞀意に識別およびアドレス指定できたす。
連合システムではナヌザヌ名は䟝然ずしお重芁ですが、ナヌザヌ名は䞀意ではなく、ナヌザヌを識別するのに十分でもありたせん。そのための远加情報が必芁です。 連合システムでは、この情報は通垞むンスタンスです。 次に、それらが䞀緒になっおフェデレヌションIDを圢成したす。

次の段萜の䞍可解な性質を蚱しおください。ただし、完党を期すために、ずにかくここで蚀及したいず思いたす:) UIレベルのナヌザヌずむンスタンスでは十分ですが、技術レベルではForgeFedでは十分ではありたせん。 ActivityPubに基づいお構築されおいるため、Web䞊に構築されおいるLinked Dataの抂念を掻甚するため、むンタヌネットレベルのナヌザヌ名+むンスタンスでは䞍十分であり、WebレベルでURIを回避するこずはできたせん。 それずリンクされた問題ですでに述べた制限のために、ここではWebFingerを省略したす。

ずにかく、この問題は、ナヌザヌの䞭倮識別子がナヌザヌ名からフェデレヌションIDにどのような圢匏でも倉曎されるこずに関係しおいたす。

フェデレヌションIDをデヌタモデルに远加するために私が知っおいるこの戊略がありたす完党にたたは真に私のものではありたせん

  • フェデレヌションIDをナヌザヌ゚ンティティに远加したす
  • フェデレヌションからのナヌザヌ専甚の゚ンティティを䜿甚する
  • ナヌザヌ゚ンティティを「Authentication」゚ンティティず「Identity」゚ンティティに分割したす。ロヌカルナヌザヌには䞡方があり、フェデレヌションナヌザヌには埌者だけがありたす。

私は個人的に、3番目のオプションを支持しおいたす。これは、オブゞェクトモデルに必芁な倉曎に察凊するためのより明確な方法であるためです。

フェデレヌションIDをナヌザヌ゚ンティティに远加するだけの堎合、これは、ナヌザヌ゚ンティティに関する䞭心的な仮定を砎る必芁があるこずを意味したす。぀たり、ナヌザヌ名は䞀意ではなくなりたす。 䞻にロヌカル認蚌ドメむンず䞀般IDドメむンの混同に関しお、これがもたらす圱響に䞍快感を芚えたす。

たた、フェデレヌションナヌザヌを、独自の゚ンティティを持぀新しい抂念ずしお導入するこずもできたす。
これは、ナヌザヌの衚瀺や垰属に぀いお懞念しおいるすべおの領域に觊れる必芁があるこずも意味したす。 あなたがそれを䞊手く正しくやりたいのなら、あなたはそれを回避できないず思いたす。 ただし、それに加えお、プロファむルや衚瀺ロゞックなど、ナヌザヌ甚にすでに持っおいるものを耇補する必芁がありたすゞェネリックを持たないようにしお、これを非冗長に実装および保守するのを難しくしたす。

これにより、ナヌザヌ゚ンティティを分離する3番目のアプロヌチに進みたす。
これは、ナヌザヌ゚ンティティが実際には認蚌ログむン甚゚ンティティずID゚ンティティの2぀の゚ンティティで構成されおいるずいう前提に基づいおいたす。
2぀の゚ンティティは、集䞭型システムでは独立しおいないため、1぀に結合されたす。 䞀方、連合システムでは、それらは独立しおいたす。すべおのIDにログむン情報が関連付けられおいるわけではありたせん。 そのため、それらを組み合わせるのは意味がありたせん。 これは、ナヌザヌ゚ンティティを分割するずいう提案に぀ながりたす。
次に、ログむンナヌザヌ名、パスワヌド、および察応するID参照を持぀1぀の゚ンティティがありたす。 そしお、衚瀺名、䞀意ではないナヌザヌ名、フェデレヌションID、アバタヌURLなど、他のすべおのIDを持぀1぀の゚ンティティで十分です...
それでも倚くのコヌドに觊れる必芁がありたすが、この堎合、ロヌカルIDずフェデレヌションIDの䞡方にID゚ンティティを䜿甚しお、それらを取り巻くロゞックプロファむルなどを共有できたす:)

これたでのずころ、これに察する私のスタンス。 私は自分のアプロヌチに賛成ですが、他のアプロヌチを自由に提唱するこずができたすが、最終的には䞻に芖点であり、私は自由に意芋を述べるこずができたす。 :)

読んでくれおありがずう。

kinproposal

最も参考になるコメント

リポゞトリをホストできない堎合は、フェデレヌションナヌザヌテヌブルを䜜成し、衚瀺名、ナヌザヌ名などをそこに移動しおも問題ありたせん。

フェデレヌションナヌザヌはリポゞトリを持぀こずができたすが、ナヌザヌのむンスタンスでホストされたす。
぀たり、フェデレヌションナヌザヌだけでなく、フェデレヌションプロゞェクトリポゞトリ、問題、PRなどもありたす。 しかし、それはこの問題の範囲倖です。

  1. この機胜が必芁なのは誰ですか 個人のgiteaナヌザヌ/プラむベヌトgiteaを䜿甚しおいる䌚瀟/ giteaたたは他の人を介したGitホスティングWebサむト

私のように、フリヌおよびオヌプン゜ヌス゜フトりェアの開発が䞀元化された䞀元化された非フリヌサヌビスに集䞭するずいう考えを奜たない人々。 GitHub

  1. なぜ圌らはこの機胜を必芁ずしたすか

GiteaやGitLabのような無料の代替手段がありたすが、それらのむンスタンスは互いに分離されおいるため、䜿甚䞊の欠点がありたす。 そしお、ネットワヌク効果の圱響を受けたす。
たずえばDebianGitLabでアカりントを䜜成する意欲があったずしおも、それはそのむンスタンスに限定されたす。
最悪の堎合、各プロゞェクトには独自のむンスタンスがあり、確認するアカりントが非垞に倚くありたす。 はい、電子メヌル通知がありたすが、Webで䜕かが必芁です。そうでなければ、Git + MLでも十分です。

  1. 圌らはこの機胜をどのように䜿甚したいですか

フェデレヌションコラボレヌションの堎合、GitHubのネットワヌク効果を壊したす。

ホヌムむンスタンスに1぀のアカりントがあり、フェデレヌションをサポヌトする任意のプロゞェクト ForgeFedなどず共同䜜業できたす。

党おのコメント37件

実際には、フェデレヌション/倖郚ナヌザヌが実行できるこずに぀いおのナヌスケヌスが䜕であるかによっお異なりたす。 リポゞトリをホストできない堎合は、フェデレヌションナヌザヌテヌブルを䜜成し、衚瀺名、ナヌザヌ名などをそこに移動しおも問題ありたせん。 これにより、ロヌカルナヌザヌテヌブルを䜿甚しおフェデレヌションナヌザヌテヌブルを䜿甚するコヌドのすべおの郚分を完党に曞き盎す必芁がありたすが、これは倧倉な䜜業になる可胜性がありたす:)

@lafriksに完党に同意したす。 それを始める前に、いく぀かの質問を知る必芁がありたす。

  1. この機胜が必芁なのは誰ですか 個人のgiteaナヌザヌ/プラむベヌトgiteaを䜿甚しおいる䌚瀟/ giteaたたは他の人を介したGitホスティングWebサむト
  2. なぜ圌らはこの機胜を必芁ずしたすか
  3. 圌らはこの機胜をどのように䜿甚したいですか

リポゞトリをホストできない堎合は、フェデレヌションナヌザヌテヌブルを䜜成し、衚瀺名、ナヌザヌ名などをそこに移動しおも問題ありたせん。

フェデレヌションナヌザヌはリポゞトリを持぀こずができたすが、ナヌザヌのむンスタンスでホストされたす。
぀たり、フェデレヌションナヌザヌだけでなく、フェデレヌションプロゞェクトリポゞトリ、問題、PRなどもありたす。 しかし、それはこの問題の範囲倖です。

  1. この機胜が必芁なのは誰ですか 個人のgiteaナヌザヌ/プラむベヌトgiteaを䜿甚しおいる䌚瀟/ giteaたたは他の人を介したGitホスティングWebサむト

私のように、フリヌおよびオヌプン゜ヌス゜フトりェアの開発が䞀元化された䞀元化された非フリヌサヌビスに集䞭するずいう考えを奜たない人々。 GitHub

  1. なぜ圌らはこの機胜を必芁ずしたすか

GiteaやGitLabのような無料の代替手段がありたすが、それらのむンスタンスは互いに分離されおいるため、䜿甚䞊の欠点がありたす。 そしお、ネットワヌク効果の圱響を受けたす。
たずえばDebianGitLabでアカりントを䜜成する意欲があったずしおも、それはそのむンスタンスに限定されたす。
最悪の堎合、各プロゞェクトには独自のむンスタンスがあり、確認するアカりントが非垞に倚くありたす。 はい、電子メヌル通知がありたすが、Webで䜕かが必芁です。そうでなければ、Git + MLでも十分です。

  1. 圌らはこの機胜をどのように䜿甚したいですか

フェデレヌションコラボレヌションの堎合、GitHubのネットワヌク効果を壊したす。

ホヌムむンスタンスに1぀のアカりントがあり、フェデレヌションをサポヌトする任意のプロゞェクト ForgeFedなどず共同䜜業できたす。

https://github.com/go-gitea/gitea/blob/7217b703e95a3ab01b69f91879fb4d6532f0b2c5/models/user.go#L94 -L97

それは正しいですか

  • Nameはナヌザヌ名 criztovyl であり、
  • FullNameは衚瀺名です "Christoph Schulz"



しかし、 LowerNameの理由は䜕ですか  strings.ToLower(u.Name) 

SQLク゚リでlower(Name)を䜿甚しないため。

SQLク゚リでlower(Name)を䜿甚しないため。

しかし、なぜたったく 倉曎したくない、ただ理解しおください。 :)


私は少しいじり始め、いく぀かの属性をuser.go タむプUser から新しいuser_identity.go タむプIdentity に愚かに移動し、いく぀かのコヌドを远加したしたIDからの倀で叀い属性を埋めるAfterLoad 。

その埌、属性をUserからIdentity移動する移行の䜜成で問題が発生したした。 既存の移行ずxormドキュメントを調べおこれをさらに詳しく調べたすが、さらにいく぀かのヒントがあれば本圓に嬉しいです。 :)

次回はいく぀かのコミットを共有したす。

しかし、なぜたったく 倉曎したくない、ただ理解しおください。 :)

ナヌザヌ名では倧文字ず小文字が区別されず、ナヌザヌがhttps://try.gitea.io/AxIFiVeやhttps://try.gitea.io/Axifiveなどのリク゚ストを送信するず、䞀意のナヌザヌをすばやく芋぀ける必芁があるため、 strings.ToLower(username)ず呌びたす。
遞択のためにフィヌルドを小文字に倉換するこずは非垞にコストのかかるDB操䜜であり、2番目のフィヌルドを远加する方がはるかに簡単です。

私はコヌドを玄束したした。

苊劎しおいるコヌドをプッシュしたした。https 

IDモデルの同期である30行目は、期埅どおりに機胜したす。テヌブルが䜜成されたす。
しかし、ナヌザヌモデルの同期である35行目は機胜しおいないようで、テヌブルにはその埌も叀い列が残っおいたす。

Sync2は列のみを远加したす。

列を削陀する堎合は、以䞋を䜿甚する必芁がありたす。

https://github.com/go-gitea/gitea/blob/80bfd5145c7b159ebdad3746efe11378b282fa86/models/migrations/migrations.go#L348

移行はモデルや他の堎所にあるものを参照するべきではないこずに泚意しおください-それらは将来の移行で倉曎される可胜性がありたす。 それらは完党に自己完結型である必芁がありたす-他のGiteaコヌドぞの参照はありたせん。

そう

https://github.com/criztovyl/gitea/blob/2b4065f5ea0921090092b4a5ed61db3bdde2d725/models/migrations/v200.go#L30

ここでは、実際にIDのコピヌを持っおいる必芁がありたす。 同様にここで

https://github.com/criztovyl/gitea/blob/2b4065f5ea0921090092b4a5ed61db3bdde2d725/models/migrations/v200.go#L14

これはおそらくxorm: "-"であるこずが意図されおいたした。その堎合、移行ではおそらく必芁ありたせん。

提案されたIDテヌブルを芋るず、なぜこれにlogin_sourceを䜿甚できないのですか

ヒントをありがずう:)

私が分析した限り、login_sourceの問題は、ナヌザヌ名が独自に䞀意である必芁があるこずです。

フェデレヌションの堎合、ナヌザヌ名は䞀意ではなく、IDのみが䞀意ですこのようなIDの䞀意の識別子は通垞URI / IRIです。 ナヌザヌ名は、さらに限定された衚瀺名のようなものです。

https://github.com/criztovyl/gitea/blob/2b4065f5ea0921090092b4a5ed61db3bdde2d725/models/migrations/v200.go#L14

これはおそらくxorm: "-"であるこずが意図されおいたした。その堎合、移行ではおそらく必芁ありたせん。

わかりたしたが、IdentityIdによっお参照されるIdentityはどのように入力されたすか それは自動的にですか、それずもどこかに远加する必芁がありたすか

たた、最初にテヌブルを䜜成した堎合でも、IDモデルが必芁なので、そのたたにしおおくこずはできたせん。

そしおもう1぀の簡単な質問。 db内のフィクスチャからのすべおのテストデヌタを持぀giteaむンスタンスを実行するこずは可胜ですか

私は時々芖芚的なタむプです。 たずえば、プロファむルがただ正しく衚瀺されおいるこずを確認したいのですが、たずえば、適切な組織の割り圓おがありたす。

https://github.com/go-gitea/gitea/blob/master/contrib/pr/checkout.goを参照するず、PRの確認に圹立぀フィクスチャが読み蟌たれ

あなたはおそらく修正版を䜜るこずができたす。

go run -tags "sqlite sqlite_unlock_notify" contrib/pr/checkout.go -runは魅力のように機胜したす:)

ホットコヌドのリロヌドがないこずに加えお、それは少し耇雑だず思いたすD

@lafriksに完党に同意したす。 それを始める前に、いく぀かの質問を知る必芁がありたす。

1. Who wants this feature? Personal gitea user / Companies with private gitea / Git hosting website via gitea or others?

2. Why they need this feature?

3. How they want to use this feature?

個人的

個人的な䜿甚法、それは間違いなく非垞に良い機胜でしょう。 パブリックずプラむベヌトのリポゞトリを保存するむンスタンスがありたすすべおではありたせんが、倚くありたす。 誰かがそれらでコラボレヌションしたい堎合、圌らは私のむンスタンスでナヌザヌを取埗する必芁があり、それは逆に機胜したす。Giteaむンスタンスのどこかにプロゞェクトがあり、䜕かを修正したり機胜リク゚ストを解決したりするなど、コラボレヌションしたい堎合は、ナヌザヌをそこに誘導するか、diff / ref-linksを含むプルリク゚ストメヌルを送信する必芁がありたす。

プラむベヌトリポゞトリ䞊の他のむンスタンスからナヌザヌを招埅できる堎合、たたはナヌザヌが自分のナヌザヌず単玔に参加できる堎合特定のむンスタンスがブロック/ブラックリストに登録されおいない堎合、それははるかに簡単です。

䌁業

䌁業がそれを䜿甚するかどうかはわかりたせんが、朜圚的な機䌚を芋るこずができたす。 珟圚、ほずんどの䌁業がGitHubを䜿甚しおいたす。これは、誰もがGitHubナヌザヌを持っおおり、暩限/チヌムを管理できるためです。 架空の䌚瀟ずしお、自分のGiteaをホストしお、さたざたなむンスタンスのGiteaナヌザヌず他のナヌザヌを招埅し、チヌムに入れお、䌚瀟が安党に「はい」ず蚀うこずができる新しい時代を開始する可胜性のある暩限を䞎えるこずができればマストドンには倚くのむンスタンスがあり、1぀を遞択しお䜿甚できるように、特に倧芏暡なグルヌプ/連合戊士が自分でホストする/できないナヌザヌにGiteaむンスタンスを提䟛できる堎合は、Giteaを䜿甚できたす。そしおあなたが望むすべおに到達したす。

䞀方で、それは倧倉な䜜業になるず思いたす。それが機胜するかどうかはわかりたせん。ナヌザヌがどのように䜿甚したいかに基づいお、ナヌザヌをより小さなフラグメントに分割できたす。

この機胜が必芁なのは誰ですか 個人のgiteaナヌザヌ/プラむベヌトgiteaを䜿甚しおいる䌚瀟/ giteaたたは他の人を介したGitホスティングWebサむト

個人ナヌザヌずしお 

なぜ圌らはこの機胜を必芁ずしたすか

数癟のむンスタンスでアカりントを䜜成したくありたせん。

圌らはこの機胜をどのように䜿甚したいですか

問題を報告するだけです。 だから私はよく報告したせん。 問題のリポゞトリがホストされおいる堎所に関係なく、すでにアカりントを持っおいるむンスタンスからそれを行うこずはできたすか

ずころで同じこずが、1回限りの修正を含む「最小限のPR / MR」にも圓おはたりたす。 ぀たり、プロゞェクトに「実際に参加」する予定がなくおも、2セントを寄付する堎合です。

@lafriksに完党に同意したす。 それを始める前に、いく぀かの質問を知る必芁がありたす。

  1. この機胜が必芁なのは誰ですか 個人のgiteaナヌザヌ/プラむベヌトgiteaを䜿甚しおいる䌚瀟/ giteaたたは他の人を介したGitホスティングWebサむト

私は@ a1batrossなどの他の人ずコラボレヌションする個人的なGiteaナヌザヌです。 どちらにも独自のGiteaむンスタンスがありたすが、むンスタンス間のプルリク゚ストなど、圌のリポゞトリの1぀にコヌドを簡単に提䟛できるようにしたいず思いたす。

  1. なぜ圌らはこの機胜を必芁ずしたすか

他のむンスタンスでアカりントを䜜成するよりもはるかに簡単です。そうすれば、他のむンスタンスからのコヌドを受け入れるためにオヌプン登録をする必芁がありたせん。 100䞇のGiteaアカりントは必芁ありたせん。

  1. 圌らはこの機胜をどのように䜿甚したいですか

䞻にクロスむンスタンスプルリク゚ストず問題。 たた、組織にリモヌトナヌザヌを含めたい盎接プッシュできるようにするため。

  1. この機胜が必芁なのは誰ですか 個人のgiteaナヌザヌ/プラむベヌトgiteaを䜿甚しおいる䌚瀟/ giteaたたは他の人を介したGitホスティングWebサむト

個人的な理由は、アクティブなアカりントの数を枛らすのに倧いに圹立぀ず思うからです。

Gitホスティングりェブサむトは、ネットワヌク効果を枛らし、䞀床に問題を報告するために来たすべおの人のアカりントの詳现を保存する必芁がないためです。

  1. なぜ圌らはこの機胜を必芁ずしたすか

海倖プロゞェクトぞの貢献を容易にするために、クむックフィックスの問題を報告するためのアカりントを䜜成する必芁はありたせん。

  1. 圌らはこの機胜をどのように䜿甚したいですか

さたざたな堎所に関連付けられたGitリポゞトリ党䜓で、倧量のアカりントではなく、1぀のgitIDのみを持぀ために䜿甚したいず思いたす。

珟圚Gittea、GitHub、GitLabで行っおいるすべおのこずを1か所で実行できるようにしたいず思いたす。 それは問題、プル/マヌゞ芁求、組織です。

1. Who wants this feature? Personal gitea user / Companies with private gitea / Git hosting website via gitea or others?

プラむベヌト。 独自のGitサヌバヌを実行するず、むンフラストラクチャが小さいため、プロゞェクトの可甚性が䜎䞋するように芋えたす。 分散化ずGithub / GitLabずの盞互運甚性により、プロゞェクトはこれらのプラットフォヌム䞊にあるかのようにアクセス可胜で利甚しやすくなりたす。 誰もが私のサヌバヌにアカりントを持っおいる必芁がないので、寄皿者にずっおより魅力的です。

2. Why they need this feature?

シヌムレス統合。 奜きなプロゞェクトでコラボレヌションしたいむンタヌフェヌスを䜿甚しおください。

3. How they want to use this feature?

サヌバヌの䞭倮暩限ず、CIたたはその他のクラりドサヌビスが、必芁な最高の機胜を提䟛するホスティング゜フトりェアず盞互䜜甚するようにしたす。 誰もがGitLab / GitHub / Giteaのすべおの異なるAPIおよびすべおの小さなAPIず互換性がある必芁はありたせん。

fr33domloverForgeFedチヌムからの連邊フィヌドバックのコピヌ

珟圚の状況では、Gitea、GitLab、githu8などのフォヌゞでホストされおいるレポずやり取りするには、そこにアカりントが必芁です。 各フォヌゞのりェブサむトは別々の島です。

独自のフォヌゞをホストするず、ルヌルなどを䜜成できたすが、孀立しおいたす。 あなたを芋぀けるのは難しいです。 倚くの人は、githu8を離れるず、貢献が少なくなるのではないかず心配しおいたす。 たた、寄皿者は各フォヌゞでアカりントを䜜成する必芁がありたす。

たた、githu8は独自仕様で䞀元化されおおり、人々による人々のためのコミュニティプロゞェクトではありたせん。

プロゞェクトの可芖性ずプロゞェクトぞのアクセスは、ナヌザヌのアカりントがあなたのフォヌゞにあるのか、他のフォヌゞにあるのかに䟝存しないずいう考え方です。 1぀のアカりントを䜜成しお、どこからでも参加できたす。 プロゞェクトの怜玢、発芋、掚奚などは、ネットワヌク党䜓からのものを芋぀けたす。 単䞀のフォヌゞが他のどのフォヌゞよりもナヌザヌに察しお匷力な力を持っおいるこずはありたせん。

䟋

  • 組織/チヌム/グルヌプには、さたざたなフォヌゞのナヌザヌを含めるこずができたす
  • コミットをプッシュしお、さたざたなフォヌゞのリポゞトリに配眮できたす
  • フォヌゞ間で問題を開いたり、マヌゞリク゚ストを開いたり、コメントしたり、コヌドレビュヌを送信したりできたす
  • リポゞトリ、CIサヌバヌ、Wiki、課題远跡システムなどは、異なるサヌバヌ䞊に配眮しおも、シヌムレスに連携できたす。
  1. 圌らはこの機胜をどのように䜿甚したいですか

他の人がすでに述べたこずに加えおりェブをサヌフィンしおいる間、私は圌ら自身のむンスタンスgitea / gitlabむンスタンスに存圚するたくさんの興味深いプロゞェクトに遭遇したす。 私はしばしばこれらのレポにスタヌを付けたいだけですが、ここでの摩擊サむンアップは高すぎたす。 代わりに、ブラりザでブックマヌクを付けたすが、ほずんどの堎合、埌でチェックするのを忘れたすブックマヌクが倚すぎたす。

githubでは、ブックマヌクの手段ずしおだけでなく、プロゞェクトぞの感謝の印ずしおもStarsを䜿甚しおいたす。 特に関心のあるプロゞェクトを監芖しおいるので、アクティビティを远跡する簡単な方法ずしお通知ダッシュボヌドがありたす。

スタヌは悪甚される可胜性がありたすが、たずえばgithubリポゞトリに14kのスタヌがある堎合、その人気に぀いお䜕かを瀺しおおり、プロゞェクトが有甚で質の高いものであるず合理的に確信できたす。 gitea / gitlabでは、珟圚、星はあたり教えおくれたせん。

理想的には、将来的には、どこで実行したかに関係なく、すべおのコヌディングアクティビティの抂芁を把握できる、連邊政府に接続された堎所が1぀ありたす。

1. Who wants this feature? Personal gitea user / Companies with private gitea / Git hosting website via gitea or others?

私は個人的なGiteaナヌザヌです
私には2぀のGiteaむンスタンスがありたす。1぀はアヌトコレクティブプロゞェクトのコヌドを保持する堎所甚で、もう1぀は私甚個人および契玄䜜業、および孊生ずのいく぀かのプロゞェクトを行う堎所です。

2. Why they need this feature?

䞻な理由は、GitHubやその競合他瀟を䜿いたくないからです。
この䞀連の質問は良い䟋です。䌚話に参加するにはGitHubアカりントが必芁ですが、フェデレヌションでは、フェデレヌションアカりントを䜿甚できたす。

3. How they want to use this feature?

共通のプロトコルActivityPubを䜿甚しお、Giteaず他のサヌビスがすべおフェデレヌションされおいる堎合、フェデレヌションされたVCSサヌビス間の盞互䜜甚の可胜性が開かれるだけでなく、フェデバヌス党䜓に察しお、コメントしおプロゞェクトにサブスクラむブできたす。たずえば、マストドンからの曎新。

他の倚くのナヌザヌの声を反映しお、サヌバヌで登録を開かなくおも、単に問題を䜜成するだけでも、人々が私のプロゞェクトに簡単に貢献できるようにしたいず思っおいたす。アカりントを远加する手間をかけずに、問題を䜜成したり、わずかな貢献をしたりするこずができたす
理想的な䞖界では、GitHubアカりントはもうありたせん

1. Who wants this feature? Personal gitea user / Companies with private gitea / Git hosting website via gitea or others?

私はすべお3です。

  1. 私は個人的なgiteaナヌザヌですオンずオフ、ほずんどオフ、パヌト2の回答を参照。
  2. 私のデむゞョブには耇数の内郚/プラむベヌトgiteaむンスタンスがありたす。
  3. 停造がオプションである堎合、私はgiteaを介しおプラむベヌト぀たり招埅のみのgitホスティングWebサむトを提䟛するこずを怜蚎したす私も個人的に䜿甚したす。
2. Why they need this feature?

プラむベヌトナヌザヌずしお
github、gitlab、および「どこか別の堎所」でデヌタをホストするかどうかの遞択は重倧なものです。
私がgithub / gitlabを遞択した堎合、私はプラットフォヌムずしおの圌らの決定に翻匄され、私のデヌタを制埡するこずはできたせん。
他のものたずえば、自分のgiteaむンスタンスを遞択した堎合、プロゞェクトを芋぀けるのは困難です[1]。投皿には、自分のアカりントを持っおいる぀たり、今はWebサむトのホストになっおいたすかそれは良くありたせんか、メヌルを送信する必芁がありたす。ルヌトこれは制限的であり、誰もがそのワヌクフロヌを奜むわけではありたせん。
フェデレヌションを䜿甚するず必ずしも停造されおいるずは限りたせんが、理想的にはさたざたなサヌビス間で盞互運甚可胜です、䞡方の長所を掻甚できたす。自分のアカりントを䜿甚しお任意のむンスタンスから貢献し、ロヌカルでホストされおいるプロゞェクトを芋぀けるこずができたす。デヌタずプラットフォヌムを管理し続けたす。

䌁業ホストずしお
すでに述べたように、さたざたな理由から、耇数のgiteaむンスタンスがありたす。
ホワむトリストフェデレヌション぀たり、フェデレヌションが特定の他のサヌバヌに察しおのみ有効になっおいる堎合に関心があり、内郚ノヌドず任意の゜フトりェアパヌトナヌのノヌドずの間の亀換を容易にしたす。どのような堎合でも、必ずしも内郚アクセスを蚱可する必芁はありたせん。

りェブサむトのホストずしお
プラむベヌトナヌザヌの郚分からすべおを取りたす-これは珟圚、芋蟌みナヌザヌぞの売り蟌みです。
あなたは、あなたの唯䞀の議論ずしお、玔粋に「たあ、Xは悪であり、私はそうではない」に頌る必芁は
さらに、あなたのサヌビスに移行する人々のコストははるかに小さくなりたす無芖できない堎合。

3. How they want to use this feature?

芁玄ずしお/繰り返したす

プラむベヌトナヌザヌずしおそしお事実䞊それだけのナヌザヌを持぀こずによるりェブサむトホスト

  • 怜玢を介しお倖郚プロゞェクトを簡単に発芋したすそしおあなたのプロゞェクトを発芋させたす
  • むンスタンスにアカりントがなくおも、特定のプロゞェクトぞの貢献問題の報告、コメントなどを含むを蚱可する

法人ナヌザヌずしお

  • ホワむトリストフェデレヌション

    • 異なる目的のノヌド間の内郚通信を蚱可する

    • 私たちのノヌドずさたざたな゜フトりェアパヌトナヌのノヌドずの間のれロトラストおよびれロ特暩通信を可胜にしたす

1. Who wants this feature? Personal gitea user / Companies with private gitea / Git hosting website via gitea or others?

私の個人的なgiteaず私たちが仕事で䜿甚するものの䞡方のために私はそうしたす。

2. Why they need this feature?

他の停造されたむンスタンスのプロゞェクトで共同䜜業するため。 すべおのシステムでナヌザヌアカりントを䜜成する必芁はありたせん。 私のプラむベヌトむンスタンスの堎合、ランダムな人にアクセスを蚱可したくありたせん。 そしお、䌚瀟のむンスタンスの堎合、明らかに非埓業員はアクセスできたせん。

3. How they want to use this feature?

私はそれを䜿甚しお、オヌプン゜ヌスずプロプラむ゚タリの䞡方のプロゞェクトでコラボレヌションしたす。

  1. この機胜が必芁なのは誰ですか 個人のgiteaナヌザヌ/プラむベヌトgiteaを䜿甚しおいる䌚瀟/ giteaたたは他の人を介したGitホスティングWebサむト

間違いなく個人ナヌザヌ。

  1. なぜ圌らはこの機胜を必芁ずしたすか

オヌプン゜ヌスはコラボレヌションがすべおです。 GitHubは、コヌドぞの取り組みを瀟䌚的なものにし、問題の報告やプロゞェクトぞの貢献を簡単にするこずで、オヌプン゜ヌスを䞻流にしたした。 GitHubが眮かれおいるスペヌスを分散化するこずは良いこずですが、問題やパッチを簡単に送信できるずいう点では、かなり埌退しおいたす。

  1. 圌らはこの機胜をどのように䜿甚したいですか

フェデレヌションは䞊蚘の問題を解決したす。ナヌザヌがどのむンスタンスたたはプラットフォヌムを䜿甚しおいるかは関係ないため、ナヌザヌはリモヌトプロゞェクトをプルし、独自のロヌカルアカりントを䜿甚しお、独自のむンスタンスからプロゞェクトに貢献できたす。

どういうわけか、GitHubはここに新しいコメントに関する通知メヌルを送信したせんでした。私はそれらを完党に芋逃したした。

ずにかく、私はバックグラりンドで遊んでいたすが、今はxormず熱心な読み蟌みに苊劎しおいたす。

私が持っおいたす

type Identity struct {
  ID          int64 `xorm:"pk autoincr"`
  UserName    string
  DisplayName string
}

type User struct {
  ID          int64 `xorm:"pk autoincr"`
  Slug        string // LowerName
  IdentityId  int64 `xorm:"NOT NULL DEFAULT 0"`
  Identity    Identity `xorm:"-"`
}

どのように䜜るのですかe.Get(&User{Slug: slug})自動ロヌド Identityで䞎えIdentityId 

私はそれがうたくいくずは思わない。 xormはその逆しかできないず思いたす。぀たり、 Identity UserID列がある堎合、xormはUser Identitiesスラむスを埋めるこずができたす。

xormがgormず十分に等しい堎合は、それを実珟するためにIdentities列をプリロヌドできるはずです。 通垞のSQLではJOINになるので、 http//gobook.io/read/gitea.com/xorm/manual-en-US/chapter-05/5.join.htmlが圹に立ちたす。

サンプルのようなもの

engine.Table("user").Alias("u").
    Join("INNER", []string{"group", "g"}, "g.id = u.group_id").
    Join("INNER", "type", "type.id = u.type_id").
    Where("u.name like ?", "%"+name+"%").Find(&users, &User{Name:name})

ドキュメントに埓っおトリックを行う必芁がありたす。

うヌん、アむデンティティのリストを持っおいる私の問題のために助けにはなりたせん。
残念ながら、Join-Approachも機胜したせん。

コヌドベヌスをもう少し調べおみるず、 RepositoryにOwner *Userがあり、 GetOwner関数を䜿甚しお手動でロヌドされおいるように芋えたす。同じパタヌンをコヌドに適甚したした。今。 :)

そこで、ロヌカルリポゞトリをクリヌンアップし、ロヌカルナヌザヌプロファむルを衚瀺するために機胜するナヌザヌ/ ID分割のドラフトバヌゞョンをコミットしおプッシュしたした䟋localhost8080 / user1。 https://github.com/criztovyl/gitea/commit/d0f24f7919d15ee481f5eae7ec6131ff369eaa66を参照しおください
今のずころ、それはナヌザヌに察しおのみ機胜し、組織はただ機胜しおいたせん。
それほど倚くはありたせんが、䜕かです。 :)

組織が持っおいるすべおの肉をスタブアりトするこずで、組織のプロファむルペヌゞも機胜するようになりたした。 https://github.com/criztovyl/gitea/compare/d0f24f7...3901206bcを参照しお

私のコヌドはかなり搟取的であり、最終的なものではありたせん。 :)

ナヌザヌテヌブルにis_localずremote_url 2぀の列を远加しおみたせんかおそらくdomainもありたすが、すべおのgiteaむンスタンスが特定のドメむンのメむンフォルダヌでホストされおいるわけではありたせん。 romain_url で行きたしたか そうすれば、远加のテヌブルや結合は必芁ありたせん。

誰かがこれを提案するのは初めおではありたせん、私もそれに぀いお考えたした。
しかし、これにより、ナヌザヌ名のみで誀っおナヌザヌを比范する可胜性がありたす。これは、この特定のケヌスでは3぀すべおのis_local 、 remote_url 、およびusername比范する必芁があるため無効です。 remote_url = "" is_local意味する堎合、 remote_url = "" remote_urlずusername比范するだけに最適化できたす。
もう1぀の懞念は、usersテヌブルを増やすこずです。たずえば、 lower_nameむンデックスは、 remote_urlずlower_name組み合わせたむンデックスである必芁がありたす。 䞀方、ロヌカルナヌザヌ専甚にlower_name蚭定するこずもできたす...うヌん。

実装がよりクリヌンだず思うので、authn / identity-splitを奜みたす。 IDは新しい抂念であるため、ナヌザヌ名だけを比范するだけではいけたせん。
しかし、分割の導入がいかに耇雑であるかがわかるようになったので、もう䞀床決心する必芁があるず思いたす。 :)
私は時々少しナむヌブです。 ^^

@criztovyl remote_urlたたはdomain (sub domain)が倉曎される堎合があり、倉曎される可胜性もありたす

ご存知のように、名前を付けるのは難しいです

次のこずも理解しおみおください

  • たずえば、ドメむンを倱った堎合はどうなりたすか たたは、法的な理由で名前を倉曎する必芁がありたす。たたは、ドメむンを売华したばかりです。これは、以前取り組んでいたプロゞェクトに貢献できないこずを意味したすか
  • usernameずemail䜿甚をサポヌトしたすか
  • ご存知のように、ナヌザヌ名を倉曎したり、ナヌザヌ名ではなくメヌルを䜿甚しおログむンしたりする柔軟性もありたすが、これはあなたが提案しおいるものにどのように適合したすか
1. Who wants this feature? Personal gitea user / Companies with private gitea / Git hosting website via gitea or others?

誰もが、䟋えば、人皮差別に反察- 2019、githubの、ビットバケットずgitlabので知芚地理的䜍眮に基づいおナヌザを遮断された- https://archive.today/U1R2L 。 BLMデモの巚倧な波で、゜フトりェアコミュニティで人皮差別をサポヌトするこずは歎史の䞭で良い瞬間ではありたせん。 https://codeberg.orgでgiteaのナヌザヌずしお、私は自分の名前で話しおいるだけです。 これはhttps://codeberg.org/Codeberg/Community/issues/142ずしお投皿されおい

2. Why they need this feature?

䟿利さのKeye 2009 Wu 2018 。 github / bitbucket / gitlabのオンラむン゜ヌシャルネットワヌク機胜は非垞に匷力です。 「@」ず数文字を入力するず、フリヌ゜フトりェアコミュニティの倧郚分の䞭から、必芁な人のナヌザヌIDの入力を求められる可胜性がありたす。 これは効率的で公開されおおりデフォルト、pingを実行した人は、電子メヌルボックスをクリヌンアップしなくおも、問題に応答したり無芖したりできたす。

ただし、 https//codeberg.orgおよびその他の人皮差別的でないgitリポゞトリサヌバヌには、ActivityPubタむプのフェデレヌションがただありたせん。 これが、githubのナヌザヌがコミュニティベヌスのサヌバヌぞの移行を思いずどたらせる理由の1぀です。「䟿利さの専制君䞻」は、ワヌルドワむドコミュニティの簡単な゜ヌシャル接続が小さなコミュニティサヌバヌには存圚しないこずです。

蚀い換えれば、この機胜は、䞀元化された秘密䞻矩の人皮差別䞻矩者2019/2020珟圚、䞊蚘を参照の䌁業サヌバヌから独立したサヌバヌ間で孊術的な゚フェメラを保存するために必芁です。

3. How they want to use this feature?

䞻に自由゜フトりェアの゜フトりェア開発者のオヌプンコミュニティ間の゜フトりェア開発に特に焊点を圓おた゜ヌシャルネットワヌキングの堎合。

䞊蚘の質問に察する倧量のフィヌドバックを受け取ったため、このスレッドをロックするず、これに取り組む人は誰でも、解析できるこの情報を入手できたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡