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

423 lines
12 KiB
Markdown

# 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