Bazel Vizyon

Herhangi bir yazılım geliştirici, kolay benimsenmesi ve genişletilmesi kolay araçlarla, her boyutta veya karmaşıklıkta her projeyi etkili bir şekilde oluşturabilir, test edebilir ve paketleyebilir.

  • Mühendisler, inşa etmeye ilişkin temel bilgileri kolayca verebilirler. Mekanik geliştirme ve test süreci çözüldüğü için yazılım geliştiricileri, yaratıcı kod yazma sürecine odaklanır. Derleme sistemini yeni dilleri veya benzersiz kuruluş ihtiyaçlarını destekleyecek şekilde özelleştiren kullanıcılar, temel tesisat ayarlarını yeniden yapmak zorunda kalmadan, kullanım alanlarına özel genişletilebilirlik özelliklerine odaklanır.

  • Mühendisler her projeye kolayca katkıda bulunabilirler. Yeni bir proje üzerinde çalışmaya başlamak isteyen bir geliştirici, projeyi klonlayıp derlemeyi çalıştırabilir. Yerel yapılandırmaya gerek yoktur, kolayca çalışır. Platformlar arası uzaktan yürütme sayesinde, herhangi bir yerde herhangi bir makinede çalışabilir ve yaptıkları değişiklikleri projenin hedeflediği tüm platformlarda tam olarak test edebilirler. Mühendisler, derlemeyi yeni bir proje için hızla yapılandırabilir veya mevcut bir derlemeyi aşamalı olarak taşıyabilir.

  • Projeler her boyuttan kod tabanı ve her boyuttan ekip için ölçeklenebilir. Hızlı ve artımlı testler sayesinde ekipler, her değişikliği değişiklik yapılmadan önce eksiksiz olarak doğrulayabilir. Depolar büyüse, projeler birden fazla depoyu kapsasa ve birden fazla dil kullanıma sunulsa bile bu durum geçerliliğini korur. Altyapı, geliştiricileri derleme hızı için test kapsamını değiştirmeye zorlamaz.

Bazel'in bu vizyonu gerçekleştirebilecek potansiyele sahip olduğunu düşünüyoruz.

Bazel, yeniden oluşturulabilen (belirli bir giriş grubu her zaman aynı çıktıları üretir) ve taşınabilir (yapı, çıktıyı etkilemeden herhangi bir makinede çalıştırılabilir) derlemelere olanak tanımak için sıfırdan oluşturulmuştur.

Bu özellikler güvenli artımlılığı (yalnızca değiştirilen girdilerin yeniden oluşturulması bozulma riskine yol açmaz) ve dağıtılabilirliği (derleme işlemleri izole edilir ve yüklenebilir) destekler. Bazel, doğru bir derleme yapmak için gereken çalışmayı en aza indirerek ve birden çok çekirdekte ve uzak sistemlerde bu çalışmayı paralel hale getirerek tüm derlemeleri hızlandırabilir.

Bazel'in soyutlama katmanı (basit genişletilebilirlik dilinde uygulanmış dillere, platformlara ve araç zincirlerine özgü talimatlar), bu katmanın her bağlama kolayca uygulanmasını sağlıyor.

Bazel temel yetkinlikleri

  1. Bazel, çok dilli, çok platformlu derleme ve testleri destekler. Hangi dil ve platform kombinasyonunu hedeflediğinizden bağımsız olarak, kaynak ağacınızın tamamını derleyip test etmek için tek bir komut çalıştırabilirsiniz.
  2. Bazel derlemeleri hızlı ve doğrudur. Geliştiricilerinizin makinelerinde ve CI'da her derleme ve test çalıştırması artımlıdır.
  3. Bazel, tüm diller veya platformlara yönelik derlemeleri tanımlamak için tek tip ve genişletilebilir bir dil sağlar.
  4. Bazel, uzaktan yürütme ve önbelleğe alma hizmetlerine bağlanarak derlemelerinizin ölçeklendirilmesini sağlar.
  5. Bazel, tüm önde gelen geliştirme platformlarında (Linux, MacOS ve Windows) çalışır.
  6. Bazel'i benimsemenin çaba gerektirdiğini ancak kademeli benimsemenin mümkün olduğunu kabul ediyoruz. Bazel, belirli bir dil/platform için geliştirilmiş standart araçlarla arayüz sunar.

Hizmette dil toplulukları

Yazılım mühendisliği, dil toplulukları, yani genellikle ortak araç ve uygulamalardan yararlanan ve kendini organize eden insan grupları bağlamında gelişir.

Bir dil topluluğunun üyelerinin kullanabilmesi için, söz konusu topluluğun iş akışları ve kurallarıyla entegre olan yüksek kaliteli Bazel kuralları bulunmalıdır.

Bazel geliştirilebilir ve açık olmayı ve her dilde geçerli kuralları desteklemeyi ilke edinmiştir.

İyi bir kural grubunun gereksinimleri

  1. Kuralların, kod kapsamı da dahil olmak üzere dil için verimli oluşturma ve test sürecini desteklemesi gerekir.
  2. Kuralların dil için (ör. Java için Maven) yaygın kullanılan bir "paket yöneticisi" ile arayüz oluşturması ve yaygın olarak kullanılan diğer derleme sistemlerinden artımlı taşıma yollarını desteklemesi gerekir.
  3. Kurallar, "Bazel sandviç" ilkelerine uygun genişletilebilir ve birlikte çalışabilir olmalıdır.
  4. Kuralların uzaktan yürütmeye hazır olması gerekir. Pratikte bu, araç zinciri mekanizması kullanılarak yapılandırılabilir anlamına gelir.
  5. Kuralların (ve Bazel'in), dil için yaygın kullanılan bir IDE (varsa) ile arayüz oluşturması gerekir.
  6. Kuralların kapsamlı, kullanılabilir belgelere, yeni kullanıcılar için tanıtım materyallerine ve uzman kullanıcılar için kapsamlı belgelere sahip olması gerekir.

Bu öğelerin her biri son derece önemlidir ve yalnızca birlikte Bazel'in kendi ekosistemine yönelik rekabetlerini sağlarlar.

Bu politikalar genel olarak yeterlidir. Bütün bunlar yerine getirildikten sonra, Bazel değerini bu dil topluluğunun üyelerine tam olarak sunar.