1 ポイント 投稿者 GN⁺ 2024-01-23 | 1件のコメント | WhatsAppで共有
  • Diversionは、クラウド時代の大規模リポジトリとコラボレーションを対象にしたバージョン管理システムで、初期ユーザーはシンプルさと拡張性を求めるゲーム開発者たち
  • Gitは2005年の低速ネットワーク・小規模プロジェクト・クラウド不在の環境で作られたため、今日のリポジトリ規模・ファイルサイズ・同時利用者数では限界があると見ている
  • GoogleやMetaの独自バージョン管理システム、一部のゲーム開発・半導体・金融サービス企業によるSVN・Perforce利用は、Gitがすべての組織に適しているわけではない根拠として挙げられている
  • Diversionは分散ストレージ、データベース、REST API、サーバーレスのクラウドインフラ上で、commit・branch・mergeのようなリポジトリ操作をAPI呼び出しで処理する
  • 現在はオープンベータとして提供されており、小規模チームは無料で始められ、速度改善・CI統合・IDEおよびゲームエンジンプラグイン・ユーザビリティ改善が進行中

Diversionが狙うGitの限界

  • Diversionは diversion.dev で提供されるクラウドネイティブなバージョン管理システム
    • 短いデモは YouTube動画 で見られる
    • 初期ユーザーはゲーム開発者で、シンプルさと拡張性を利点として評価している
  • Gitは過去18年間にわたりソフトウェア開発の発展に大きく貢献してきたが、2005年の環境に合わせて作られたため、すべてのユーザーにとって完璧なツールではない
  • 最大の欠点は、リポジトリサイズ、ファイルサイズ、同時ユーザー数に表れる限定的な拡張性
    • GoogleとMetaはこのために独自のバージョン管理システムを作った
    • ゲーム開発、半導体、金融サービス分野の一部大企業はSVNやPerforceのようなレガシーツールを使い続けている
  • Gitの複雑さも、実際の作業損失につながりうる
    • 以前のスタートアップでは、データサイエンティストが誤ったGitコマンドを使ってチームの1か月分の作業を失った事例があった
    • 数時間後、更新されていないリポジトリのクローンから復旧できた
  • ただしGitのブランチとマージ機能は、feature branchやCI/CDのような現代的な開発手法や、開発者の速度向上に大きく貢献してきた

クラウドベースの動作方式

  • DiversionはGitのブランチ機能を維持しつつ、より簡単で高速かつ拡張可能なバージョン管理システムを目指している
  • 現代のクラウドツールにおけるリアルタイムコラボレーションの概念をバージョン管理に適用している
    • Google DocsやFigmaのように、作業中の状態を共有できる
    • 開発者は常に作業中の内容を公開したいとは限らないが、コミット前にフィードバックを受けたり、マージ競合を検知・防止したり、他の人がコードベースのどの部分を変更しているか確認したりするのに役立つ
  • 内部構造は分散ストレージとデータベース、REST API、サーバーレスのクラウドインフラに基づいている
    • commit、branch、mergeなど、あらゆるリポジトリ操作はAPI呼び出しとして処理される
    • デスクトップクライアントは、コミット前の作業中状態までクラウドにリアルタイム同期する
    • ユーザーは対話型CLI、Web UI、IDEプラグインからアクセスできる
    • 現在のIDEプラグインはJetBrainsをサポートしており、今後さらに追加される予定
    • Web UIでは、デスクトップクライアントをインストールしなくても大半の基本操作を実行できる
  • Gitと互換性があり、既存のGitリポジトリと同期できる
    • Diversionの新しいコミットはGitに入り、Gitの新しいコミットもDiversionに入る

公開計画とベータ利用条件

  • コードベースが成熟し、Webサイトにオープンソースリポジトリのディレクトリが実装されれば、オープンソースとして公開する計画
    • Diversionのコード自体もDiversionで管理されている
  • 現在は オープンベータ として利用でき、Get Startedを押せばセルフサービスで開始可能
    • 誰かと会話する必要なく利用できる
    • 小規模チームは無料で、価格情報は pricing にある
  • 現在進行中の改善項目は速度、CI統合、IDEおよびゲームエンジンプラグイン、そのほかのユーザビリティ改善

1件のコメント

 
GN⁺ 2024-01-23
Hacker Newsの意見
  • Cloud-Native Git Alternative

    • クラウドネイティブは実装の詳細であり、新しいバージョン管理システム(VCS)をサービスではなくパッケージソフトウェアとして販売する予定でない限り、重要ではない。
    • クラウドネイティブがGitユーザーの日常的な問題をどう解決するのかが不明確。
  • The biggest drawback of Git is its limited scalability

    • Gitのスケーラビリティ問題に直面するユーザーの割合が気になる。
    • 数百人から数万人のエンジニアを抱える会社で働いたことがあるが、個人的にGitのスケーラビリティ問題を経験したことはない。
    • モノレポ(monorepo)の利用がスケーラビリティ問題を引き起こすことはあるが、モノレポ自体が議論の余地がある。
  • Diversion is built on top of distributed storage and databases, accessible via REST API, and runs on serverless cloud infrastructure. Every repository operation is an API call (commit, branch, merge etc.).

    • ユーザーの立場からすると、内部プロトコルにはあまり関心がない。
    • CLIやUIを使う際、内部プロトコルは重要ではない。
    • 抽象構文木(AST)ベースのVCSには興味がある。
  • most notably in games development, semiconductors and financial services are still using legacy tools like SVN and Perforce

    • Gitの複雑さよりも、大規模なバイナリアセットの処理にGitが向いていない点に焦点を当てるべき。
    • Gitが大規模ファイルをうまく扱えないというリーナス・トーバルズの引用。
  • it was built for a very different world in 2005 (slow networks, much smaller projects, no cloud)

    • Gitは、低速なネットワーク、小規模なプロジェクト、クラウドが存在しなかった2005年とは異なる世界向けに設計された。
    • Gitは分散型なので、クラウド環境でもうまく動作すべき。
    • データサイエンティストが誤ったGitコマンドで1か月分の作業を破壊した件は、構成上の問題に見える。
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command

    • Gitへの批判よりも、自社製品そのものに焦点を当てるべき。
    • Gitは分散型VCSであり、バックアップなしで中央集権的に使おうとする試みが問題。
  • git is bad we're better

    • ゲーム開発者として、提示された提案にはあまり興味を持てない。
    • Git LFSを使ったモダンなワークフローはスムーズに機能している。
    • クラウドネイティブが特徴として提示されているが、オンプレミスおよびセルフホスト型プライベートクラウド対応の詳細が欠けている。
    • ファイルロック機能に対するアーティストの好みと、P4ストリームおよびブランチ利用によってロックの使用が難しくなる点。
  • File locking across branches - coming soon!

    • ファイルロック機能は近日提供予定だが、提案にはさらに改善が必要。
  • Git cli UX made be not great, but the git datastructure of representing commits, branches, trees and blobs as immutable pointers and merkle trees is a phenomenal invention.

    • Gitのデータ構造は驚異的な発明だが、すべてのコマンドがREST API経由で行われることには同意できない。
    • Gitの強みは、オフラインでも部分クローンで作業し、オンラインになったときにコミットを同期できること。
  • In our previous startup, a data scientist accidentally destroyed a month’s work of his team by using the wrong Git command.

    • Gitの使いやすさ改善の必要性は認めるが、起きた問題は開発運用の失敗に見える。
    • 非コーダーにソース管理の利点を紹介しつつ、高度な機能を維持できる、より緩やかな学習曲線が必要。
  • The world needs a git alternative.

    • 世界にはGitの代替が必要。
    • 複数人が毎日同じリポジトリにコミットする際のGitの限界。
    • Gitがrebaseをもっとうまく扱えれば、ソフトウェア開発チームの作業速度は20%向上するはず。
  • I get that enterprises will buy anything with "Cloud" or "AI" in the name, but VCS doesn't have anything to do with the cloud.

    • 企業は名前に"Cloud"や"AI"が入っていれば何でも買う、という認識。
    • 技術そのものより、問題解決に焦点を当てることが重要。
    • ユーザー体験が良くなければ、技術的な詳細には意味がない。
    • 開発時間を短縮し、エラーを減らし、協業を改善する体験を提供する製品として売る戦略が必要。