WebBlocks Eklenti Ekosistemi ve Kataloğu

Bu belge, uygulama başlamadan önce bir sonraki aşamadaki WebBlocks eklenti ekosistemi yönelimini kayıt altına alır. Yalnızca mimari dokümantasyonudur. Çalışma zamanı kodu, rotalar, migration'lar, controller'lar, API istemcileri, veritabanı tabloları, yönetim ekranları, dağıtım otomasyonu, sürüm etiketleri veya sürüm artışları eklemez.

Amaç

WebBlocks eklenti mimarisi yalnızca CMS'e özgü değil, ekosistem genelinde olmalıdır. WebBlocks CMS ilk eklenti barındırıcısıdır; çünkü hâlihazırda eklenti sistemi temellerine, kayıt defteri destekli tanımlara, manuel ZIP yükleme/kurulumuna, varsayılan olarak devre dışı kurulu eklentilere, uyumluluk denetimlerine ve devre dışı ya da uyumsuz durumlarda etkisiz davranışa sahiptir. Aynı sözleşme, net sahiplik ve güvenli yaşam döngüsü kurallarına sahip paket öncelikli uzantılara ihtiyaç duyduklarında diğer WebBlocks ürünleri tarafından da yeniden kullanılabilir olmalıdır.

Sözleşmeyi yalnızca CMS etrafında tasarlamak; eklenti kimliğini, paketlemeyi, uyumluluğu, katalog meta verilerini ve güvenlik kurallarını daha sonra paylaşmayı zorlaştırırdı. Hedef yönelim, her ürünün kendi genişletme noktaları aracılığıyla barındırabileceği; kimlik, paket incelemesi, uyumluluk, etkinleştirme, güncellemeler ve katalog keşfi için ortak bir modeli koruyan paylaşılan bir WebBlocks eklenti sözleşmesidir.

Ürün Kapsamı

Olası eklenti barındırıcıları şunları içerir:

  • WebBlocks CMS
  • QuizTem
  • Herne Panel
  • WebBlocks Publisher
  • gelecekteki WebBlocks ürünleri

Her barındırıcı ürün farklı genişletme noktaları sunabilir. WebBlocks CMS; CMS yönetim menülerini, eklenti rotalarını, izinleri, ayarları, komutları, migration'ları, blokları, varlıkları, sağlık denetimlerini, gösterge paneli bileşenlerini ve sistem kartlarını sunar. QuizTem, Herne Panel, WebBlocks Publisher ve gelecekteki ürünler, ürüne ait farklı kayıt defterleri ve ekranlar sunabilir.

Genişletme noktaları farklı olsa bile eklenti kimliği, paketleme, uyumluluk, yaşam döngüsü ve katalog meta verileri WebBlocks ekosistemi genelinde ortak kuralları izlemelidir. Bir eklenti tek bir barındırıcı ürünü veya birden çok barındırıcı ürünü destekleyebilir; ancak ürün uyumluluğu etkinleştirmeden önce her zaman açık ve incelenebilir olmalıdır.

Eklenti Kimlik Standardı

Her ekosistem eklentisinin tek bir kararlı tanıtıcısı (handle) olmalıdır:

  • kebab-case biçiminde
  • WebBlocks ekosistemi genelinde küresel olarak benzersiz
  • sürümler arasında kararlı
  • rotalar, izinler, ayarlar, komutlar, tablolar, varlıklar ve paket kimliği için varsayılan ön ek olarak kullanılır

Tanıtıcı ön ekli sahiplik, eklenti davranışını izlenebilir ve çakışmalara karşı güvenli tutar. Yönetim rotaları, genel rotalar, izin dizeleri, ayar ad alanları, komut adları, veritabanı tablo ön ekleri, varlık tanıtıcıları, paket adları, artefakt yolları ve katalog kayıtlarının tamamı sahibi olan eklenti tanıtıcısına kadar izlenebilir olmalıdır.

Ürün uyumluluğu açık olmalıdır. Bir eklenti yalnızca WebBlocks CMS'i, yalnızca QuizTem'i, yalnızca Herne Panel'i, yalnızca WebBlocks Publisher'ı veya desteklenen bir barındırıcı ürün kombinasyonunu destekleyebilir. Desteklenmeyen barındırıcı ürünler eklentiyi uyumsuz ve etkisiz olarak ele almalıdır.

Eklenti Paketi / Manifest Yönelimi

Ekosistem, kurulumdan önce ve etkinleştirmeden önce incelenebilen paylaşılan bir manifest kavramına doğru ilerlemelidir. Kesin uygulama API'si zamanla gelişebilir ve barındırıcı ürünler manifesti ürüne özgü kayıt defterlerine uyarlayabilir; ancak sahiplik ve uyumluluk etkinleştirmeden önce incelenebilir kalmalıdır.

Gelecekteki paylaşılan manifest meta verileri şunları içermelidir:

  • handle
  • label
  • vendor veya author
  • version
  • desteklenen barındırıcı ürünler
  • gereken barındırıcı ürün sürümleri
  • uygulanabilir olduğunda gereken PHP ve Laravel sürümleri
  • gerektiğinde barındırıcı ürün başına provider sınıfları
  • izinler
  • yönetim menüsü katkıları
  • rota bildirimleri
  • komutlar
  • migration'lar
  • bloklar veya blok paketleri
  • varlıklar
  • ayarlar
  • sağlık denetimleri
  • sürüm notları
  • sağlama toplamı ve imza meta verileri

Manifest, bir barındırıcının kodu etkinleştirmeden önce güvenlik sorularını yanıtlamasına olanak vermelidir: paket hangi ürünleri destekler, hangi ürün sürümleri gereklidir, hangi provider'lar başlatılabilir, hangi rotalar ve komutlar kaydedilir, hangi izinler oluşturulur, hangi tablolar ve ayar ad alanları sahiplenilir, hangi migration'lar açık kurulum için sunulabilir ve hangi artefaktlar doğrulanabilir.

Eklenti Kataloğu / Mağaza Yönelimi

plugins.webblocksui.com, önerilen gelecekteki katalog/mağaza yüzeyidir. Bu belge, alan adının var olduğunu, dağıtıldığını veya yayında olduğunu ima etmez.

Terimler birbirinden ayrı kalmalıdır:

  • Eklenti Kataloğu: keşif, meta veriler, uyumluluk, dokümantasyon, ekran görüntüleri, destek bağlantıları, sürüm meta verileri, güvenlik durumu ve indirme bağlantıları.
  • Eklenti Mağazası: güvenilir katalog meta verilerinden bir barındırıcı ürüne daha sonra eklenecek kurulum/güncelleme entegrasyonu.
  • Pazar Yeri: hesaplar, lisanslama, ücretli eklentiler, değerlendirmeler, onay iş akışları, yayıncı profilleri ve gelir iş akışları gibi gelecekteki ticari özellikler.

İlk kilometre taşı, tam bir ticari Pazar Yeri değil, bir Eklenti Kataloğu olmalıdır. Bir katalog; uzaktan kurulum, otomatik güncellemeler, ücretli lisanslama veya ticari onay iş akışları eklemeden meta veri sözleşmesini, uyumluluk matrisini, artefakt sağlama toplamlarını, dokümantasyon bağlantılarını ve güvenli manuel indirme yolunu oluşturabilir.

Önerilen katalog ürününe ilişkin ürün konumlandırması, MVP kapsamı, aday uygulama modelleri, genel web sitesi yüzeyleri, operatör kavramları ve API planlaması için bkz. Plugin Catalog Product Architecture.

Önerilen Aşamalar

  1. Aşama 1: Dokümantasyon ve meta veri sözleşmesi.
  2. Aşama 2: plugins.webblocksui.com için katalog sunucusu/veri modeli planlaması.
  3. Aşama 3: CMS yönetim panelinde Browse Plugin Catalog salt okunur arayüzü. /webadmin/plugins/catalog olarak uygulanır; WEBBLOCKS_PLUGIN_CATALOG_BASE_URL / webblocks-plugins.catalog.base_url kullanır ve varsayılan olarak https://plugins.webblocksui.com adresini kullanır.
  4. Aşama 4: Katalog meta verilerinden bağlantılanan manuel ZIP indirme/kurulum akışı.
  5. Aşama 5: Kurulumdan sonra yine varsayılan olarak devre dışı kalan denetimli Install from Catalog akışı.
  6. Aşama 6: Eklenti güncelleme denetimleri ve güncelleme kullanılabilirliği. Kurulu eklenti tanıtıcılarının eksiksiz artefakt meta verilerine sahip daha yeni uyumlu katalog sürümleri olduğunda, CMS System -> Plugins -> Registered Plugins için uygulanır.
  7. Aşama 7: Denetimli eklenti güncelleme uygulama akışı. Katalog sağlama toplamı doğrulamasını ve eklenti ZIP doğrulamasını yeniden kullanan, yaşam döngüsü durumunu koruyan ve migration'ları açık bırakan bir süper yönetici POST eylemi olarak uygulanır.
  8. Aşama 8: Pazar yeri/lisanslama/ticari özellikler.

Her aşama; varsayılan olarak devre dışı kurulumu, uyumluluk öncelikli davranışı ve açık kurulum veya migration eylemlerini korumalıdır. Uzak meta veriler kullanıcıların eklentileri keşfetmesine, değerlendirmesine, kurmasına veya açıkça güncellemesine yardımcı olabilir; ancak eklentileri sessizce etkinleştirmemeli, migration çalıştırmamalı, güncellemeleri uygulamamalı veya barındırıcı ürün uyumluluk kurallarını atlamamalıdır.

CMS katalog tarayıcısı, herkese açık WebBlocks CMS uyumlu katalog eklentilerini ve en son uyumlu sürüm meta verilerini listeler. CMS artık eksiksiz sağlama toplamı meta verilerine sahip güvenilir ZIP artefaktları için açık süper yönetici katalog kurulum/güncelleme eylemlerine sahiptir; ancak katalogda gezinmenin kendisi Composer paketleri kurmaz, eklentileri etkinleştirmez, migration çalıştırmaz, rota kaydetmez, komut kaydetmez, provider kaydetmez, izin kaydetmez veya uzak verilerden eklenti durumunu aktifleştirmez.

Güvenlik ve Emniyet Kuralları

Katalog/mağaza erişilemez durumları, kurulu eklenti yönetimini bozmamalıdır. Kurulu eklenti listeleme, etkinleştirme/devre dışı bırakma denetimleri, kurulum rehberliği, sağlık durumu ve kaldırma davranışı yerel durumdan çalışmaya devam etmelidir.

Uzak katalog verileri eklentileri otomatik olarak etkinleştirmemelidir. Uzak katalog verileri otomatik olarak migration çalıştırmamalıdır. Uzak katalog verileri güncellemeleri otomatik olarak uygulamamalıdır. Katalog destekli güncellemeler açık bir süper yönetici POST eylemi ve güvenilir artefakt meta verileri gerektirir. Gelecekteki bir mimari karar açıkça onaylamadıkça, otomatik ve rastgele Composer kurulumu kapsam dışıdır.

ZIP artefaktları kurulumdan önce doğrulanmalıdır. Doğrulama; yol geçişini (path traversal), gizli meta veri dosyalarını, kök dizinden kaçışı, beklenmedik genel çalıştırılabilir dosyaları, rota çakışmalarını, izin çakışmalarını, tablo ön eki çakışmalarını, barındırıcı ürün sınırı çakışmalarını, sembolik bağlantı kaçışlarını, yasak kurulum hedeflerini, hatalı biçimlendirilmiş manifestleri, uyumsuz barındırıcı ürünleri ve sağlama toplamı ya da gelecekteki imza uyuşmazlıklarını engellemelidir.

Uyumsuz, devre dışı, dosyaları eksik veya güvensiz eklentiler etkisiz kalmalıdır. Rota, komut, menü, izin, ayar rotası, migration, zamanlanmış iş, blok, varlık, bileşen, sağlık raporlayıcısı veya başka aktif çalışma zamanı davranışı kaydetmemelidirler.

Kaldırma, devre dışı öncelikli ve depolamaya ait kalır. Olağan kaldırma yalnızca depolamaya ait eklenti paketi dizinini ve yerel etkinlik durumu kayıtlarını silmelidir. Gelecekte açık onay ile bilinçli olarak tasarlanmış yıkıcı bir temizleme aracı olmadıkça, eklentiye ait veritabanı tablolarını silmemelidir.

Çekirdek görünüm geçersiz kılma varsayılan olarak yasak kalır. Eklenti genişletmesi, belgelenmiş kayıt defterlerini veya genişletme slotlarını kullanmalıdır. Eklentiler paket görünümlerini değiştirmemeli, ürün servislerine monkey patch uygulamamalı, gizli rota dosyaları eklememeli veya rastgele include yan etkilerine dayanmamalıdır.

Katalog Meta Veri Gereksinimleri

Eklenti Kataloğu kayıtları şunları içermelidir:

  • eklenti listeleme meta verileri: tanıtıcı, etiket, açıklama, satıcı/yazar, kategoriler, etiketler, güncel kararlı sürüm, dokümantasyon URL'si, ekran görüntüleri, destek URL'si ve varsa kaynak veya hata takip sistemi URL'si
  • sürüm meta verileri: sürüm, yayın tarihi, sürüm notları, artefakt URL'leri, sağlama toplamları, gelecekteki imzalar, minimum barındırıcı gereksinimleri, yükseltme notları ve kullanımdan kaldırılma durumu
  • uyumluluk meta verileri: desteklenen barındırıcı ürünler, desteklenen barındırıcı ürün sürüm kısıtları, uygulanabilir olduğunda gereken PHP/Laravel sürümleri, desteklenen platform servisleri ve migration/kurulum gereksinimleri
  • güvenlik danışma ve kullanımdan kaldırma meta verileri: etkilenen sürümler, yamalanmış sürümler, önem derecesi, danışma bağlantıları, güvensiz işaretler, kullanımdan kaldırılmış sürümler, ikame rehberliği ve engellenmiş kurulum/güncelleme durumu
  • artefakt doğrulama meta verileri: sağlama toplamı algoritması, sağlama toplamı değeri, artefakt boyutu, gelecekteki imza verileri, imzalama anahtarı kimliği ve bütünlük durumu
  • dokümantasyon, ekran görüntüsü ve destek URL'leri: genel dokümanlar, değişiklik günlüğü, kurulum kılavuzu, ekran görüntüleri, destek iletişimi, hata takip sistemi ve satıcı profili
  • barındırıcı ürün uyumluluk matrisi: desteklenen her barındırıcı ürün için bir satır; ürün tanıtıcısı, ürün etiketi, uyumlu sürüm kısıtları, gerektiğinde provider sınıfı meta verileri, kullanılan genişletme noktaları, kurulum gereksinimleri ve bilinen sınırlamalar dahil

Katalog meta verileri indirmeden önce, kurulumdan önce, etkinleştirmeden önce, kurulum/migration'dan önce ve güncelleme uygulanmadan önce yararlı olmalıdır.

WebBlocks Publisher ile İlişki

Gelecekteki Eklenti Kataloğu; sürüm meta verileri, artefakt sağlama toplamları, manifestler ve barındırılan dağıtım kavramları dahil olmak üzere mevcut WebBlocks Publisher/güncelleme meta veri akışındaki fikirleri yeniden kullanabilir. Eklenti kataloğu yayımlama yine ayrı bir ürün yeteneği olarak belgelenmelidir.

Bu belge, mevcut WebBlocks Publisher kodu içinde bir uygulama varsaymaz. plugins.webblocksui.com daha sonra WebBlocks Publisher, özel bir katalog uygulaması veya katalog eklentili bir WebBlocks CMS sitesi tarafından çalıştırılabilir. Uygulama tercihi, katalog meta veri sözleşmesi ve ürün sınırı netleştikten sonra yapılmalıdır.

Mevcut CMS Eklenti Sistemi ile İlişki

Mevcut WebBlocks CMS eklenti barındırıcı mimarisi için bkz. Plugin System.

CMS manuel ZIP yükleme/kurulumu, şu anda desteklenen eklenti kurulum yöntemi olmaya devam etmektedir. Yüklenen eklentiler depolamaya ait yollar altına kurulur, varsayılan olarak devre dışı kalır ve açık etkinleştirme ile kurulum/migration eylemleri gerektirir. Devre dışı ve uyumsuz eklentiler etkisiz kalır.

Katalog/mağaza çalışmaları, mevcut CMS eklenti yaşam döngüsünün yerini almak yerine onun üzerine inşa edilmelidir. Gelecekteki katalog keşfi, manuel indirme bağlantıları, katalogdan kurulum akışları, güncelleme denetimleri ve denetimli güncelleme uygulama eylemleri; aynı tanıtıcı, uyumluluk, varsayılan olarak devre dışı, kurulum gerektiren, şema hazırlığı, izin, rota sahipliği ve kaldırma güvenliği kurallarını yeniden kullanmalıdır.

İlk Dokümantasyon Aşaması için Hedef Dışı Konular

Bu aşama şunları içermez:

  • çalışma zamanı uygulaması
  • otomatik uzaktan kurulum
  • otomatik eklenti güncelleme uygulama
  • ücretli pazar yeri davranışı
  • lisans sunucusu davranışı
  • üçüncü taraf onay iş akışı
  • üretim dağıtım otomasyonu
  • canlı site doğrulaması