netgescon-master/docs/02-architettura-laravel/98-licenze-opensource/ANALISI-LICENZE.md
Pikappa2 480e7eafbd 🎯 NETGESCON - Setup iniziale repository completo
📋 Commit iniziale con:
-  Documentazione unificata in docs/
-  Codice Laravel in netgescon-laravel/
-  Script automazione in scripts/
-  Configurazione sync rsync
-  Struttura organizzata e pulita

🔄 Versione: 2025.07.19-1644
🎯 Sistema pronto per Git distribuito
2025-07-19 16:44:47 +02:00

12 KiB

NETGESCON - GESTIONE LICENZE OPEN SOURCE

📋 OVERVIEW

Analisi e definizione della strategia di licenza per NetGesCon: software gratuito ma con protezioni anti-commercializzazione non autorizzata. Studio del modello dual-license con versione Open Source e versione PRO.

📜 MODELLO DI RIFERIMENTO

Esempio: "Gestionale Open" - Licenza Ibrida

Gestionale Open è l'implementazione proprietaria del software Open Source omonimo,
copyright di Alessandro Carrara, rilasciato con Licenza BSD semplificata / FreeBSD.

SORGENTI: Disponibili liberamente, senza vincoli di nessun tipo
ESEGUIBILI: Disponibili gratuitamente per uso personale
DATABASE: Prodotto proprietario, autorizzazione richiesta per distribuzione
VERSIONE PRO: Contratto commerciale con servizi aggiuntivi

🎯 OBIETTIVI NETGESCON

Cosa VOGLIAMO

  • Software gratuito per amministratori di condominio
  • Codice sorgente aperto per trasparenza e contributi
  • Modifiche e miglioramenti dalla community
  • Installazione libera su server propri
  • Studio e apprendimento del codice

Cosa NON VOGLIAMO

  • Rivendita commerciale non autorizzata
  • SaaS commerciale basato su NetGesCon
  • White-label commerciale senza autorizzazione
  • Supporto gratuito illimitato
  • Garanzie su funzionamento

📄 STRATEGIA DUAL-LICENSE

1. NetGesCon COMMUNITY (Open Source)

Licenza: Custom Open Source basata su BSD/MIT

# LICENZA NETGESCON COMMUNITY EDITION

Copyright (c) 2025 Michele [Cognome] e Contributors

## PERMESSI CONCESSI
- ✅ Uso privato e commerciale del software
- ✅ Modifica del codice sorgente  
- ✅ Distribuzione del software modificato
- ✅ Creazione di opere derivate
- ✅ Uso in progetti open source

## CONDIZIONI OBBLIGATORIE
- 📋 Mantenimento di questo copyright notice
- 📋 Inclusione di questa licenza in tutte le copie
- 📋 Attribuzione agli autori originali
- 📋 Disclosure del codice sorgente se distribuito

## LIMITAZIONI COMMERCIALI
- ❌ VIETATA la rivendita come SaaS senza autorizzazione scritta
- ❌ VIETATO l'uso del nome "NetGesCon" in servizi commerciali
- ❌ VIETATA la rimozione dei credits e copyright
- ❌ VIETATA la distribuzione con database proprietario incluso

## ECCEZIONI PER USO COMMERCIALE
Per usi commerciali (SaaS, hosting, rivendita) è richiesta:
- Autorizzazione scritta esplicita da Michele [Cognome]
- Revenue sharing o licensing fee da concordare
- Uso del marchio "Powered by NetGesCon"

## DISCLAIMER
IL SOFTWARE È FORNITO "COSÌ COM'È", SENZA GARANZIE DI ALCUN TIPO.
GLI AUTORI NON SONO RESPONSABILI PER DANNI DERIVANTI DALL'USO.

2. NetGesCon PRO (Commerciale)

Licenza: Proprietaria con contratto di servizio

# NETGESCON PRO - CONTRATTO DI LICENZA COMMERCIALE

## SERVIZI INCLUSI
- 🔧 Supporto tecnico prioritario (email, telefono, teleassistenza)
- 🔄 Aggiornamenti automatici versioni PRO
- 💾 Backup automatico cloud
- 📊 Reportistica avanzata e analytics
- 🤖 Funzionalità AI e automazioni
- 📱 App mobile native iOS/Android
- 🔐 Sicurezza avanzata e conformità GDPR
- 📞 Consulenza normativa condominiale

## COSTI ANNUALI (Esempi)
- BASIC PRO: €99/anno (1-3 stabili)
- STANDARD PRO: €199/anno (4-10 stabili)  
- ENTERPRISE PRO: €399/anno (illimitati + white-label)

## GARANZIE E SLA
- 99.5% uptime garantito
- Risposta support < 24h
- Backup giornalieri certificati
- Conformità normative aggiornate

🏗️ STRUTTURA REPOSITORY

Repository Separati

netgescon/
├── netgescon-community/          # Open Source
│   ├── LICENSE                   # Licenza custom OS
│   ├── README.md                 # Installazione community
│   ├── app/                      # Codice base
│   ├── resources/                # UI base
│   └── docs/                     # Documentazione
│
├── netgescon-pro/                # Privato
│   ├── LICENSE-COMMERCIAL        # Licenza commerciale
│   ├── app/Pro/                  # Funzionalità PRO
│   ├── resources/pro/            # UI avanzate
│   └── services/                 # Servizi cloud
│
└── netgescon-database/           # Privato
    ├── LICENSE-PROPRIETARY       # Database proprietario
    ├── migrations/pro/           # Migrazioni PRO
    ├── seeds/premium/            # Dati premium
    └── normative/                # Database normative

Gestione Codice Ibrido

// In Community Edition
if (LicenseManager::isPro()) {
    // Carica funzionalità PRO se disponibili
    ProFeatures::load();
} else {
    // Mostra upgrade notice
    View::share('showProUpgrade', true);
}

// Feature gating example
class ReportController extends Controller 
{
    public function advancedAnalytics() 
    {
        if (!LicenseManager::hasFeature('advanced_analytics')) {
            return redirect()->route('upgrade.pro')
                           ->with('feature', 'Analytics Avanzate disponibili solo in PRO');
        }
        
        return view('reports.advanced');
    }
}

🔐 PROTEZIONE ANTI-PIRATERIA

1. License Key System (PRO)

class LicenseValidator 
{
    public function validatePRO($licenseKey, $domain) 
    {
        // 1. Verifica formato chiave
        if (!$this->isValidKeyFormat($licenseKey)) {
            return false;
        }
        
        // 2. Call home validation
        $response = Http::post('https://license.netgescon.it/validate', [
            'key' => $licenseKey,
            'domain' => $domain,
            'version' => config('app.version'),
            'fingerprint' => $this->getServerFingerprint()
        ]);
        
        // 3. Cache risultato per 24h
        Cache::put("license_valid_{$domain}", $response->json(), 86400);
        
        return $response->successful() && $response->json('valid');
    }
    
    private function getServerFingerprint() 
    {
        // Unique server identifier
        return hash('sha256', 
            php_uname() . 
            $_SERVER['SERVER_ADDR'] . 
            $_SERVER['HTTP_HOST']
        );
    }
}

2. Code Obfuscation (PRO Features)

# Build process per versione PRO
composer require --dev "jakub-onderka/php-obfuscator"

# Offusca solo features PRO
php-obfuscator app/Pro/ --output app/Pro/obfuscated/

3. Database Watermarking

-- Ogni installazione PRO ha watermark univoco
CREATE TABLE license_info (
    installation_id VARCHAR(64) PRIMARY KEY,
    license_key VARCHAR(128),
    licensed_to VARCHAR(255),
    installation_date TIMESTAMP,
    last_validation TIMESTAMP,
    server_fingerprint VARCHAR(64)
);

-- Watermark nascosto in tabelle sistema
INSERT INTO system_settings VALUES ('_wm', 'encoded_license_info_hidden');

📊 COMPLIANCE E TRACCIAMENTO

Usage Analytics (Anonimizzate)

class UsageTracker 
{
    public function trackFeatureUsage($feature, $anonymizedData = []) 
    {
        // Solo se consenso utente
        if (!setting('analytics_consent', false)) {
            return;
        }
        
        Http::post('https://analytics.netgescon.it/track', [
            'installation_id' => config('app.installation_id'),
            'version' => config('app.version'),
            'feature' => $feature,
            'timestamp' => now(),
            'data' => $anonymizedData, // NO dati sensibili
            'license_type' => LicenseManager::getType() // community|pro
        ]);
    }
}

// Usage examples
UsageTracker::track('stabili.created', ['count' => 1]);
UsageTracker::track('reports.generated', ['type' => 'bilancio']);
UsageTracker::track('users.login', ['role' => 'admin']);

Violation Detection

class LicenseViolationDetector 
{
    public function checkForViolations() 
    {
        $violations = [];
        
        // 1. Check commercial usage patterns
        if ($this->detectCommercialUsage()) {
            $violations[] = 'commercial_usage_detected';
        }
        
        // 2. Check code modifications
        if ($this->detectUnauthorizedModifications()) {
            $violations[] = 'code_tampering_detected';
        }
        
        // 3. Check license file integrity
        if ($this->detectLicenseRemoval()) {
            $violations[] = 'license_removal_detected';
        }
        
        if (!empty($violations)) {
            $this->reportViolations($violations);
        }
    }
    
    private function detectCommercialUsage() 
    {
        // Euristics per rilevare uso commerciale:
        // - Troppi stabili per singolo admin
        // - Pattern di accesso da multiple IPs
        // - Hosting provider patterns
        // - Domain commerciali
        
        $stabiliCount = Stabile::count();
        $adminCount = User::where('role', 'admin')->count();
        
        return ($stabiliCount / $adminCount) > 20; // Soglia sospetta
    }
}

📋 DOCUMENTAZIONE LEGALE

1. Terms of Service

# TERMINI DI SERVIZIO NETGESCON

## 1. ACCETTAZIONE TERMINI
Utilizzando NetGesCon accetti integralmente questi termini.

## 2. LICENZA D'USO
- Software fornito sotto licenza Open Source personalizzata
- Uso commerciale limitato come da licenza
- Richiesta autorizzazione per servizi commerciali

## 3. PRIVACY E DATI
- I tuoi dati rimangono sui tuoi server
- Analytics anonimizzate solo con consenso
- Conformità GDPR garantita

## 4. LIMITAZIONI DI RESPONSABILITÀ
- Software fornito "as-is"
- Nessuna garanzia di funzionamento
- Responsabilità limitata a quanto pagato

## 5. AGGIORNAMENTI E MODIFICHE
- Aggiornamenti automatici per versione PRO
- Possibili modifiche ai termini con preavviso
- Continuazione uso implica accettazione

2. Privacy Policy

# INFORMATIVA PRIVACY NETGESCON

## DATI RACCOLTI
### Community Edition
- Nessun dato personale raccolto
- Analytics anonimizzate solo con consenso
- Log tecnici locali per debug

### PRO Edition  
- Email per supporto e fatturazione
- Dati di licenza per validazione
- Backup automatici se autorizzati

## BASE GIURIDICA
- Consenso esplicito per analytics
- Interesse legittimo per supporto tecnico
- Obbligo contrattuale per servizi PRO

## DIRITTI UTENTE
- Accesso ai propri dati
- Rettifica dati incorretti
- Cancellazione account PRO
- Portabilità dati in formato standard

🚀 IMPLEMENTATION ROADMAP

Fase 1 - Setup Legale (Sprint 1)

  • Definizione licenza custom finale
  • Creazione Terms of Service e Privacy Policy
  • Setup trademark "NetGesCon"
  • Struttura repository community vs pro

Fase 2 - Sistema Licenze (Sprint 2)

  • LicenseManager class
  • Feature gating per funzionalità PRO
  • License validation API
  • Analytics anonimizzate opt-in

Fase 3 - Protezioni (Sprint 3)

  • Code obfuscation per PRO features
  • Anti-tampering detection
  • Database watermarking
  • Violation reporting

Fase 4 - Commercializzazione (Sprint 4)

  • Sito marketing netgescon.it
  • Sistema pagamenti Stripe/PayPal
  • Customer portal PRO
  • Support ticketing system

💡 ALTERNATIVE LICENSES DA CONSIDERARE

1. AGPL v3 + Commercial Exception

Vantaggi:

  • Copyleft forte: modifiche devono essere open
  • Exception commerciale su misura
  • Protezione anti-SaaS automatica

Svantaggi:

  • Complessità legale alta
  • Possibili incompatibilità con altri progetti

2. Business Source License (BSL)

Vantaggi:

  • Open source dopo X anni
  • Uso commerciale limitato per periodo
  • Modello Elastic/MongoDB

Svantaggi:

  • Non OSI-approved
  • Complessità temporale

3. Fair Source License

Vantaggi:

  • Codice visibile
  • Uso limitato per numero utenti
  • Modello GitLab

Svantaggi:

  • Non truly open source
  • Limitazioni artificiali

🎯 RACCOMANDAZIONE FINALE

Proposta: Licenza Custom Open Source basata su MIT/BSD con clausole commerciali specifiche.

Benefici:

  • Massima libertà per utenti finali
  • Protezione contro commercializzazione abusiva
  • Flessibilità per partnership future
  • Compliance con ecosistema open source
  • Possibilità dual-license semplice

Data Analisi: 14/07/2025
Stato: PROPOSTA - Da approvare
Prossimo Step: Revisione legale + finalizzazione testi