Bazel Vizyon

Sorun bildirin Kaynağı göster

Herhangi bir yazılım geliştirici, her boyutta ya da karmaşıklıkta her projeyi verimli bir şekilde oluşturabilir, test edebilir ve paket haline getirebilir. Ayrıca, kullanılması ve genişletilmesi kolay araçlar kullanılır.

  • Mühendisler yapıyla ilgili temel bilgileri hafife alabilir. Derleme ve test etme işlemlerinin mekanik süreci çözülmüş olduğundan yazılım geliştiricileri, kod yazmanın yaratıcı sürecine odaklanır. Kullanıcılar derleme sistemini yeni dilleri veya benzersiz kuruluş ihtiyaçlarını destekleyecek şekilde özelleştirirken temel tesisat sistemlerini yeniden icat etmek zorunda kalmadan kendi kullanım alanlarına özgü genişletilebilirlik özelliklerine odaklanır.

  • Mühendisler herhangi bir projeye kolayca katkıda bulunabiliyor. 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. Sorunsuz bir şekilde çalışır. Platformlar arası uzaktan yürütme sayesinde, herhangi bir makinede herhangi bir yerde çalışabilirler ve değişikliklerini projenin hedeflediği tüm platformlarda eksiksiz olarak test edebilirler. Mühendisler yeni bir proje için derlemeyi hızlı bir şekilde yapılandırabilir veya mevcut bir derlemeyi aşamalı olarak taşıyabilir.

  • Projeler her boyutta kod tabanına ve her boyuttan ekibe göre ölçeklendirilebilir. Hızlı ve artımlı testler, ekiplerin her değişikliği uygulamadan önce tam olarak doğrulamasını sağlar. Depolar büyüdükçe, projeler birden fazla depoya yayılırken ve birçok dil kullanıma sunulduğunda bile bu durum değişmez. Altyapı, geliştiricileri derleme hızı için test kapsamını değiştirmeye zorlamaz.

Bazel'in bu vizyonu gerçekleştirme potansiyeline sahip olduğuna inanıyoruz.

Bazel, yeniden oluşturulabilir (belirli bir giriş kümesi her zaman aynı çıkışları üretir) ve taşınabilir (derleme, çıktıyı etkilemeden herhangi bir makinede çalıştırılabilir) derlemeleri mümkün kılacak şekilde sıfırdan tasarlanmıştır.

Bu özellikler güvenli artımlılığı (yalnızca değiştirilmiş girişlerin yeniden oluşturulması yolsuzluk riskine yol açmaz) ve dağıtılabilirliği (derleme işlemleri bağımsızdır ve dışa aktarılabilir) destekler. Bazel, birden fazla çekirdekte ve uzak sistemlerde çalışan doğru derlemeyi yapmak ve paralel yapmak için gereken işleri en aza indirerek tüm derlemeleri hızlandırabilir.

Bazel'in basit bir genişletilebilirlik dilinde uygulanmış dillere, platformlara ve araç zincirlerine özel talimatlardan oluşan soyutlama katmanı, bu katmanın her bağlama kolayca uygulanmasını sağlıyor.

Bazel temel yetkinlikleri

  1. Bazel çok dilli, çoklu platform derleme ve testlerini destekler. Hangi dil ve platform kombinasyonunu hedeflerseniz hedefleyin 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, herhangi bir dil veya platform için derleme tanımlamak üzere 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 büyük geliştirme platformlarında (Linux, MacOS ve Windows) çalışır.
  6. Bazel'ı benimsemenin çaba gerektirdiğini kabul ediyoruz, ancak kademeli olarak benimsenmesi de mümkündür. Bazel, belirli bir dil/platform için fiili standart araçlarla arayüz sağlar.

Dil topluluklarına hizmet verme

Yazılım mühendisliği, dil toplulukları, yani genelde yaygın araç ve uygulamaları kullanan 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ının mevcut olması gerekir.

Bazel, uygulamaların genişletilebilir ve açık olmasını ve her dilde iyi kuralları desteklemeyi taahhüt eder.

İyi bir kural setinin şartları

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

Bu öğelerin her biri vazgeçilmezdir ve yalnızca birlikte Bazel'ın kendi ekosistemlerindeki yetkinliklerini sağlayabilir.

Ayrıca bu kurallar genel olarak da yeterlidir. Hepsi yerine getirildikten sonra Bazel, sahip olduğu değeri dil topluluğunun üyelerine bütünüyle iletir.