Tüm yazılım geliştiriciler, kolayca kullanılabilen ve genişletilebilen araçlarla her boyutta ve karmaşıklıkta projeleri verimli bir şekilde oluşturabilir, test edebilir ve paketleyebilir.
Mühendisler, temel yapılandırma bilgilerini göz ardı edebilir. Yazılım geliştiriciler, derleme ve test etme gibi mekanik süreçler çözüldüğü için kod yazma sürecinin yaratıcı yönüne odaklanır. Kullanıcılar, derleme sistemini yeni dilleri veya benzersiz kurumsal ihtiyaçları destekleyecek şekilde özelleştirirken temel tesisatı yeniden oluşturmak zorunda kalmadan kendi kullanım alanlarına özgü genişletilebilirlik 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. Platformlar arası uzaktan yürütme sayesinde, istedikleri makinede istedikleri yerden çalışabilir ve değişikliklerini projenin hedeflediği tüm platformlarda tam olarak test edebilirler. Mühendisler, yeni bir proje için derlemeyi hızlıca yapılandırabilir veya mevcut bir derlemeyi kademeli olarak taşıyabilir.
Projeler, her boyuttaki kod tabanı ve her boyuttaki ekip için ölçeklenebilir. Hızlı ve artımlı testler, ekiplerin her değişikliği onaylamadan önce tam olarak doğrulamasına olanak tanır. Bu durum, depolar büyüdükçe, projeler birden fazla depoyu kapsadıkça ve birden fazla dil kullanıldıkça da geçerliliğini korur. Altyapı, geliştiricileri test kapsamını derleme hızıyla değiştirmeye zorlamaz.
Bazel'in bu vizyonu gerçekleştirebileceğine inanıyoruz.
Bazel, 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 oluşturmak için sıfırdan 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 yüklenebilir) 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 paralel hale getirerek tüm derlemeleri hızlı hale getirebilir.
Bazel'in soyutlama katmanı (basit bir genişletilebilirlik dilinde uygulanan, dillere, platformlara ve araç zincirlerine özgü talimatlar) herhangi bir bağlama kolayca uygulanmasına olanak tanır.
Bazel'in temel yetkinlikleri
- Bazel, çok dilli ve çok platformlu derlemeleri ve testleri destekler. Hedeflediğiniz dil ve platform kombinasyonu ne olursa olsun, kaynak ağacınızın tamamını oluşturup 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'da artımlı olarak yapılır.
- Bazel, herhangi bir dil veya platform için derlemeleri tanımlamak üzere tek tip, genişletilebilir bir dil sağlar.
- Bazel, uzak yürütme ve önbelleğe alma hizmetlerine bağlanarak derlemelerinizin ölçeklenmesini sağlar.
- Bazel, tüm büyük geliştirme platformlarında (Linux, macOS ve Windows) çalışır.
- Bazel'in benimsenmesinin çaba gerektirdiğini kabul ediyoruz ancak kademeli olarak benimsenmesi mümkündür. Bazel, belirli bir dil/platform için fiili 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 organize eden insan gruplarıdır.
Bir dil topluluğunun üyelerine fayda sağlamak için, bu topluluğun iş akışları ve gelenekleriyle entegre olan yüksek kaliteli Bazel kuralları mevcut olmalıdır.
Bazel, genişletilebilir ve açık olmaya, ayrıca herhangi bir dil için iyi kural kümelerini desteklemeye kararlıdır.
İyi bir kural grubunun şartları
- Kurallar, kod kapsamı da dahil olmak üzere dil için verimli oluşturma ve test etmeyi desteklemelidir.
- Kurallar, dil için yaygın olarak kullanılan bir "paket yöneticisi" ile arayüz oluşturmalı (ör. Java için Maven) ve diğer yaygın olarak kullanılan derleme sistemlerinden artımlı geçiş yollarını desteklemelidir.
- Kurallar, "Bazel sandviç" ilkelerine uygun olarak genişletilebilir ve birlikte çalışabilir olmalıdır.
- Kurallar uzaktan yürütmeye hazır olmalıdır. Pratikte bu, toolchain mekanizması kullanılarak yapılandırılabilir anlamına gelir.
- Kuralların (ve Bazel'in), dil için yaygın olarak kullanılan bir IDE ile arayüz oluşturması gerekir (varsa).
- Kurallar, yeni kullanıcılar için tanıtım materyalleri ve uzman kullanıcılar için kapsamlı belgeler içeren ayrıntılı ve kullanılabilir belgelere sahip olmalıdır.
Bu öğelerin her biri önemlidir ve yalnızca bir bütün halinde olduklarında Bazel'in belirli bir ekosistem için yeterliliklerini sağlarlar.
Ayrıca, genel olarak yeterlidirler. Tüm koşullar karşılandığında Bazel, değerini bu dil topluluğunun üyelerine tam olarak sunar.