Anlamsal versiyonlama API'siz programlara nasıl uygulanır?


42

Gelen http://semver.org/ bir değişiklik sonları / API tanıtıldı, değiştirmek olduğunu zaman ana sürüm sayısını artırmak için önerilir versioning- içinde -ki benim algı en çok kullanılan kongre gibi görünüyor.

Bununla birlikte, bu kılavuzun nasıl uygulanacağını bilmediğim iki senaryo var:

  1. Ya kodum herhangi bir API sunmuyorsa? Kodumu nasıl sürümlendirmeliyim?
  2. Kodum, geliştirmenin son aşamasında bir API sunmaya başlarsa ne olur?

7
Belirtilen durumların 1. maddesi: Anlamsal Sürümleme kullanan yazılım, genel bir API bildirmelidir. Bu API kodun kendisinde ilan edilebilir veya dokümantasyonda kesinlikle var olabilir. Ancak yapılır, kesin ve kapsamlı olmalıdır. Bence cevabı teknik olarak SemVer kullanmıyorsunuz, bu yüzden tamamen size kalmış.
Karınca P

Masaüstü uygulamaları gibi, herhangi bir API
sunmayan

Yanıtlar:


48

Semver, kitaplıkların ve paketlerin çeşitli enkarnasyonlarda bağımlılık cehennemini önleyecek şekilde versiyonlandırılması konusunda endişe duymaktadır. Bununla birlikte, Semver'in ardındaki fikir her türlü programa genişletilebilir - herhangi bir kod parçasının bir tür kullanıcı arayüzü vardır, ya da oldukça işe yaramaz.

  • Bir programlama kütüphanesi veya web servisi bir API'ye sahiptir.
  • Tüketici yazılımı bir GUI'ye sahip olabilir.
  • Komut satırı programlarında bir dizi anahtar ve seçenek bulunur.
  • Yapılandırma dosyaları aynı zamanda bir kullanıcı arayüzüdür.

Kelime işlemci gibi tüketici yazılımı örneğini kullanarak:

  • Bir hata düzeltmesi gönderirken düzeltme eki numarasını artırın, örneğin: “ uygulamanın salı günleri saat 00: 00'da sürekli çökmesine neden olan sabit hata ”.
  • Yeni bir özellik eklerken küçük sürüm numarasını artırın, örneğin: “ altı çizili metin için destek eklendi ”.
  • Kullanıcı arabirimini büyük ölçüde elden geçirdiğinizde ana sürümü artırın veya tüm dahili bileşenleri yeniden yazın. Örneğin: “ Araç çubukları çok fazla ekran mülkü kullanıyor. Kullanıcı Arabirimi şimdi yalnızca dokunma hareketleriyle sağlanıyor ”- böyle bir değişiklik varolan iş akışlarını bozar.

Bununla birlikte, Semver'in çözmeye çalıştığı birçok sorun, bağımlılık yönetimi alanı dışında mevcut değildir. Tüketici uygulamalarında, sürüm yalnızca bir sürüm değil, aynı zamanda bir pazarlama varlığıdır.

  • Firefox ve Chrome yeni sürümleri nispeten sık yayınlar ve ana sürüm numaralarını her sürümde artırır. Bu gülünç yüksek sürüm numaralarına neden olur (her ikisi de 30'undadır). Daha yüksek sürüm numarasına sahip bir tarayıcı, daha düşük sürüm numarasına sahip bir tarayıcıdan daha iyi olmalıdır, değil mi?

  • Apple'ın işletim sistemi OS X'in ana sürüm numarası, küçük sürüm numarasını etkili ana sürüm numarası yapan, adının bir parçası haline gelmiştir (X, Romen rakamlarında 10'dur).

  • Ubuntu işletim sistemi year.month.patchlevel versiyonlama şemasını kullanır. Bu, işletim sisteminizin ne kadar eski olduğunu hatırlamanızı kolaylaştırır, ancak hangi sürümlerin uyumlu olduğunu ve her sürüm için ne kadar süren bir destek olduğunu bulmak çok daha zor hale gelir.

  • Linux çekirdeği sürüm numarasını 2.6.39'dan 3.0.0'a çıkardı, çünkü 39biraz büyüyordu ve Linux'un 20. yıldönümünü anmak için.

  • Donald Knuth'un efsanevi TeX dizgi sistemi, sürüm 3'ten itibaren her sürümde başka bir rakam ekleyerek π'ya yaklaşan bir sürüm numarası kullanır: 3.14159265…. Bu, sistemin mükemmele nasıl yaklaştığını gösterir. Benzer şekilde, Metafont sistemi e : 2.7182818… ' e dönüşür.

Bu yüzden birçok başvuru Semver tarafından iyi bir şekilde sunulmuyor. Kullanıcılarınız için uygun bir sürüm şeması seçin (bu kullanıcıların diğer programcı veya tüketici olup olmadıklarına bakılmaksızın) ve tutarlı olmasını sağlayın.


1
Microsoft geliştirme araçları tarafından üretilen birçok yazılım AB'nin "genel" ana / küçük sürüm numaraları olduğu ABCD biçimine sahiptir ve CD, yazılımın oluşturulduğu tarihi / saati kodlar.
MZB

Sürümlendirme sisteminin anlamını seviyorum.
Ogier Schelvis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.