Ciclo di sviluppo software sicuro
Come costruiamo, testiamo e rilasciamo Rockxy — pensato per essere trasparente, riproducibile e verificabile dalla community.
Branch e code review
Lo sviluppo avviene sul branch develop. Le release partono da main. Ogni change passa attraverso pull request. Le PR che toccano aree sensibili — proxy engine, gestione certificati, helper privilegiato, server MCP — richiedono la review di almeno un manutentore con contesto in quell’area.
Gestione delle dipendenze
Rockxy dichiara le dipendenze tramite Swift Package Manager. Ogni versione delle dipendenze è fissata al commit. Aggiorniamo le dipendenze in PR dedicate così le modifiche sono isolate e recensibili. Prediligiamo le librerie mantenute da Apple (SwiftNIO, swift-crypto, swift-certificates) e pacchetti open source con una storia di manutenzione attiva.
Analisi statica
Il progetto gira con gli avvisi Swift strict abilitati. Gli avvisi del compilatore vengono trattati come errori nelle build di release. SwiftLint impone regole di stile e cattura pattern problematici comuni. Le PR che introducono nuovi avvisi non vengono mergiate.
Test
I test unitari coprono la logica di parsing del proxy, gli endpoint degli strumenti MCP e le operazioni sui certificati. I test di integrazione esercitano sessioni proxy end-to-end. La fixture di test include una CA di test per evitare di dover fare HTTPS reali in CI. I test vanno eseguiti in locale prima di aprire una PR.
Firma e notarization
I binari di release sono firmati con il Developer ID di Apple e notarizzati tramite Apple. Lo script di build mostra l’ID del certificato utilizzato e verifica che l’output passi spctl --assess. I DMG sono signati a loro volta. Gli utenti possono verificare firma e notarization di qualsiasi build prima di aprirla.
Privileged helper
L’helper privilegiato è pacchettizzato come servizio SMAppService. Viene installato con launchctl previa esplicita autorizzazione utente. Ogni connessione XPC verifica la catena di firma del chiamante confrontandola con il certificato di Rockxy. L’helper rifiuta connessioni da binari non firmati o firmati con una catena diversa.
Processo di release
Le release seguono SemVer. Ogni release tagga il commit, genera un changelog automatico a partire dai commit convenzionali, costruisce un DMG firmato e notarizzato e pubblica artefatti su GitHub Releases. La pagina del changelog del sito web viene aggiornata contestualmente.
Segnalazione vulnerabilità
Segnala problemi di sicurezza in privato a rockxyapp@gmail.com. Le segnalazioni gravi ricevono una prima risposta entro 72 ore. Per i dettagli vedi SECURITY.md.
Trasparenza
Tutto questo processo si svolge in pubblico: issue su GitHub, PR, script di CI, script di release, changelog. Se qualcosa non ti torna, aprici una issue. La verifica da parte della community è il motivo per cui abbiamo scelto AGPL e un repository aperto.