Più guardo a Midnight, meno penso che la sfida più grande sia la complessità tecnica.
Se mai, sembra che il progetto stia cercando attivamente di attenuare ciò.
Strumenti migliori. Astrazioni più pulite. Un modo più accessibile per costruire cose che, non molto tempo fa, richiedevano un tipo di mente molto specifico per essere anche solo tentate. Quella parte è facile da rispettare. Abbassare la barriera all'ingresso è sempre stato il modo in cui gli ecosistemi crescono. Se qualcosa rimane troppo difficile per troppo tempo, non diventa sicuro. Diventa semplicemente irrilevante.
Quindi sì, rendere il calcolo riservato più accessibile sembra la mossa giusta.
Ma c'è un altro livello in quel cambiamento che non riesco a ignorare del tutto.
Perché l'accessibilità non porta solo più costruttori.
Cambia anche come quei costruttori si sentono mentre stanno costruendo.
E quel sentimento conta più di quanto le persone amino ammettere.
C'è un certo tipo di fiducia che deriva da strumenti che "funzionano e basta." Scrivi qualcosa, si compila, le prove verificano, il sistema si comporta nel modo in cui l'interfaccia suggerisce che dovrebbe. Tutto sembra pulito. Prevedibile. Controllato. Quella esperienza è confortante. Ti dice che stai facendo le cose correttamente, o almeno abbastanza correttamente.
Il problema è che nei sistemi crittografici, quel sentimento può essere fuorviante.
Non ovviamente sbagliato. Solo… incompleto.
Quella è la parte a cui continuo a tornare.
Perché Midnight opera in uno spazio dove la correttezza non è sempre visibile in superficie. Puoi costruire qualcosa che si comporta esattamente come previsto dall'esterno, mentre è comunque basato su assunzioni che non si reggono del tutto. L'astrazione funziona. L'interfaccia è d'accordo con te. La logica supera i suoi controlli.
Eppure, qualcosa non quadra.
Non rotto in un modo che si annuncia. Solo disallineato in un modo che rimane silenzioso fino a quando non è importante.
Quella è una categoria di rischio molto diversa rispetto al software normale.
Nella maggior parte degli ambienti, quando qualcosa va storto, alla fine diventa ovvio. Una funzionalità si rompe. Un utente si lamenta. Un sistema va in crash. Lo ripari, vai avanti, forse impari qualcosa. È disordinato, ma è visibile.
Nei sistemi focalizzati sulla privacy, specialmente quelli costruiti su fondamenta a conoscenza zero, il feedback loop è più morbido. Il sistema può continuare a funzionare. Le prove possono continuare a verificarsi. L'applicazione può continuare a funzionare esattamente come progettato.
Il problema è che "come progettato" potrebbe non significare sempre "come inteso."
E quando quel divario esiste, non è sempre facile da rilevare dall'esterno.
È lì che la fiducia degli sviluppatori diventa una variabile strana.
Perché meglio sono gli strumenti, più naturale sembra quella fiducia. E più naturale sembra, meno è probabile che venga messa in discussione. Nessuno ama fermarsi nel bel mezzo di un'esperienza di sviluppo fluida e chiedere: "Capisco davvero cosa sta facendo questo sistema sotto il suo aspetto?"
Soprattutto quando tutto sembra funzionare.
Ma Midnight non è un ambiente di sviluppo normale.
Non si tratta solo di scrivere logica. Si tratta di scrivere logica che viene tradotta in garanzie crittografiche, sistemi di prova, vincoli di esecuzione e transizioni di stato nascosto che la maggior parte dei programmatori non è abituata a considerare in dettaglio.
Quella strato di traduzione è dove le cose diventano interessanti.
E anche dove le cose possono andare silenziosamente storte.
Perché anche se gli strumenti sono puliti, il sistema sottostante sta ancora facendo qualcosa di molto non banale. Sta imponendo regole attraverso meccanismi che non sono sempre intuitivi, non sempre trasparenti e non sempre facili da simulare mentalmente. Ti fidi del sistema per interpretare correttamente la tua intenzione, e di te stesso per aver espresso quell'intenzione in un modo che il sistema capisce realmente.
Quella è un'accordo fragile.
Non rotto. Solo… facile da sovrastimare.
Non penso che questo sia un fallimento di Midnight. Se mai, è una conseguenza di ciò che sta cercando di raggiungere. Rendere qualcosa di così complesso utilizzabile comporterà sempre nascondere parti di quella complessità. Non c'è altro modo per renderlo accessibile.
Ma nascondere la complessità non la rimuove.
Semplicemente lo sposta altrove.
Di solito in luoghi che sono più difficili da vedere durante lo sviluppo normale.
E questo è dove inizio a pensare meno all'adozione e più alla disciplina.
Perché una volta che la barriera all'ingresso si abbassa, il sistema non filtra più i partecipanti in base alla difficoltà. Inizia a fare affidamento su quanto seriamente quei partecipanti affrontano ciò che stanno costruendo. Questo è un tipo di filtro diverso, e molto meno affidabile.
Alcuni sviluppatori andranno in profondità. Metteranno in discussione le assunzioni, studieranno i meccanismi sottostanti, testeranno casi limite e tratteranno il sistema con la cautela che probabilmente merita.
Altri costruiranno sopra ciò che sembra un'astrazione stabile e andranno avanti con fiducia.
Entrambi i gruppi produrranno applicazioni funzionanti.
Solo un gruppo è più propenso a capire dove quelle applicazioni potrebbero fallire.
Quella differenza potrebbe non comparire immediatamente.
Ma tende a contare alla fine.
Quindi quando penso alla direzione di Midnight, non vedo davvero la storia principale come "la privacy sta diventando più facile da costruire."
Forse lo è.
La domanda più interessante è cosa succede al giudizio del programmatore quando il sistema inizia a sembrare intuitivo abbastanza da fidarsi per default. Se l'ecosistema sviluppa abitudini che compensano la complessità nascosta, o se lentamente deriva in un luogo dove le cose sembrano corrette più spesso di quanto non siano realmente.
Perché la fiducia è utile.
Ma in sistemi come questo, può anche essere leggermente pericoloso quando arriva troppo presto.
E la vera sfida per Midnight potrebbe non essere solo rendere i programmatori capaci di costruire applicazioni riservate.
Potrebbe rendere le persone abbastanza caute da capire quando non hanno pienamente compreso ciò che hanno costruito.
Non è un problema di strumenti.
Quella è una questione umana.
E quelli tendono a essere più difficili da risolvere.
