diff --git a/src/pages/bpfcompat/BpfcompatPage.tsx b/src/pages/bpfcompat/BpfcompatPage.tsx index 61e559c..6b762d4 100644 --- a/src/pages/bpfcompat/BpfcompatPage.tsx +++ b/src/pages/bpfcompat/BpfcompatPage.tsx @@ -16,6 +16,7 @@ import { Chip, HeroCtas, MatrixTerminal, CompatibilityMatrix, Legend, HowItWorks, ProblemCards, AdoptionTabs, RepoEvidence, ScopePanel, ToolchainBand, Reveal, BigStat, DocsSection, ProjectBreadcrumb, FinalCtaWithDocs, + WhyBuilt, ComparisonTable, Kicker, Caret, GITHUB_URL, DEMO_URL, REPORT, } from './parts'; @@ -119,6 +120,13 @@ export default function BpfcompatPage() { + {/* 3b — why this exists */} +
+
+ +
+
+ {/* 4 — by the numbers */}
@@ -193,6 +201,13 @@ export default function BpfcompatPage() {
+ {/* 9b — how it compares */} +
+
+ +
+
+ {/* 10 — honest scope */}
diff --git a/src/pages/bpfcompat/content.tsx b/src/pages/bpfcompat/content.tsx index 44efb40..d3a1309 100644 --- a/src/pages/bpfcompat/content.tsx +++ b/src/pages/bpfcompat/content.tsx @@ -54,6 +54,11 @@ export interface BpStrings { heading: string; isLabel: string; isNotLabel: string; isList: string[]; isNotList: string[]; footer: string; }; + why: { eyebrow: string; heading: string; body: string; sources: string }; + compare: { + eyebrow: string; heading: string; note: string; colDiy: string; + rows: Array<{ label: string; cells: [string, string, string, string] }>; + }; toolchain: { eyebrow: string; heading: string; beforeShip: string; atRuntime: string; youAreHere: string; viewProject: string; @@ -145,20 +150,40 @@ const en: BpStrings = { labels: { primaryLanguage: 'Primary language', license: 'License', latestRelease: 'Latest release', kernelRange: 'Kernel range tested' }, }, scope: { - heading: 'What it is — and what it is not yet.', - isLabel: 'It is', isNotLabel: 'It is not yet', + heading: 'What it is — and what comes next.', + isLabel: 'Available today', isNotLabel: 'On the roadmap', isList: [ 'Real load-and-attach evidence from inside real kernels', - 'A CI gate with deterministic exit codes', - 'A multi-distro, multi-arch kernel matrix (5.x–6.x)', + 'A CI gate with deterministic exit codes — ships as a GitHub Action', + 'A multi-distro, multi-arch kernel matrix (5.x–6.x, x86_64 + ARM64)', 'Apache-2.0, fully open source', ], isNotList: [ - 'A production runtime loader — it validates, it does not deploy', - 'A multi-tenant SaaS — the web UI is a single-tenant Technical Preview', - 'Runtime decisioning — that capability is experimental', + 'A production runtime loader — today it validates; guided deploy is planned', + 'A multi-tenant SaaS — the hosted UI is a single-tenant Technical Preview', + 'Runtime decisioning — available as an experimental, operator-gated preview', + ], + footer: 'Version 0.1.5 is deliberately scoped: a dependable compatibility gate first, with runtime delivery layered on as it hardens. Not just a label — the evidence and docs are in the repo.', + }, + why: { + eyebrow: 'Why this exists', + heading: 'Every serious eBPF team ends up building this.', + body: 'Cilium and Tetragon boot their probes across kernels with little-vm-helper. Falco maintains a Firecracker-based kernel-testing framework. There is no off-the-shelf way to prove a compiled BPF object loads across the kernels you ship to — so teams build their own VM harness, or find out in production. bpfcompat packages that capability as a drop-in CI gate.', + sources: 'Public references', + }, + compare: { + eyebrow: 'How it compares', + heading: 'Where bpfcompat fits.', + note: 'These are excellent tools. bpfcompat does not replace the lower-level building blocks — it packages the compatibility-gate use case so you do not assemble it yourself.', + colDiy: 'Roll your own (vmtest)', + rows: [ + { label: 'What it is', cells: ['Drop-in compat gate + report', 'VM building block', 'Falco driver validator', 'DIY VM harness'] }, + { label: 'Boots real kernels in VMs', cells: ['✓', '✓', '✓', '✓'] }, + { label: 'Curated multi-distro matrix included', cells: ['✓', '~', '~', '–'] }, + { label: 'Per-kernel verifier · BTF · classification in report', cells: ['✓', '–', '~', '–'] }, + { label: 'One-line GitHub Action + job summary', cells: ['✓', '✓', '~', '–'] }, + { label: 'Best when', cells: ['you want a drop-in gate + shareable evidence', 'you already live in Cilium tooling', 'you validate Falco drivers', 'you need full control / custom kernels'] }, ], - footer: 'Version 0.1.5 is a serious MVP for compatibility evidence and CI gating. We label it that way on purpose.', }, toolchain: { eyebrow: 'Kernel Guard eBPF toolchain', @@ -257,20 +282,40 @@ const tr: BpStrings = { labels: { primaryLanguage: 'Birincil dil', license: 'Lisans', latestRelease: 'Son sürüm', kernelRange: 'Test edilen çekirdek aralığı' }, }, scope: { - heading: 'Ne olduğu — ve henüz ne olmadığı.', - isLabel: 'Şu anda', isNotLabel: 'Henüz değil', + heading: 'Ne olduğu — ve sırada ne olduğu.', + isLabel: 'Bugün mevcut', isNotLabel: 'Yol haritasında', isList: [ 'Gerçek çekirdeklerin içinden gerçek yükleme-ve-bağlama kanıtı', - 'Belirlenimci çıkış kodlarına sahip bir CI kapısı', - 'Çok dağıtımlı, çok mimarili bir çekirdek matrisi (5.x–6.x)', + 'Belirlenimci çıkış kodlarına sahip bir CI kapısı — GitHub Action olarak gelir', + 'Çok dağıtımlı, çok mimarili bir çekirdek matrisi (5.x–6.x, x86_64 + ARM64)', 'Apache-2.0, tümüyle açık kaynak', ], isNotList: [ - 'Üretim çalışma zamanı yükleyicisi değil — doğrular, dağıtmaz', - 'Çok kiracılı bir SaaS değil — web arayüzü tek kiracılı bir Teknik Önizlemedir', - 'Çalışma zamanı kararı — bu yetenek deneyseldir', + 'Üretim çalışma zamanı yükleyicisi — bugün doğrular; rehberli dağıtım planlanıyor', + 'Çok kiracılı bir SaaS değil — barındırılan arayüz tek kiracılı bir Teknik Önizleme', + 'Çalışma zamanı kararı — deneysel, operatör korumalı bir önizleme olarak mevcut', + ], + footer: '0.1.5 sürümü bilinçli olarak kapsamlandı: önce güvenilir bir uyumluluk kapısı, olgunlaştıkça eklenen çalışma zamanı teslimi. Yalnızca bir etiket değil — kanıt ve belgeler depoda.', + }, + why: { + eyebrow: 'Bu neden var', + heading: 'Ciddi her eBPF ekibi eninde sonunda bunu kendi kuruyor.', + body: 'Cilium ve Tetragon, probe’larını little-vm-helper ile birçok çekirdekte başlatır. Falco, Firecracker tabanlı bir kernel-testing çerçevesi sürdürür. Derlenmiş bir BPF nesnesinin gönderim yaptığınız çekirdeklerde yüklendiğini kanıtlamanın hazır bir yolu yoktur — bu yüzden ekipler kendi VM düzeneklerini kurar ya da bunu üretimde öğrenir. bpfcompat, bu yeteneği hazır bir CI kapısı olarak paketler.', + sources: 'Herkese açık kaynaklar', + }, + compare: { + eyebrow: 'Nasıl karşılaştırılır', + heading: 'bpfcompat nereye oturur.', + note: 'Bunlar mükemmel araçlar. bpfcompat, alt seviye yapı taşlarının yerini almaz — uyumluluk kapısı senaryosunu, kendiniz kurmayasınız diye paketler.', + colDiy: 'Kendin kur (vmtest)', + rows: [ + { label: 'Ne olduğu', cells: ['Hazır uyumluluk kapısı + rapor', 'VM yapı taşı', 'Falco sürücü doğrulayıcı', 'El yapımı VM düzeneği'] }, + { label: 'Gerçek çekirdekleri VM’lerde başlatır', cells: ['✓', '✓', '✓', '✓'] }, + { label: 'Hazır çok dağıtımlı çekirdek matrisi', cells: ['✓', '~', '~', '–'] }, + { label: 'Rapor başına doğrulayıcı · BTF · sınıflandırma', cells: ['✓', '–', '~', '–'] }, + { label: 'Tek satırlık GitHub Action + iş özeti', cells: ['✓', '✓', '~', '–'] }, + { label: 'En uygun olduğu durum', cells: ['hazır bir kapı + paylaşılabilir kanıt istiyorsanız', 'zaten Cilium araçlarının içindeyseniz', 'Falco sürücülerini doğruluyorsanız', 'tam kontrol / özel çekirdekler istiyorsanız'] }, ], - footer: '0.1.5 sürümü, uyumluluk kanıtı ve CI denetimi için ciddi bir MVP’dir. Bunu bilerek böyle etiketliyoruz.', }, toolchain: { eyebrow: 'Kernel Guard eBPF araç zinciri', @@ -369,20 +414,40 @@ const de: BpStrings = { labels: { primaryLanguage: 'Primäre Sprache', license: 'Lizenz', latestRelease: 'Neueste Version', kernelRange: 'Getesteter Kernel-Bereich' }, }, scope: { - heading: 'Was es ist — und was es noch nicht ist.', - isLabel: 'Es ist', isNotLabel: 'Es ist noch nicht', + heading: 'Was es ist — und was als Nächstes kommt.', + isLabel: 'Heute verfügbar', isNotLabel: 'Auf der Roadmap', isList: [ 'Echter Lade- und Attach-Nachweis aus echten Kerneln', - 'Ein CI-Gate mit deterministischen Exit-Codes', - 'Eine Multi-Distro-, Multi-Arch-Kernel-Matrix (5.x–6.x)', + 'Ein CI-Gate mit deterministischen Exit-Codes — als GitHub Action verfügbar', + 'Eine Multi-Distro-, Multi-Arch-Kernel-Matrix (5.x–6.x, x86_64 + ARM64)', 'Apache-2.0, vollständig Open Source', ], isNotList: [ - 'Kein Produktions-Laufzeit-Loader — es validiert, es deployt nicht', - 'Kein mandantenfähiges SaaS — die Web-UI ist eine Single-Tenant-Vorschau', - 'Laufzeit-Entscheidung — diese Fähigkeit ist experimentell', + 'Ein Produktions-Laufzeit-Loader — heute validiert es; geführtes Deployment ist geplant', + 'Ein mandantenfähiges SaaS — die gehostete UI ist eine Single-Tenant-Vorschau', + 'Laufzeit-Entscheidung — als experimentelle, operator-geschützte Vorschau verfügbar', + ], + footer: 'Version 0.1.5 ist bewusst abgegrenzt: zuerst ein verlässliches Kompatibilitäts-Gate, danach schrittweise Laufzeit-Auslieferung, sobald sie reift. Kein bloßes Label — Nachweise und Doku liegen im Repo.', + }, + why: { + eyebrow: 'Warum es das gibt', + heading: 'Jedes ernsthafte eBPF-Team baut das irgendwann selbst.', + body: 'Cilium und Tetragon starten ihre Probes mit little-vm-helper über viele Kernel. Falco pflegt ein Firecracker-basiertes kernel-testing-Framework. Es gibt keinen fertigen Weg zu beweisen, dass ein kompiliertes BPF-Objekt auf den Kerneln lädt, für die du auslieferst — also bauen Teams ihr eigenes VM-Harness oder erfahren es in der Produktion. bpfcompat verpackt diese Fähigkeit als sofort einsetzbares CI-Gate.', + sources: 'Öffentliche Referenzen', + }, + compare: { + eyebrow: 'Im Vergleich', + heading: 'Wo bpfcompat hineinpasst.', + note: 'Das sind hervorragende Werkzeuge. bpfcompat ersetzt die Low-Level-Bausteine nicht — es verpackt den Kompatibilitäts-Gate-Anwendungsfall, damit du ihn nicht selbst zusammenbaust.', + colDiy: 'Selbst gebaut (vmtest)', + rows: [ + { label: 'Was es ist', cells: ['Sofort einsetzbares Gate + Report', 'VM-Baustein', 'Falco-Treiber-Validator', 'DIY-VM-Harness'] }, + { label: 'Startet echte Kernel in VMs', cells: ['✓', '✓', '✓', '✓'] }, + { label: 'Kuratierte Multi-Distro-Matrix enthalten', cells: ['✓', '~', '~', '–'] }, + { label: 'Verifier · BTF · Klassifizierung im Report', cells: ['✓', '–', '~', '–'] }, + { label: 'Ein-Zeilen-GitHub-Action + Job-Summary', cells: ['✓', '✓', '~', '–'] }, + { label: 'Am besten, wenn', cells: ['du ein sofort einsetzbares Gate + teilbare Nachweise willst', 'du bereits in Cilium-Tooling lebst', 'du Falco-Treiber validierst', 'du volle Kontrolle / eigene Kernel brauchst'] }, ], - footer: 'Version 0.1.5 ist ein ernstzunehmendes MVP für Kompatibilitätsnachweis und CI-Gating. Wir kennzeichnen es bewusst so.', }, toolchain: { eyebrow: 'Kernel Guard eBPF-Toolchain', @@ -481,20 +546,40 @@ const es: BpStrings = { labels: { primaryLanguage: 'Lenguaje principal', license: 'Licencia', latestRelease: 'Última versión', kernelRange: 'Rango de kernels probado' }, }, scope: { - heading: 'Lo que es — y lo que aún no es.', - isLabel: 'Es', isNotLabel: 'Aún no es', + heading: 'Lo que es — y lo que viene después.', + isLabel: 'Disponible hoy', isNotLabel: 'En la hoja de ruta', isList: [ 'Evidencia real de carga y attach desde dentro de kernels reales', - 'Una compuerta de CI con códigos de salida deterministas', - 'Una matriz de kernels multi-distro y multi-arquitectura (5.x–6.x)', + 'Una compuerta de CI con códigos de salida deterministas — se entrega como GitHub Action', + 'Una matriz de kernels multi-distro y multi-arquitectura (5.x–6.x, x86_64 + ARM64)', 'Apache-2.0, totalmente de código abierto', ], isNotList: [ - 'Un cargador de tiempo de ejecución de producción — valida, no despliega', - 'Un SaaS multiinquilino — la interfaz web es una Vista previa técnica de un solo inquilino', - 'Decisión en tiempo de ejecución — esa capacidad es experimental', + 'Un cargador de ejecución de producción — hoy valida; el despliegue guiado está planificado', + 'Un SaaS multiinquilino — la interfaz alojada es una Vista previa técnica de un solo inquilino', + 'Decisión en tiempo de ejecución — disponible como vista previa experimental, con control de operador', + ], + footer: 'La versión 0.1.5 tiene un alcance deliberado: primero una compuerta de compatibilidad fiable y, después, la entrega en ejecución a medida que madura. No es solo una etiqueta — la evidencia y la documentación están en el repositorio.', + }, + why: { + eyebrow: 'Por qué existe', + heading: 'Todo equipo de eBPF serio acaba construyendo esto.', + body: 'Cilium y Tetragon arrancan sus probes en muchos kernels con little-vm-helper. Falco mantiene un framework de kernel-testing basado en Firecracker. No existe una forma lista para usar de demostrar que un objeto BPF compilado carga en los kernels a los que despliegas — así que los equipos construyen su propio arnés de VM, o lo descubren en producción. bpfcompat empaqueta esa capacidad como una compuerta de CI lista para usar.', + sources: 'Referencias públicas', + }, + compare: { + eyebrow: 'Cómo se compara', + heading: 'Dónde encaja bpfcompat.', + note: 'Son herramientas excelentes. bpfcompat no reemplaza los bloques de bajo nivel — empaqueta el caso de uso de la compuerta de compatibilidad para que no lo montes tú mismo.', + colDiy: 'Hazlo tú mismo (vmtest)', + rows: [ + { label: 'Qué es', cells: ['Compuerta lista + informe', 'Bloque de VM', 'Validador de drivers de Falco', 'Arnés de VM casero'] }, + { label: 'Arranca kernels reales en VMs', cells: ['✓', '✓', '✓', '✓'] }, + { label: 'Matriz multi-distro curada incluida', cells: ['✓', '~', '~', '–'] }, + { label: 'Verificador · BTF · clasificación en el informe', cells: ['✓', '–', '~', '–'] }, + { label: 'GitHub Action de una línea + resumen del job', cells: ['✓', '✓', '~', '–'] }, + { label: 'Mejor cuando', cells: ['quieres una compuerta lista + evidencia compartible', 'ya vives en el tooling de Cilium', 'validas drivers de Falco', 'necesitas control total / kernels propios'] }, ], - footer: 'La versión 0.1.5 es un MVP serio para evidencia de compatibilidad y gating de CI. La etiquetamos así a propósito.', }, toolchain: { eyebrow: 'Cadena de herramientas eBPF de Kernel Guard', @@ -593,20 +678,40 @@ const fr: BpStrings = { labels: { primaryLanguage: 'Langage principal', license: 'Licence', latestRelease: 'Dernière version', kernelRange: 'Plage de noyaux testée' }, }, scope: { - heading: 'Ce que c’est — et ce que ce n’est pas encore.', - isLabel: 'C’est', isNotLabel: 'Ce n’est pas encore', + heading: 'Ce que c’est — et ce qui vient ensuite.', + isLabel: 'Disponible aujourd’hui', isNotLabel: 'Sur la feuille de route', isList: [ 'De vraies preuves de chargement et d’attach depuis de vrais noyaux', - 'Une barrière CI avec des codes de sortie déterministes', - 'Une matrice de noyaux multi-distros et multi-architectures (5.x–6.x)', + 'Une barrière CI avec des codes de sortie déterministes — livrée comme GitHub Action', + 'Une matrice de noyaux multi-distros et multi-architectures (5.x–6.x, x86_64 + ARM64)', 'Apache-2.0, entièrement open source', ], isNotList: [ - 'Un chargeur d’exécution de production — il valide, il ne déploie pas', - 'Un SaaS multi-locataire — l’interface web est un Aperçu technique mono-locataire', - 'La décision à l’exécution — cette capacité est expérimentale', + 'Un chargeur d’exécution de production — aujourd’hui il valide ; le déploiement guidé est prévu', + 'Un SaaS multi-locataire — l’interface hébergée est un Aperçu technique mono-locataire', + 'La décision à l’exécution — disponible en aperçu expérimental, réservé aux opérateurs', + ], + footer: 'La version 0.1.5 a un périmètre délibéré : d’abord une barrière de compatibilité fiable, puis la livraison à l’exécution à mesure qu’elle mûrit. Pas qu’une étiquette — les preuves et la documentation sont dans le dépôt.', + }, + why: { + eyebrow: 'Pourquoi ça existe', + heading: 'Toute équipe eBPF sérieuse finit par construire ça.', + body: 'Cilium et Tetragon démarrent leurs probes sur de nombreux noyaux avec little-vm-helper. Falco maintient un framework kernel-testing basé sur Firecracker. Il n’existe pas de moyen prêt à l’emploi de prouver qu’un objet BPF compilé se charge sur les noyaux que vous ciblez — alors les équipes construisent leur propre harnais de VM, ou le découvrent en production. bpfcompat empaquette cette capacité sous forme de barrière CI prête à l’emploi.', + sources: 'Références publiques', + }, + compare: { + eyebrow: 'Comparaison', + heading: 'Où se situe bpfcompat.', + note: 'Ce sont d’excellents outils. bpfcompat ne remplace pas les briques de bas niveau — il empaquette le cas d’usage de la barrière de compatibilité pour que vous n’ayez pas à l’assembler.', + colDiy: 'Fait maison (vmtest)', + rows: [ + { label: 'Ce que c’est', cells: ['Barrière prête + rapport', 'Brique de VM', 'Validateur de drivers Falco', 'Harnais de VM maison'] }, + { label: 'Démarre de vrais noyaux en VM', cells: ['✓', '✓', '✓', '✓'] }, + { label: 'Matrice multi-distros curée incluse', cells: ['✓', '~', '~', '–'] }, + { label: 'Vérificateur · BTF · classification dans le rapport', cells: ['✓', '–', '~', '–'] }, + { label: 'GitHub Action en une ligne + résumé du job', cells: ['✓', '✓', '~', '–'] }, + { label: 'Idéal quand', cells: ['vous voulez une barrière prête + des preuves partageables', 'vous vivez déjà dans l’outillage Cilium', 'vous validez des drivers Falco', 'vous voulez un contrôle total / des noyaux sur mesure'] }, ], - footer: 'La version 0.1.5 est un MVP sérieux pour la preuve de compatibilité et le gating CI. Nous l’étiquetons ainsi délibérément.', }, toolchain: { eyebrow: 'Chaîne d’outils eBPF de Kernel Guard', @@ -705,20 +810,40 @@ const ja: BpStrings = { labels: { primaryLanguage: '主要言語', license: 'ライセンス', latestRelease: '最新リリース', kernelRange: 'テスト済みカーネル範囲' }, }, scope: { - heading: '何であるか — そしてまだ何でないか。', - isLabel: '現在できること', isNotLabel: 'まだできないこと', + heading: '何であるか — そして次に来るもの。', + isLabel: '現在利用可能', isNotLabel: 'ロードマップ', isList: [ '本物のカーネル内部からの、実際の読み込み・アタッチの証拠', - '決定的な終了コードを持つ CI ゲート', - 'マルチディストロ・マルチアーキテクチャのカーネルマトリクス(5.x–6.x)', + '決定的な終了コードを持つ CI ゲート — GitHub Action として提供', + 'マルチディストロ・マルチアーキテクチャのカーネルマトリクス(5.x–6.x、x86_64 + ARM64)', 'Apache-2.0、完全なオープンソース', ], isNotList: [ - '本番のランタイムローダーではない — 検証はするが、デプロイはしない', - 'マルチテナント SaaS ではない — Web UI はシングルテナントのテクニカルプレビュー', - 'ランタイム判定 — この機能は実験的', + '本番のランタイムローダー — 現在は検証のみ。ガイド付きデプロイは計画中', + 'マルチテナント SaaS — ホスト型 UI はシングルテナントのテクニカルプレビュー', + 'ランタイム判定 — 実験的な、オペレーター限定のプレビューとして提供', + ], + footer: 'バージョン 0.1.5 は意図的に範囲を絞っています。まず信頼できる互換性ゲート、成熟に応じてランタイム配信を重ねます。単なるラベルではなく、証拠とドキュメントはリポジトリにあります。', + }, + why: { + eyebrow: 'なぜ存在するのか', + heading: '本気の eBPF チームは、結局これを自前で作る。', + body: 'Cilium と Tetragon は little-vm-helper で多数のカーネル上にプローブを起動します。Falco は Firecracker ベースの kernel-testing フレームワークを維持しています。コンパイル済みの BPF オブジェクトが、出荷先のカーネルで読み込めることを証明する既製の方法はありません — だからチームは自前の VM ハーネスを作るか、本番で気づくことになります。bpfcompat は、その機能をそのまま使える CI ゲートとしてパッケージ化します。', + sources: '公開リファレンス', + }, + compare: { + eyebrow: '比較', + heading: 'bpfcompat の立ち位置。', + note: 'これらは優れたツールです。bpfcompat は低レベルの構成要素を置き換えるものではなく、互換性ゲートのユースケースを、自分で組み立てなくて済むようにパッケージ化します。', + colDiy: '自作(vmtest)', + rows: [ + { label: '何であるか', cells: ['そのまま使える互換性ゲート + レポート', 'VM の構成要素', 'Falco ドライバ検証ツール', '自作の VM ハーネス'] }, + { label: '実カーネルを VM で起動', cells: ['✓', '✓', '✓', '✓'] }, + { label: 'キュレーション済みマルチディストロ・マトリクス同梱', cells: ['✓', '~', '~', '–'] }, + { label: 'レポートにベリファイア・BTF・分類', cells: ['✓', '–', '~', '–'] }, + { label: '1 行の GitHub Action + ジョブサマリ', cells: ['✓', '✓', '~', '–'] }, + { label: '最適なケース', cells: ['そのまま使えるゲート + 共有可能な証拠が欲しい', 'すでに Cilium のツール群を使っている', 'Falco ドライバを検証する', '完全な制御 / 独自カーネルが必要'] }, ], - footer: 'バージョン 0.1.5 は、互換性の証拠と CI ゲーティングのための本気の MVP です。あえてそう表記しています。', }, toolchain: { eyebrow: 'Kernel Guard eBPF ツールチェーン', @@ -817,20 +942,40 @@ const zhCN: BpStrings = { labels: { primaryLanguage: '主要语言', license: '许可证', latestRelease: '最新版本', kernelRange: '已测试内核范围' }, }, scope: { - heading: '它是什么——以及它还不是什么。', - isLabel: '它是', isNotLabel: '它还不是', + heading: '它是什么——以及接下来是什么。', + isLabel: '现已提供', isNotLabel: '路线图', isList: [ '来自真实内核内部的真实加载与挂载证据', - '具有确定性退出码的 CI 闸门', - '多发行版、多架构的内核矩阵(5.x–6.x)', + '具有确定性退出码的 CI 闸门——以 GitHub Action 形式提供', + '多发行版、多架构的内核矩阵(5.x–6.x,x86_64 + ARM64)', 'Apache-2.0,完全开源', ], isNotList: [ - '生产运行时加载器——它只做验证,不做部署', - '多租户 SaaS——Web 界面是单租户的技术预览', - '运行时决策——该能力尚处于实验阶段', + '生产运行时加载器——目前只做验证;引导式部署在计划中', + '多租户 SaaS——托管界面是单租户的技术预览', + '运行时决策——以实验性、需操作员授权的预览形式提供', + ], + footer: '0.1.5 版本是有意限定范围的:先做可靠的兼容性闸门,再随着成熟逐步叠加运行时交付。这不仅是一个标注——证据与文档都在仓库中。', + }, + why: { + eyebrow: '为什么会有它', + heading: '认真做 eBPF 的团队,最终都会自己造这个。', + body: 'Cilium 和 Tetragon 用 little-vm-helper 在众多内核上启动它们的探针。Falco 维护着一个基于 Firecracker 的 kernel-testing 框架。没有现成的方法可以证明一个已编译的 BPF 对象能在你要发布的内核上加载——于是团队要么自建 VM 测试台,要么在生产中才发现问题。bpfcompat 把这一能力打包成一个开箱即用的 CI 闸门。', + sources: '公开参考', + }, + compare: { + eyebrow: '如何比较', + heading: 'bpfcompat 的定位。', + note: '这些都是优秀的工具。bpfcompat 并不替代底层构件——它把“兼容性闸门”这一用例打包好,省去你自己拼装。', + colDiy: '自行搭建(vmtest)', + rows: [ + { label: '它是什么', cells: ['开箱即用的兼容性闸门 + 报告', 'VM 构件', 'Falco 驱动验证器', '自制 VM 测试台'] }, + { label: '在 VM 中启动真实内核', cells: ['✓', '✓', '✓', '✓'] }, + { label: '内置精选的多发行版矩阵', cells: ['✓', '~', '~', '–'] }, + { label: '报告含校验器 · BTF · 分类', cells: ['✓', '–', '~', '–'] }, + { label: '一行 GitHub Action + 作业摘要', cells: ['✓', '✓', '~', '–'] }, + { label: '何时最适合', cells: ['想要开箱即用的闸门 + 可分享的证据', '已经在使用 Cilium 工具链', '要验证 Falco 驱动', '需要完全掌控 / 自定义内核'] }, ], - footer: '0.1.5 版本是一个面向兼容性证据与 CI 设闸的认真 MVP。我们有意这样标注。', }, toolchain: { eyebrow: 'Kernel Guard eBPF 工具链', @@ -929,20 +1074,40 @@ const ko: BpStrings = { labels: { primaryLanguage: '주요 언어', license: '라이선스', latestRelease: '최신 릴리스', kernelRange: '테스트된 커널 범위' }, }, scope: { - heading: '무엇인지 — 그리고 아직 무엇이 아닌지.', - isLabel: '현재 제공', isNotLabel: '아직 아님', + heading: '무엇인지 — 그리고 다음에 무엇이 오는지.', + isLabel: '현재 제공', isNotLabel: '로드맵', isList: [ '진짜 커널 내부에서 나온 실제 로드 및 attach 증거', - '결정적 종료 코드를 갖는 CI 게이트', - '다중 배포판·다중 아키텍처 커널 매트릭스(5.x–6.x)', + '결정적 종료 코드를 갖는 CI 게이트 — GitHub Action으로 제공', + '다중 배포판·다중 아키텍처 커널 매트릭스(5.x–6.x, x86_64 + ARM64)', 'Apache-2.0, 완전한 오픈소스', ], isNotList: [ - '운영 런타임 로더가 아님 — 검증할 뿐 배포하지 않음', - '멀티테넌트 SaaS가 아님 — 웹 UI는 단일 테넌트 기술 미리보기', - '런타임 결정 — 이 기능은 실험적임', + '운영 런타임 로더 — 현재는 검증만 수행하며, 가이드 배포는 계획 중', + '멀티테넌트 SaaS — 호스팅 UI는 단일 테넌트 기술 미리보기', + '런타임 결정 — 실험적이며 운영자 전용 미리보기로 제공', + ], + footer: '버전 0.1.5는 의도적으로 범위를 좁혔습니다: 먼저 신뢰할 수 있는 호환성 게이트, 이후 성숙해짐에 따라 런타임 전달을 더합니다. 단순한 라벨이 아니라 증거와 문서가 저장소에 있습니다.', + }, + why: { + eyebrow: '왜 존재하는가', + heading: '진지한 eBPF 팀은 결국 이것을 직접 만든다.', + body: 'Cilium과 Tetragon은 little-vm-helper로 여러 커널에서 프로브를 부팅합니다. Falco는 Firecracker 기반 kernel-testing 프레임워크를 유지합니다. 컴파일된 BPF 오브젝트가 배포 대상 커널에서 로드되는지 증명하는 기성 방법은 없습니다 — 그래서 팀들은 자체 VM 하니스를 만들거나, 프로덕션에서 알게 됩니다. bpfcompat은 그 기능을 바로 쓸 수 있는 CI 게이트로 패키징합니다.', + sources: '공개 참고자료', + }, + compare: { + eyebrow: '비교', + heading: 'bpfcompat의 위치.', + note: '모두 훌륭한 도구입니다. bpfcompat은 저수준 구성요소를 대체하지 않습니다 — 호환성 게이트 사용 사례를 직접 조립하지 않아도 되도록 패키징합니다.', + colDiy: '직접 구축 (vmtest)', + rows: [ + { label: '무엇인가', cells: ['바로 쓰는 호환성 게이트 + 리포트', 'VM 구성요소', 'Falco 드라이버 검증기', '자체 VM 하니스'] }, + { label: '실제 커널을 VM에서 부팅', cells: ['✓', '✓', '✓', '✓'] }, + { label: '큐레이션된 다중 배포판 매트릭스 포함', cells: ['✓', '~', '~', '–'] }, + { label: '리포트에 검증기 · BTF · 분류', cells: ['✓', '–', '~', '–'] }, + { label: '한 줄 GitHub Action + 잡 요약', cells: ['✓', '✓', '~', '–'] }, + { label: '가장 적합할 때', cells: ['바로 쓰는 게이트 + 공유 가능한 증거가 필요할 때', '이미 Cilium 도구를 쓰고 있을 때', 'Falco 드라이버를 검증할 때', '완전한 제어 / 커스텀 커널이 필요할 때'] }, ], - footer: '버전 0.1.5는 호환성 증거와 CI 게이팅을 위한 진지한 MVP입니다. 의도적으로 그렇게 표기합니다.', }, toolchain: { eyebrow: 'Kernel Guard eBPF 툴체인', diff --git a/src/pages/bpfcompat/parts.tsx b/src/pages/bpfcompat/parts.tsx index 51bd6c5..d453fc2 100644 --- a/src/pages/bpfcompat/parts.tsx +++ b/src/pages/bpfcompat/parts.tsx @@ -706,6 +706,85 @@ export function ScopePanel() { ); } +export function WhyBuilt() { + const t = useBp(); + const refs = [ + { label: 'little-vm-helper (Cilium)', href: 'https://github.com/cilium/little-vm-helper' }, + { label: 'falcosecurity/kernel-testing', href: 'https://github.com/falcosecurity/kernel-testing' }, + { label: 'bpfvalidator', href: 'https://github.com/Andreagit97/bpfvalidator' }, + ]; + return ( +
+ {t.why.eyebrow} +

{t.why.heading}

+

{t.why.body}

+
+ {t.why.sources}: + {refs.map((r) => ( + + {r.label} + + ))} +
+
+ ); +} + +export function ComparisonTable() { + const t = useBp(); + const cols = ['bpfcompat', 'LVH (Cilium)', 'bpfvalidator', t.compare.colDiy]; + const glyph = (c: string) => { + if (c === '✓') return ; + if (c === '–') return ; + if (c === '~') return ~; + return {c}; + }; + return ( +
+
+ {t.compare.eyebrow} +

{t.compare.heading}

+
+
+ + + + + ))} + + + + {t.compare.rows.map((row) => ( + + + {row.cells.map((cell, i) => ( + + ))} + + ))} + +
+ {cols.map((c, i) => ( + + {c} +
{row.label} + {glyph(cell)} +
+
+

{t.compare.note}

+
+ ); +} + export function ToolchainBand() { const t = useBp(); const prefix = useLangPrefix();