# 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 ```markdown # 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 ```markdown # 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 ```php // 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) ```php 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) ```bash # 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 ```sql -- 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) ```php 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 ```php 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 ```markdown # 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 ```markdown # 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