INARY 2.0 Yol Haritası ve Yapılacaklar
======================================

- Yapacağım
? Nasıl yapılacağını bulamadım
/ Üzerinde Çalışıyorum
+ Yaptım

1. Pre-Alpha
  / Daha temiz logging stratejisi:
    / Her çıktının log dosyasına yazılması işleri biraz karıştırıyor. log dosyası şişiyor.
    bu iş için bir çare bulmak lazım. Adım adım neler yapacağım:
      + ctx.ui.debug fonksiyonu gerekli olmadıkça kullanılmamalı.
      + ctx.ui.info önemli mesajlar ve detaylar için (verbose parametresi ile kullanılmalı)
      / Bilgilendirme için kullanılan mesajlar ayıklanıp logdan ayrılmalı.
    / Fix ctx.ui functions:
      / ctx.ui içindeki fonksiyonlar düzenlenmeli. Bazıları çok canavarca kullanılmış.
        + ctx.ui.notify düzenlemesi
        + ctx.ui.choose düzenlemesi
  + Paket kurulması öncesi tam bilgilendirme.
    + İndirilecek boyutu yazdır.
    + İndirilmiş boyutu yazdır.
    + Eğer paket kurulacak ise toplam install.tar.xz boyutunu yazdır.
    + Eğer update yapılacak ise değişecek boyutu yazdır.
    + Silecek paketin ne kadar yer açacağını yazdır.
  \ Biraz daha anlaşılır paket yapılandırmaları.
    + SCOM alternatifi bir yapılandırma yöneticisi oluştur
    + triggerler ekle (ca-certificates glib-shemes update-icon-themes)
    ? tui yapılandırma desteği
  - TestSuit:
    - Hangi testler eklenecek ise ona göre doldurulacak.

2. Alpha
  - Localization-Çeviriler:
    / de
    + en
    / es
    / fr
    / hr
    / hu
    / it
    / nl
    / pt
    / pt_BR
    / ru
    / tr
    / uk
    - az

  - Inary Fetcher:
      - Uzak depodan paket kaynak dosyası çekme
           - git
           - subversion
      - ftp sunucusundan kaynak indirme.

  - Inary-Devtools:
      - Depo paketlerinin geçmişini resetleyecek bir araç.
      - Depo elemanlarının çevirilerini kolaylaştıracak bir araç.
      + pkgconfig ldd ve .so uzantılı linkleri kullanarak bir paketin
        kırık bağımlılığını raporlayacak bir araç.

  - Inary-SIGN:
      + GPG bazlı index ve paket imzası kontrol mekanizması.
        + GPG signed repository.
        \ GPG signing script.

  + Full System Emerge:
      + Kaynak repolarından bağımlılık getirirek paket build etmek.
      + Derlemeli upgrade mekanizması.
      + Kaynak repolarından devam ederse derlenmiş paketlerin sisteme alınmasında
        katı sınırlama yapmak.

  + History için düzenlemeler:
      + hs komutu sonrası kırılmaların önlenmesi.
      + hs komutunun tüm terminaller için uygun hale getirilmesi.

  - Database methodları:
      \ lazydb içindeki biraz ilkel ve yavaş olan db yönetim mantığı düzenlenmeli.
      database pickle ile oluşturulmak yerine adam akıllı bir database yönetimi ile
      (sqlite) veya bir yığın depolama ile (shelve) sağlanması hız katabilir.

  \ Yeni Komutlar.
      - downgrade: Paket sürümünü güncellemeden önceki haline getirmek. (nasıl yapılabilir üzerinde uğraşıyorum)
      + shell: inary paket yöneticisi için kabuk ortamı
      + reconfigure: seçilen paketi yeniden yapılandırma. (ncurses arayüzü ile)
      + configure-manager: değişen config dosyalarının takibi için


3. Beta
  - Repo yönetim iyileştirmeleri:
      - Bazı repoların önceliği belirlenmeli. Öncelikli olan repolardaki paket
       önceliksiz repodaki aynı addaki paketten üstte olmalı.

  - Index iyileştirmeleri.

  / Inary config manager. [ inary config ] komutu:
      \ değişmiş config dosyları kırılmış dosya olarak görülmemeli.
      + yeni paket kurulumunda mevcut config kurulup yeni config *.config.new
      şeklinde yeniden adlandırılmalı
      + değişen config dosyalarının dökümü
      + mevcut config dosyalarından yeni ile eskiyi emergedeki gibi değiştirebilme
      imkanı.

  - Inary licence manager:
      - Kapalı kaynak lisanslı olan paketleri yüklemeden önce sorma.
      - Paket kurulumu sırasında lisans kabul beyanı.
      - Bazı lisans çeşitlerine karşı paket filtreleme.

  - Inary Package manager Curses ui.
      - Neden yapmayayım ki.

4. Release
  - Removing deprecated modules:
      - autoxml için formatter kütüphanesi.
  + Code optimizations:
      + Optimize imports.
      + Optimize definitions.
      + Optimize runtime variables.
      + Optimize class and superclasses.

5. Post Release
  - Inary Archives
      - çoklu doğrulama imkani
           + sha1sum
           - sha256sum
           - md5sum

6. Long Term
    ... Zamanla eklenecek ...
