Tüm yazılım geliştiriciler, kolayca benimsenip genişletilebilen araçlarla her boyut ve karmaşıklıktaki projeleri verimli bir şekilde derleyebilir, test edebilir ve paketleyebilir.
Mühendisler, derlemeyle ilgili temel bilgileri göz ardı edebilir. Yazılım geliştiriciler, derleme ve test etme gibi mekanik süreçleri çözdükleri için kod yazmanın yaratıcı sürecine odaklanır. Derleme sistemini yeni dilleri veya benzersiz kuruluş ihtiyaçlarını desteklemek için özelleştirirken kullanıcılar, temel altyapıyı yeniden icat etmek zorunda kalmadan genişletilebilirliğin kendi kullanım alanlarına özgü yönlerine odaklanır.
Mühendisler herhangi bir projeye kolayca katkıda bulunabilir. Yeni bir proje üzerinde çalışmaya başlamak isteyen bir geliştirici, projeyi klonlayıp derlemeyi çalıştırabilir. Yerel yapılandırma gerekmez. Bu özellik otomatik olarak çalışır. Platformlar arası uzaktan yürütme sayesinde, istedikleri makinede çalışabilir ve değişikliklerini projenin hedeflediği tüm platformlarda tam olarak test edebilirler. Mühendisler, derlemeyi yeni bir proje için hızlıca yapılandırabilir veya mevcut bir derlemeyi kademeli olarak taşıyabilir.
Projeler her boyutta kod tabanı ve ekip için ölçeklenebilir. Hızlı ve artımlı test, ekiplerin her değişikliği taahhüt edilmeden önce tam olarak doğrulamasına olanak tanır. Bu durum, depoların büyümesi, projelerin birden fazla depoyu kapsaması ve birden fazla dilin kullanılması durumunda bile geçerliliğini korur. Altyapı, geliştiricileri derleme hızı için test kapsamını feda etmeye zorlamaz.
Bazel'in bu vizyonu gerçekleştirme potansiyeline sahip olduğuna inanıyoruz.
Bazel, sıfırdan yeniden tasarlanarak yeniden üretilebilir (belirli bir giriş grubu her zaman aynı çıkışları üretir) ve taşınabilir (bir derleme, çıkışı etkilemeden herhangi bir makinede çalıştırılabilir) derlemeler sunmak için geliştirilmiştir.
Bu özellikler güvenli artımlılığı (yalnızca değiştirilen girişlerin yeniden oluşturulması bozulma riski oluşturmaz) ve dağıtılabilirliği (derleme işlemleri yalıtılmıştır ve başka bir makineye aktarılabilir) destekler. Bazel, doğru bir derleme yapmak için gereken işi en aza indirerek ve bu işi birden fazla çekirdek ve uzak sistemde paralelleştirerek her türlü derlemeyi hızlı hale getirebilir.
Bazel'in soyutlama katmanı (basit bir genişletilebilirlik dilinde uygulanan dillere, platformlara ve araç zincirlerine özgü talimatlar), Bazel'in herhangi bir bağlama kolayca uygulanmasını sağlar.
Bazel'in temel yetkinlikleri
- Bazel, çok dilli, çok platformlu derlemeleri ve testleri destekler. Hedeflediğiniz dil ve platform kombinasyonu ne olursa olsun, kaynak ağacınızın tamamını oluşturmak ve test etmek için tek bir komut çalıştırabilirsiniz.
- Bazel derlemeleri hızlı ve doğrudur. Her derleme ve test çalıştırması, geliştiricilerinizin makinelerinde ve CI'de artımlıdır.
- Bazel, herhangi bir dil veya platform için derlemeleri tanımlamak üzere tek tip, genişletilebilir bir dil sağlar.
- Bazel, uzaktan yürütme ve önbelleğe alma hizmetlerine bağlanarak derlemelerinizin ölçeklenmesine olanak tanır.
- Bazel, tüm büyük geliştirme platformlarında (Linux, MacOS ve Windows) çalışır.
- Bazel'i benimsemenin çaba gerektirdiğini kabul ediyoruz ancak kademeli olarak benimsenmesi mümkündür. Bazel, belirli bir dil/platform için standart araçlarla arayüz oluşturur.
Dil topluluklarına hizmet verme
Yazılım mühendisliği, dil toplulukları bağlamında gelişir. Bu topluluklar genellikle ortak araçları ve uygulamaları kullanan, kendi kendini yöneten gruplardır.
Bir dil topluluğunun üyelerine faydalı olması için, söz konusu topluluğun iş akışları ve kurallarıyla entegre olan yüksek kaliteli Bazel kuralları mevcut olmalıdır.
Bazel, genişletilebilir ve açık olmayı ve her dil için iyi kural kümelerini desteklemeyi taahhüt eder.
İyi bir kural kümesinin koşulları
- Kurallar, kod kapsamı da dahil olmak üzere dil için verimli derleme ve test işlemlerini desteklemelidir.
- Kurallar, dil için yaygın olarak kullanılan bir "paket yöneticisiyle (Java için Maven gibi) arayüz oluşturmalı ve yaygın olarak kullanılan diğer derleme sistemlerinden artımlı taşıma yollarını desteklemelidir.
- Kurallar, "Bazel sandviçi" ilkelerine uygun olarak genişletilebilir ve birlikte çalışabilir olmalıdır.
- Kuralların uzaktan yürütmeye hazır olması gerekir. Pratikte bu, araç zincirleri mekanizması kullanılarak yapılandırılabilir anlamına gelir.
- Kuralların (ve Bazel'in), varsa dil için yaygın olarak kullanılan bir IDE ile arayüz oluşturması gerekir.
- Kurallar, yeni kullanıcılar için giriş materyalleri ve uzman kullanıcılar için kapsamlı dokümanlar içeren kapsamlı ve kullanılabilir dokümanlara sahip olmalıdır.
Bu öğelerin her biri önemlidir ve Bazel'in belirli bir ekosistemdeki uzmanlıklarını yalnızca birlikte sunar.
Ayrıca, genel olarak yeterlidir. Tüm koşullar karşılandığında Bazel, bu dil topluluğunun üyelerine değerini tam olarak sunar.