14 puan yazan GN⁺ 2025-03-30 | 1 yorum | WhatsApp'ta paylaş
  • Python ile ürünleri hızlıca geliştirmek için tasarlanmış bir web framework'ü (Django'dan fork edildi)
  • Tek bir komutla yerel geliştirmeye başlanabilir; dashboard ve feature flag gibi araçlarla production ortamına geçilebilir
    • Starter kit'i klonlayarak hızlıca başlanabilir
  • Çekirdek plain paketi ve isteğe bağlı olarak kurulabilen resmi genişletme paketlerinden oluşur

plain paketinin özellikleri

  • URL pattern'lerini Python view fonksiyonlarına bağlar
  • HTTP isteklerini ve yanıtlarını işler
  • Jinja template'leri kullanarak HTML render eder
  • Kullanıcı girdilerini işlemek için Form sağlar
  • Komut satırı arayüzü (CLI) sunar
  • CSS, JS, görseller gibi statik varlıkları (assets) servis edebilir
  • Middleware aracılığıyla uygulama işlevlerini genişletir
  • Resmi ve üçüncü taraf paketleri kolayca entegre edebilir
  • Uygulama çalışmadan önce ön kontrol işlevi (preflight check system) sağlar

Birinci taraf paketlerle sunulan genişletme özellikleri

  • plain.models: Verileri Postgres, MySQL ve SQLite'a kaydedebilen bir ORM sağlar
  • plain.cache: Mevcut veritabanıyla birlikte çalışan bir cache çözümü
  • plain.email: Uygulama genelinde e-posta yapılandırması ve gönderimi sağlar
  • plain.sessions: Veritabanı tabanlı session okuma ve yazma imkanı sunar
  • plain.worker: Mevcut veritabanını destekleyen bir arka plan iş çözümü
  • plain.api: Class-based view mimarisiyle JSON API oluşturmayı sağlar

Kimlik doğrulama ile ilgili

  • plain.auth: Kullanıcı ekleme, istek doğrulama ve view kısıtlama için temel sağlar
  • plain.oauth: Modern sosyal giriş ve API erişimini destekleyen esnek bir OAuth çözümü
  • plain.passwords: Geleneksel parola tabanlı girişi destekler
  • plain.loginlink: Parolasız giriş için tek kullanımlık giriş bağlantıları sağlar
  • plain.passkeys: Parolasız giriş özelliği yakında sunulacak

Yönetici

  • plain.admin: Tamamen özelleştirilebilir bir yönetici dashboard'u sağlar
  • plain.flags: Veritabanı tabanlı feature flag'lerle kullanıcı bazlı içerik kontrolü sağlar
  • plain.support: Üçüncü taraf servisler olmadan müşteri desteği sunar
  • plain.redirection: 404 izlemesi ve veritabanından yönlendirme yönetimi sağlar
  • plain.pageviews: Kullanıcıların ne gördüğünü izleyerek daha iyi destek sunar

Geliştirme

  • plain.dev: Tek bir komutla yerel geliştirme ortamını başlatır
  • plain.pytest: Popüler Python test kütüphanesiyle test yazmayı ve çalıştırmayı sağlar
  • plain.code: Varsayılan ayarlarla Python kodu formatlama ve linting sağlar
  • plain.tunnel: Webhook entegrasyonu için yerel uygulamayı internete açabilir

Frontend

  • plain.tailwind: Popüler CSS framework'ü ile birinci sınıf entegrasyon sunar
  • plain.htmx: Mevcut araçlarla modern kullanıcı deneyimleri oluşturmayı sağlar
  • plain.elements: Uygulama template'lerinde yeniden kullanılabilir bileşenler için yeni bir paradigma sunar
  • plain.pages: HTML ve Markdown kullanan dosya tabanlı routing sağlar
  • plain.esbuild: JavaScript derlemesi için sadeleştirilmiş bir build süreci sunar
  • plain.vendor: CDN'e bağımlı olmadan JavaScript ve CSS varlıklarını indirip self-host etmeyi sağlar

1 yorum

 
GN⁺ 2025-03-30
Hacker News görüşleri
  • Birçok kişi, Django Rest Framework'ün hata takip sisteminin özel hâle getirildiğini ve yeni bakımcılar aradığını bilmiyor olabilir

    • Django harika, ancak Angular'ın yaşadığı rönesansa benzer bir değişime ihtiyaç duyuyor
    • Katkı yapmak istiyorlar ama çabaların çoğu komitelerde gecikiyor
    • Fork çözüm olmayabilir, ama bir şeyler yapılması gerekiyor
    • Bağış gerekiyorsa bağış kabul etmek de bir yöntem
    • Django geliştirici topluluğu küçük ve birbirine yakın
    • Katkılara açık yaklaşan ve uzun vadeli ilişkileri önemseyen bir topluluğa ihtiyaç var
  • Django'nun fork'u konusunda karışık duygular var

    • Miras projelerin dışında deney yapmak değerli, ancak fork büyük bir ilan anlamına geliyor
    • Django'nun kolektif emeğinin görmezden gelindiği hissediliyor
    • Ticari ya da dar bir yöne kayma ihtimali endişe yaratıyor
    • Django'ya duyulan sevgi giderek artıyor
  • Django'nun gücü ORM'i ve ekosistemi/deyimleri

    • Bir fork ile uyumluluğu bozmanın neden gerekli olduğunu anlamak zor
    • Daha iyi yönetici özellikleri görmek isterdim, ancak bu Django proje şablonlarıyla çözülebilir
  • Django'nun bazı zayıf yönleri var

    • Worker'lar ve REST API birinci sınıf vatandaş değil
    • Django kimlik doğrulaması temel düzeyde ama kullanışlı
    • Django'daki zorluklar karmaşıklığı artırabiliyor
  • Django'ya yönelik olumsuz duygular şaşırtıcı

    • Laravel ve Rails'e kıyasla Django geride kalmış durumda
    • Ekosistem parçalı ve birçok paket eski
    • Django'nun statik dosya pipeline'ı varsayılan olarak dahil değil
    • Kullanıcı modeliyle ilgili sorunlar ve şablonların sınırlamaları var
    • Web uygulamaları geliştirmek için Rails'e geçmeye başlamışlar
  • Django'dan Supabase/Firebase'e geçilmiş

    • Çok sayıda eklenti var ve self-hosting kolay
    • Django eklentilerinin daha iyi olması gerektiği düşünülüyor
  • Ayarların sınıfları referans veren string'lerden oluşmasından hoşlanılmıyor

    • Sınıf ya da nesne referanslarında kolayca gezinilebilmesi isteniyor
    • Bu sonradan eklentilerle çözülebiliyor, ama LSP bunu zaten ücretsiz sunuyor
  • Plain'in belgelerine göz atılmış

    • Tüm özellikler zaten Django'da var ya da iyi desteklenen paketlerde mevcut
    • Django'nun kullanımdan kaldırma politikası, projelerin uzun süre yaşatılabilmesini sağlıyor
    • Komiteler projenin ticarileşmesini engelliyor ve kullanıcıların çoğu için en iyi kararları alıyor
    • Django gazeteler için yapılmıştı ama genel amaçlı bir framework
  • Plain'in başarılı olup olmayacağı bilinmiyor, ancak fork'un nedenini anlamak mümkün

    • Django liderliği Django'yu ileri taşıyamıyor