1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2026-10-18 00:50:07 +00:00
webvirtcloud/DEPENDENCY_UPGRADE_PLAN.md

85 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WebVirtCloud - Bağımlılık ve Kütüphane Güncelleme Planı
Bu doküman, WebVirtCloud projesinde yer alan eski, desteği kesilmiş veya yeni Python/Django sürümleriyle uyumsuzluk riski taşıyan kütüphanelerin tespitini ve adım adım güncelleme yol haritasını içermektedir.
---
## 1. Tespit Edilen Kütüphaneler ve Durum Analizi
### 1.1. Kritik ve Acil Müdahale Gerektirenler (Python 3.12+ Uyumsuzlukları)
| Kütüphane / Dosya | Mevcut Durum | Risk Seviyesi | Tespit ve Sorun |
|---|---|---|---|
| **`vrtManager/rwlock.py`** | `currentThread()` kullanımı | 🔴 **Kritik (Bozucu)** | Python 3.10'da kullanımdan kaldırılmış (deprecated), **Python 3.12'de tamamen silinmiştir**. Python 3.12 üzerinde `ImportError: cannot import name 'currentThread' from 'threading'` hatası verir. `threading.current_thread()` ile değiştirilmelidir. |
| **`rwlock==0.0.7`** (`conf/requirements.txt`) | 2014 sürümü (Terk edilmiş) | 🟡 **Gereksiz Bağımlılık** | Projede kod zaten `vrtManager/rwlock.py` üzerinden yerel (vendored) çalışmaktadır. `requirements.txt` içerisindeki bu harici paket gereksizdir ve temizlenebilir. |
| **`console/novncd` & `socketiod` (`optparse`)** | `optparse` kullanımı | 🟠 **Orta (Kullanımdan Kaldırıldı)** | `optparse` Python 3.2'den beri deprecated olup yerini standart `argparse` kütüphanesine bırakmıştır. Modern Python standartlarına göre refactor edilmelidir. |
| **`eventlet==0.40.1`** | `socketiod` içinde kullanılır | 🟠 **Yüksek Risk** | Eventlet, Python 3.12+ C-API ve greenlet değişiklikleriyle uyumluluk sorunları yaşamaktadır. Gelecekte asyncio/ASGI mimarisine geçiş planlanmalıdır. |
---
### 1.2. Django & API Ekosistemi
| Kütüphane | Mevcut Sürüm | Hedef Sürüm | Açıklama & Strateji |
|---|---|---|---|
| **`Django`** | `4.2.23` (LTS) | `5.1.x` / `5.2` (LTS) | Django 4.2 LTS desteği Nisan 2026'da sona ermektedir. Django 5.x LTS'e yükseltme yapılarak performans kazanımları (asenkron ORM geliştirmeleri, yeni form alanları) elde edilmelidir. |
| **`django-login-required-middleware`** | `0.9.0` (2017) | **Kaldırılacak** (Native) | Paket 2017'den beri güncellenmemiştir. **Django 5.1 ile birlikte Django artık yerleşik `django.contrib.auth.middleware.LoginRequiredMiddleware` sunmaktadır.** Harici paket tamamen devreden çıkarılabilir. |
| **`drf-yasg`** | `1.21.10` | `drf-spectacular` | `drf-yasg` fiilen terk edilmiştir, yalnızca eski Swagger 2.0 standardını destekler ve Django 5+ ile uyumsuzluk uyarıları verir. DRF'in resmi olarak önerdiği modern OpenAPI 3.0 standardı olan **`drf-spectacular`**'a geçilmelidir. |
| **`IPy.py`** (`vrtManager/IPy.py`) | Vendored 1.01 (2011) | Python Standard `ipaddress` | Projede yer alan 1600 satırlık harici `IPy.py` dosyası yerine, Python 3.3+'dan beri yerleşik olan standart `ipaddress` modülü kullanılmalıdır. |
---
### 1.3. Ön Yüz (Frontend) ve VNC İstemcisi
| Kütüphane | Mevcut Sürüm | Güncel Sürüm | Yenilikler & Faydalar |
|---|---|---|---|
| **`jQuery`** | `3.6.1` (2022) | `3.7.1` | Güvenlik yamaları, seçici (selector) optimizasyonları ve hata düzeltmeleri. |
| **`Bootstrap`** | `5.2.2` (2022) | `5.3.3` | Yerel Karanlık Mod (Dark Mode) desteği, CSS değişkenleri mimarisi, erişilebilirlik ve form iyileştirmeleri. |
| **`noVNC`** (`static/js/novnc`) | 2020 Sürümü | `1.5.0` | Çok daha kararlı WebSocket yeniden bağlanma (auto-reconnect), dokunmatik ekran desteği, güvenlik düzeltmeleri ve modern ES modül yapısı. |
---
### 1.4. Altyapı ve Konteyner
| Bileşen | Mevcut Durum | Önerilen Durum | Açıklama |
|---|---|---|---|
| **`Dockerfile` Base Image** | `phusion/baseimage:jammy-1.0.1` (Ubuntu 22.04) | `phusion/baseimage:noble-1.0.0` (Ubuntu 24.04 LTS) | Ubuntu 24.04 LTS tabanına geçilerek daha yeni sistem kütüphaneleri (`libvirt`, `openssl`, `gcc`) temin edilebilir. |
---
## 2. Aşamalı Güncelleme Yol Haritası (Migration Roadmap)
### Aşama 1: Hızlı Kazanımlar ve Python 3.12+ Uyumluluğu (Hemen Yapılabilir)
1. **`vrtManager/rwlock.py` Düzeltmesi**:
- `currentThread()` çağrılarını `current_thread()` ile değiştirerek Python 3.12'deki kritik çökme riskini ortadan kaldırmak.
2. **`requirements.txt` Temizliği**:
- Kullanılmayan `rwlock==0.0.7` paketini `conf/requirements.txt` dosyasından silmek.
3. **Frontend Kütüphanelerinin Güncellenmesi**:
- `jQuery` 3.6.1 -> 3.7.1
- `Bootstrap` 5.2.2 -> 5.3.3
---
### Aşama 2: API ve Dokümantasyon Modernizasyonu (Orta Vadeli)
1. **Swagger / OpenAPI Göçü**:
- `drf-yasg` yerine `drf-spectacular` kurulumu.
- `webvirtcloud/urls.py` ve `urls-api.py` rotalarının OpenAPI 3.0 şemasına güncellenmesi.
2. **CLI Argümanları Refactor**:
- `console/novncd` ve `console/socketiod` içerisindeki `optparse` yerine standart `argparse` modülünün entegre edilmesi.
---
### Aşama 3: Django 5.x LTS Geçişi (Büyük Sürüm Güncellemesi)
1. **LoginRequiredMiddleware Değişimi**:
- `django-login-required-middleware` paketinin kaldırılması.
- Django 5.1+'ın yerleşik `django.contrib.auth.middleware.LoginRequiredMiddleware` sınıfına geçilmesi.
2. **Django 4.2 -> 5.1/5.2 Yükseltmesi**:
- `conf/requirements.txt` içinde Django sürümünün artırılması.
- `python3 manage.py check` ve test suitinin (`pytest` / `python manage.py test`) koşturularak deprecation uyarılarının temizlenmesi.
---
### Aşama 4: noVNC ve Ağ Modülleri Optimizasyonu
1. **noVNC 1.5.0 Entegrasyonu**:
- `static/js/novnc/` klasörünün noVNC 1.5.0 resmi sürümüyle yenilenmesi.
2. **`vrtManager/IPy.py` Refactor**:
- Harici IPy kütüphanesi yerine standart `ipaddress` kütüphanesine geçiş.