Bazel Görüşü

Sorun bildirin Kaynağı göster

Tüm yazılım geliştiriciler, her türlü boyutu veya karmaşıklıkta kolayca alınıp genişletilebilen araçları kullanarak her türlü projeyi verimli bir şekilde derleyebilir, test edebilir ve paketleyebilir.

  • Mühendisler temel yapı taşlarını kabul edebilirler. Yazılım geliştiricileri, kod yazma sürecinin mekanik süreci çözüldüğünden kod yazmanın yaratıcı sürecine odaklanırlar. Derleme sistemini yeni dilleri veya benzersiz kuruluş ihtiyaçlarını destekleyecek şekilde özelleştirirken kullanıcılar, tesisat malzemelerini yeniden tasarlamak zorunda kalmadan kullanım alanlarına özgü genişletilebilirlik özelliklerine odaklanır.

  • Mühendisler herhangi bir 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, her şey çalışır. Platformlar arası uzaktan yürütme sayesinde, herhangi bir makinede diledikleri yerden çalışabilir ve değişiklikleri, projenin hedeflediği tüm platformlarda test edebilirler. Mühendisler derlemeyi yeni bir proje için hızla yapılandırabilir veya mevcut bir derlemeyi artımlı olarak taşıyabilir.

  • Projeler tüm ölçeklerde ve her boyutta ekipte uygulanabilir. Hızlı ve artımlı testler sayesinde ekip, değişiklik yapılmadan önce her değişikliği tam olarak doğrulayabilir. Depolar büyüdükçe, projeler birden fazla depoyu kapsasa ve birden fazla dil sunulsa bile bu durum değişmez. Altyapı, geliştiricileri derleme hızı için test kapsamı takas etmeye zorlamaz.

Bazel'ın bu vizyonu gerçekleştirme potansiyeli olduğunu düşünüyoruz.

Bazel, baştan sona yeniden oluşturulabilen (belirli bir giriş kümesi her zaman aynı çıkışları üretecektir) ve taşınabilir (bir derleme, çıkışı etkilemeden herhangi bir makinede çalıştırılabilir) derlemeleri etkinleştirmek için sıfırdan oluşturuldu.

Bu özellikler, güvenli artımlılığı (yalnızca değiştirilen girişlerin yeniden oluşturulması bozulma riskini artırmaz) ve dağıtılabilirliği (derleme işlemleri izole edilir ve boşaltılabilir) destekler. Doğru bir derleme yapmak için gereken iş yükünü en aza indirerek ve işleri birden çok çekirdek ve uzak sistemde paralel yapan Bazel, derlemeleri hızlandırabilir.

Bazel'ın soyutlama katmanı (basit genişletilebilirlik dilinde uygulanan dillere, platformlara ve araç zincirlerine özel talimatlar) her bağlama kolayca uygulanmasını sağlar.

Bazel temel yetkinlikleri

  1. 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.
  2. Bazel derlemeleri hızlı ve doğru. Her derleme ve test çalıştırması, geliştiricilerinizin makinelerinde ve CI'da artımlıdır.
  3. Bazel, her dilde veya platformda derlemeleri tanımlamak için tek tip, genişletilebilir bir dil sunar.
  4. Bazel, uzaktan yürütme ve önbelleğe alma hizmetlerine bağlanarak derlemelerinizin ölçeklenmesini sağlar.
  5. Bazel, tüm büyük geliştirme platformlarında (Linux, MacOS ve Windows) çalışır.
  6. Bazel'ın benimsenmesinin çaba gerektirdiğini kabul ediyoruz, ancak kademeli olarak benimsemek de mümkündür. Bazel, belirli bir dil/platform için standart dışı araçlara sahip arayüzler sunar.

Dil topluluklarına hizmet sunma

Yazılım mühendisliği, dil toplulukları bağlamında (genellikle yaygın olarak kullanılan araçları ve uygulamaları kullanan ve kendi kendini düzenleyen kişi grupları) gelişir.

Bir dil topluluğunun üyelerinin kullanabilmesi için yüksek kaliteli Bazel kurallarının, topluluğun iş akışları ve kurallarıyla entegre edilmesi gerekir.

Bazel genişletilebilir ve açık olmanın yanı sıra her dilde iyi kurallar oluşturmayı destekler.

İyi bir kural grubu gereksinimleri

  1. Kuralların, kod kapsamı da 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 etkileşimde bulunması ve diğer yaygın olarak kullanılan derleme sistemlerinden artan taşıma yollarını desteklemesi gerekir.
  3. Kuralların, "Kalabalık sandviç" ilkelerine uyarak genişletilebilir ve birlikte çalışabilir olması gerekir.
  4. Kuralların uzaktan yürütmeye hazır olması gerekir. Pratikte bu, toolchains mekanizması kullanılarak yapılandırılabilir.
  5. Kurallar (ve Bazel) varsa dil için çok kullanılan bir IDE ile arayüz oluşturmalıdır.
  6. Kuralların yeni kullanıcılar için tanıtım materyali ve uzman kullanıcılar için kapsamlı dokümanlar içeren kapsamlı ve kullanılabilir dokümanlara sahip olması gerekir.

Bu öğelerin her biri çok önemlidir. Özellikle birlikte belirli bir ekosistem için yeterliliği Bazel'den sağlarlar.

Ayrıca, genel olarak yeterli düzeydedirler. Hepsi tamamlandıktan sonra Bazel, değerini söz konusu dil topluluğunun üyelerine tam olarak sunar.