Penglihatan Bazel

Laporkan masalah Lihat sumber Per malam · 7,2 · 7,1 · 7,0 · 6,5 · 6,4

Setiap pengembang perangkat lunak dapat membangun, menguji, dan mengemas secara efisien proyek apa pun, dengan berbagai ukuran atau kompleksitas, dengan peralatan yang mudah digunakan dan memperluas.

  • Engineer dapat menganggap remeh dasar-dasar build. Developer software berfokus pada proses kreatif dalam penulisan kode, karena proses mekanis proses build dan pengujian terpecahkan. Saat menyesuaikan sistem build ke mendukung bahasa baru atau kebutuhan organisasi yang unik, pengguna fokus pada aspek ekstensibilitas yang unik untuk kasus penggunaannya, tanpa harus untuk menemukan kembali pemipaan dasar.

  • Engineer dapat dengan mudah berkontribusi ke project apa pun. Seorang pengembang yang ingin mulai mengerjakan proyek baru. Cukup buat kloning proyek dan menjalankan buat. Tidak perlu konfigurasi lokal, semuanya berfungsi. Dengan eksekusi jarak jauh lintas platform, mereka dapat bekerja pada komputer apa saja di mana saja dan menguji sepenuhnya perubahan mereka terhadap semua platform yang menjadi target proyek. Engineer dapat dengan cepat mengonfigurasi build untuk project baru atau secara bertahap memigrasikan build yang sudah ada.

  • Project dapat diskalakan ke codebase ukuran apa pun, semua ukuran tim. Cepat, pengujian inkremental memungkinkan tim untuk sepenuhnya memvalidasi setiap perubahan sebelum berkomitmen. Hal ini tetap berlaku bahkan saat repositori berkembang, proyek mencakup repo, dan beberapa bahasa diperkenalkan. Infrastruktur tidak memaksa developer untuk menukar cakupan pengujian dengan kecepatan build.

Kami yakin Bazel berpotensi untuk mewujudkan visi ini.

Bazel dibangun dari awal untuk mengaktifkan bangunan yang dapat direproduksi (sebuah input tertentu akan selalu menghasilkan output yang sama) dan portabel (bentuk dapat dijalankan di komputer apa pun tanpa memengaruhi output).

Karakteristik ini mendukung inkrementalitas yang aman (membangun ulang hanya yang diubah tidak menimbulkan risiko korupsi) dan distribusi (membangun tindakan diisolasi dan dapat dialihkan). Dengan meminimalkan pekerjaan yang perlu dilakukan build yang benar dan paralelisasi yang dapat berfungsi di beberapa core dan remote sistem operasi, Bazel dapat membuat semuanya dengan cepat.

Lapisan abstraksi Bazel — instruksi khusus untuk bahasa, platform, dan toolchain yang diimplementasikan dalam bahasa ekstensibilitas sederhana — memungkinkannya mudah diterapkan pada konteks apa pun.

Kompetensi inti Bazel

  1. Bazel mendukung build dan pengujian multi-bahasa dan multi-platform. Anda dapat jalankan satu perintah untuk membangun dan menguji seluruh hierarki sumber, apa pun kombinasi bahasa dan platform apa yang Anda targetkan.
  2. Build Bazel cepat dan benar. Setiap build dan pengujian dijalankan inkremental, tergantung pada mesin Linux dan CI.
  3. Bazel menyediakan bahasa yang seragam dan dapat diperluas untuk menentukan build untuk semua bahasa atau platform.
  4. Bazel memungkinkan build Anda diskalakan dengan terhubung ke eksekusi jarak jauh dan dan layanan penyimpanan data dalam cache.
  5. Bazel berfungsi di semua platform pengembangan utama (Linux, MacOS, dan Windows).
  6. Kami memahami bahwa mengadopsi Bazel membutuhkan usaha, tetapi adopsi bertahap sebaik mungkin. Antarmuka Bazel dengan alat standar de-facto untuk bahasa/platform.

Komunitas bahasa yang melayani

Software engineering berkembang dalam konteks komunitas bahasa — biasanya, dapat mengatur diri sendiri sekelompok orang yang menggunakan alat dan praktik yang umum digunakan.

Agar dapat digunakan oleh anggota komunitas bahasa, aturan Bazel berkualitas tinggi harus tersedia yang terintegrasi dengan alur kerja dan konvensi komunitas tersebut.

Bazel berkomitmen untuk dapat diperluas dan terbuka, dan untuk mendukung seperangkat aturan yang baik untuk bahasa apa pun.

Persyaratan seperangkat aturan yang baik

  1. Aturan harus mendukung pembuatan dan pengujian yang efisien untuk bahasa, termasuk cakupan kode.
  2. Aturan harus antarmuka dengan "pengelola paket" yang banyak digunakan untuk (seperti Maven untuk Java), dan mendukung jalur migrasi inkremental dari sistem build lain yang banyak digunakan.
  3. Aturan tersebut harus dapat diperluas dan dapat dioperasikan, sesuai "Sandwich Bazel" prinsip AI.
  4. Aturan harus siap eksekusi jarak jauh. Dalam praktiknya, ini berarti dapat dikonfigurasi menggunakan mekanisme Toolchain.
  5. Aturan (dan Bazel) harus berinteraksi dengan IDE yang digunakan secara luas untuk bahasa pemrograman, jika ada.
  6. Aturan harus memiliki dokumentasi yang menyeluruh dan dapat digunakan, dengan pengantar materi untuk pengguna baru, dokumen komprehensif untuk pengguna ahli.

Masing-masing item ini penting dan hanya bersama-sama item tersebut menghasilkan kompetensi untuk ekosistem spesifik mereka.

Selain itu, pada umumnya, sudah memadai - begitu semuanya terpenuhi, Bazel sepenuhnya menyampaikan nilainya kepada anggota komunitas bahasa tersebut.