📋 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
423 lines
12 KiB
Markdown
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
|