Saurik "presenta" Cydia 1.1

Quelle che state per leggere è un commento scritto da Saurik in un blog Americano, in un post riferito a Cydia 1.1.
Cio’ che si può capire da queste specie di Q&A è che Jay Freeman stia lavorando pesantemente su Cydia.

Luca lo ha tradotto integralmente per voi, e fidatevi che è stato un lavoraccio. Lo trovate qui di seguito.

Il testo è molto lungo, e potete scaricarlo come PDF o ePub per leggerlo più comodamente. Ricordo che ePub è il formatto degli e-book, quindi funziona perfettamente con iBooks, con tanto di ridimensionamento a piacere dei caratteri.

 

“Il multitasking è un must-have ed è abbastanza patetico non supportarlo, specialmente considerato che iOS 4 è uscito da 8 mesi” Questo semplicemente non è possibile al momento. Capisco che tutti lo stiano aspettando e, accidenti, lo voglio anchʼio; ma il fatto che tutti dicano che è importante non lo rende possibile. La ragione per cui Cydia non supporta il multitasking di iOS 4 è che, per apportare le modifiche che esegue al sistema, è eseguito come “root”, un utente che ha più permessi sul sistema di chiunque altro, il che vuol dire che la SpringBoard, un processo con privilegi più bassi in esecuzione come “mobile” non può sospenderne o riprenderne lʼesecuzione.

Ora, questo è qualcosa che a cui si può porre rimedio, ed è qualcosa che sto pensando come fare da lungo tempo, ma tutte le ovvie maniere che le persone amano proporre per poter eseguire lʼinterfaccia grafica di Cydia come “mobile”, con solo piccole parti in esecuzione come “root” renderebbero Cydia più lento, e la velocità è qualcosa di primaria importanza per chiunque mentre sta usando Cydia. Fortunatamente ci sono cose che ho realizzato che potrebbero rendere questa operazione ragionevolmente possibile, ma senzʼaltro non per questa release.

“La possibilità di lasciare il Mobile Substrate attivo mentre si usa Cydia. Capisco che ciò è fatto per ridurre i conflitti delle app da installare, ma non avere accesso a SBSettings è una rottura, specialmente visto che Cydia non supporta il multitasking!”

Se facessi questo, troveresti che il tuo sistema diventerebbe improvvisamente inutilizzabile. So che sembra strano e buffo che il Mobile Substrate debba modificare tutte le applicazione nel sistema, incluso Cydia, ma di nuovo: Cydia è in esecuzione come “root”. Praticamente tutte le estensioni nellʼecosistema NON sono progettate pensando a questo, e dare loro improvvisamente lʼaccesso come root provocherebbe la distruzione dei permessi sui file di configurazione e sulla cartella “Media”, rendendo impossibile il loro uso a tutte le applicazioni normali.

Dunque, con questa release di Cydia, ho esaminato tutti i “pezzi grossi” – che sembrano ridursi ad Activator (ciò che lancia SBSettings), libstatusbar (che aggiunge elementi di notifica sulla status bar) e SimulatedKeyEvents (pressioni di tasti simulate, di Veency) – per verificare insieme ai rispettivi sviluppatori che i loro programmi funzionino bene in un ambiente in esecuzione come “root”. Queste estensioni (più WinterBoard, che non funziona come root su iOS 4.x, ma non può fare danni, e questo verrà risolto nelle prossime release) sono ciò che è disponibile dallʼinterno di Cydia finché Cydia stesso non sarà modificato per lʼesecuzione come “mobile”

“Non vedo lʼora che arrivi unʼinterfaccia esteticamente più bella. E una funzione di backup automatizzato sarebbe grandiosa. Continua con il tuo ottimo lavoro. Non vedo lʼora di vederlo” Una funzione di backup non necessità in realtà una nuova versione di Cydia, ma ha bisogno di tempo per capire come scalare gli utenti per supportare il tipo di carico che ha Cydia. Cydia è in esecuzione con un numero di utenti che è superiore di molti ordini rispetto a quello che hanno tutti i concorrenti, che significa che molte cose che le persone amano pensare che “siano semplici, visto che X lʼha fatto” sono in realtà molto più difficili da implementare. Tengo inoltre ben presente la privacy mentre costruisco funzioni come questa, e voglio essere sicuro al 100% che nessuno possa accedere alla lista dei prodotti installati a parte te.

Per quanto riguarda unʼinterfaccia esteticamente più bella, io lavoro duramente per mantenere qualcosa che competa con i prodotti Apple. Alcune cose si sono deteriorate in iOS 4.x (le posizioni e le dimensioni di alcuni bottoni), e le varie interfacce nere (la barra nera e la schermata nera) hanno riscontri diversi, ma a parte ciò il problema principale che gli utenti hanno con Cydia non è Cydia: sono i repository. Ogni volta che ho ricevuto un feedback che diceva che “questa specifica cosa non è buona”, significava che quella cosa non è qualcosa che Apple stessa fa nelle applicazioni iTunes o App Store (che dovrebbero essere considerati “modelli di intuitività”), ma è in aree dellʼinterfaccia sulle quali semplicemente non ho alcun controllo: il contenuto mostrato per un pacchetto dal repository.

“Meno termini tecnici (per esempio, perché “Changes” quando dovrebbe semplicemente essere “New Releases/Updates?)” Forse sono pazzo, ma ho sempre pensato che la parola “Changes” (cambiamenti) fosse un termine molto non-tecnico ed adatto allʼutente finale per dire “cose che sono cambiate”. Certamente non è un termine tecnico: non è stato scelto per qualche desiderio geek di avere lʼinterfaccia grafica corrispondente al codice, e non è neppure stato scelto perché ha un qualche significato esoterico in latino o in greco. È stato scelto perché fosse una singola parola che significasse immediatamente per il più grande numero di persone a cui ho parlato cosa esattamente facesse quella pagina: mostrarti ciò che è cambiato”. Senza contare che “New Releases/Updates” non ci starebbe di certo nel nome della scheda.

“Spero che Cydia 1.1 sarà molto più veloce!”

Come ogni versione di Cydia, CYdia 1.1 è più veloce delle precedenti versioni. Nello specifico, è più veloce della 1.0.3366 con un buon margine, la quale era essa stessa più veloce della 1.0.3222 con un distacco ancora maggiore. Su questo punto, tuttavia, è importante sottolineare che Cydia ha a che fare con un difficile problema: nessunʼaltra applicazione io abbia visto sullʼiPhone, da Apple o da terze parti, tenta di indicizzare e gestire decine di migliaia di elementi, sul dispositivo, in tempo reale, aggregati da sorgenti scelte dallʼutente.

Al contrario, Cydia ha alcune delle più veloci tecnologie esistenti riguardo alla gestione di questi dati, siano esse algoritmi personalizzati (Cydia include un ordinamento delle stringhe compatibile con la localizzazione che, per quanto ne so, è lʼalgoritmo più veloce di tutte le applicazioni per iOS) o speciali strutture di dati sul disco (in Cydia 1.1 cʼè il nuovo “Cytore”, un nuovo modo per memorizzare i metadati locali sui pacchetti che possono essere caricati praticamente in modo istantaneo dalla memoria flash; per quelli di voi che sono dei tecnici, è una “memory mapped hashtable” su disco, che batte drasticamente altre alternative che la gente ama proporre, come SQLite).

“Meno Loading Data (ho DAVVERO bisogno di vedere tutti i cambiamenti nella lista in una volta sola?)” Malgrado i miti dicano il contrario, la quantità di dati mostrata in “Changes” non cambia drasticamente la velocità con cui esso si carica. Cʼera un bug in molte versioni di Cydia 1.0 che causava almeno un piccolo ritardo collegato al numero di elementi nella lista, ma questo bug è stato già risolto a partire dalla versione 1.0.3366. Il vero lavoro è decidere quali voci debbano essere sulla lista (e specificamente quali sono aggiornamenti e quali nuovi rilasci), non la loro visualizzazione tutti insieme. Detto questo, Cydia 1.0.3366 ritarda il caricamento dei cambiamenti a dopo il click sulla scheda, che rende più evidente quanto tempo è speso in questa operazione (che, di nuovo, è esso stesso più veloce nella 1.1).

“Meno uso della memoria”

Malgrado Cydia 1.1 continui a tentare di gestire decine di migliaia di elementi in memoria, grazie a Cytore, usa molta meno memoria di quanta ne abbia mai usata prima. Sono state fatte altre ottimizzazioni, come in ogni versione di Cydia, al fine di ridurre lʼuso di memoria dellʼintera applicazione. Inoltre ed in particolare, Cydia 1.1 è molto più coscienziosa riguardo ai memory warnings, e tenta di liberare più memoria possibile durante questi eventi.

Detto questo, la quantità di memoria disponibile alle applicazioni su dispositivi ragionevolmente moderni (qualunque cosa dopo lʼiPhone 3G), è un ordine di grandezza più grande: mentre su un iPhone 3G si lavorava con qualcosa come 20MB di memoria disponibile, su un iPhone 3G[S] si hanno 150MB, e su un iPhone 4 400MB. Dunque, malgrado Cydia 1.1 in effetti necessiti di meno memoria di Cydia 1.0 per operare, la pressione sulla memoria se ne è praticamente andata, e non interesserà i futuri utenti grazie agli aggiornamenti hardware.

“Sono dʼaccordo con molti dei commenti qui sopra, ma quello che ritengo più importante sono la stabilità, la velocità e più possibilità di ricerca avanzata. Ad esempio, se qualcuno scrivesse in modo sbagliato il nome di unʼapplicazione, o se volesse solo scrivere una parola chiave per la ricerca, Cydia dovrebbe fornire dei suggerimenti”

Sfortunatamente, questo dispositivo è semplicemente troppo lento per fornire “possibilità di ricerca avanzata”, date le restrizioni di “da repository selezionati dallʼutente” e “in qualcosa che ricordi il tempo reale”. Detto questo, Cydia 1.1 ha un meccanismo di ricerca molto migliore, che include un algoritmo di rilevanza integer-arithmetic radix-sorted che sono riuscito ad implementare.

Quello che ci vorrebbe davvero per avere unʼesperienza di ricerca veramente impressionante sarebbe non dover eseguire la ricerca sul dispositivo, ma farla invece sui miei server. Questo è come funzionano prodotti come lʼApp Store, Kindle o Netglix: non è per niente comune per gli utenti dei servizi tentare di gestire gli interi database sul dispositivo, eseguendo ricerche locali, invece di avere i dati e le computazioni su un enorme server in cloud per quello che esiste nelle strutture di ricerca offline-indexed.

Sfortunatamente, la ragione per la quale le persone usano Cydia è cambiata, e molte persone usano Cydia con repository che francamente non dovrebbero usare: siano essi repository contenenti software che è pericoloso (tweak che ricevono un ridotto testing, o usano cattive pratiche quali la modifica di file sul disco) o addirittura illegali (ci sono cose che tu sei autorizzato a fare nel tuo paese che io non sono autorizzato a fare nel mio). Quindi non mi comporterò assolutamente come uno storage centralizzato e gateway di indicizzazione perché le persone trovino e gestiscano questi contenuti.

Invece, quello che continua a far tornare le persone su Cydia è il fatto che agisce come la fondamentale alternativa: che invece di andare ad Apple, con il loro set curato di esperienze centralizzate, puoi venire su Cydia, “il wild west del software”, dove del software modifica altro software in una sorta di sconsiderato abbandono che porterà al dolori anche nei migliori scenari possibili, e che nei peggiori modi porterà a cose che non potrai vedere nei repository predefiniti, e che Cydia potrebbe anche avvertirti di non installare, ma al quale dovresti sempre poter accedere e anche poter cercare attraverso i meccanismi di ricerca di Cydia.

“Finalmente, spero che abbiano corretto quegli orribili errori che Cydia presenta ad ogni apertura” Gli errori in Cydia non provengono da Cydia. Se scrivi un URL di un repository malfunzionante in Cydia, quel repository sarà di bassa qualità e ti causerà problemi. Se è offline, Cydia ti dirà che è offline, e se è malformato Cydia si arrabbierà. Cydia semplicemente starà seduta ad aspettare finché ci sarà una tonnellata di repository malfunzionanti e offline nella tua lista: ti dirà tutti gli errori che ha riscontrato nella speranza che tu rimuoverai questi repository malfunzionanti e continui con la tua vita (che è una metafora molto apt, visto che la maggior parte dei repository di terze parti sono molto lenti, e per colpa loro la tua esperienza di refresh sarà molto, molto, molto lenta).

“Voglio vedere aggiunta una sezione valutazioni e recensioni come sullʼApp Store”

Ci abbiamo provato, ed è stato un miserabile fallimento: abbiamo dovuto passare più tempo a moderare le recensioni, la maggior parte delle quali erano fuorvianti, litigiose o proprio non appropriate, tanto da far perdere ogni valore a questo meccanismo: era anche peggio dellʼApp Store, che è noto per le cattive recensioni (spesso la gente valuta negativamente un prodotto per ragioni assurde, rendendo il dato orribilmente inaffidabile).

Dati questi problemi, ho tentato di mettere insieme una visione di come commenti e valutazioni potrebbero funzionare in Cydia, e ho anche fatto una implementazione di prova (erano addirittura forniti degli screenshot in alcuni momenti, e ho fatto delle dimostrazioni durante qualche conferenza), ma quando si era scoperto che stavo anche solo considerando di rilasciarlo, ho ricevuto un forte contrasto da alcuni dei migliori sviluppatori dellʼecosistema – le persone alle quali è più probabile tu dia delle recensioni ultra-buone – che mi dicevano che se avessi continuato con ciò loro avrebbero abbandonato lʼecosistema, a causa dei problemi di cui sopra.

E, per essere onesto, non sono certo che avrei risolto quei problemi, e date le successive esperienze di prodotti alternativi, e guardando come le persone usavano le valutazioni, quello che le persone dicevano nei commenti, e come venivano valutate alla fine le cose, non credo che lʼavrei fatto: credo che il concetto dei commenti e delle recensioni preconfezionati sia un un sistema fondamentalmente bacato che porta intrinsecamente agli abusi.

Ora, non tutti i sistema di valutazione devono essere “preconfezionati”, quindi qualcosa di veramente innovativo e che risolva veramente il problema è qualcosa che spero un giorno di poter fornire per Cydia. Nel frattempo, tuttavia, io continuo a fare del mio meglio per evitare di inserire dei compromessi davvero meno che perfetti nel nostro ecosistema.

“Sarà comunque importante che il dispositivo e la versione di iOS siano inclusi, visto che ci sono così tante differenze per la compatibilità” Stai, tuttavia, sfondando una porta aperta su questo. Cydia, per un poʼ, ha ospitato numerose funzioni che avrebbero aiutato i repository a gestire questo problema.

1. Unmeccanismoperspecificarelacompatibilitàdipacchetticonifirmware(ipacchetti possono usare la funzione “Depends:” per dipendere da specifiche revisioni del firmware).

2. IlCydiaStorepermetteaivenditoridibloccaregliacquisticonspecificifirmware(ogni prodotto a pagamento può registrare la propria compatibilità nel il suo repository, e poi io lo filtrerò per quegli utenti che possono utilizzarlo).

3. Laversionedelfirmwareèinviatacomepartedellʼuser-agentallepaginewebperogni prodotto, permettendo agli sviluppatori di visualizzare i loro avvisi.

4. Lacompatibilitàèancorapiùspecificamentefattaattraversolarilevazionedelle funzioni, permettendo ai pacchetti di dire “Mi serve il supporto a VoiceOver su un dispositivo con una fotocamera con una CPU armv7 e uno schermo retina”.

In sostanza, ci sono davvero poche scuse per gli sviluppatori, i repository, i prodotti, o chiunque altro nellʼecosistema di Cydia per essere poco specifici in termini di compatibilità con i firmware. Detto questo, praticamente nessun pacchetto nellʼecosistema, e anche nei veramente pochi prodotti nei quali uno immagina che questo sia molto importante, include queste informazioni incluse in nessuno di questi livelli, il che è abbastanza deludente.

Quindi, Cydia 1.1 non tenterà di migliorare alcuno di questi meccanismi, giacché Cydia 1.0 ne ha già più che a sufficienza: la responsabilità è adesso nelle mani degli sviluppatori e degli artisti degli specifici elementi.

“Mi piacerebbe anche vedere rimossi i contenuti abbandonati”

Non ho alcun controllo su quali contenuti sono disponibili in Cydia. Intendo, io posso rifiutare di accettare personalmente soldi per esso, ma non ho praticamente nessuna introspezione su cose che sono gratuite o a pagamento sul sito dello sviluppatore. Per anni ho tentato di ottenere che i repository eliminassero i pacchetti obsoleti: si rifiutano. Invece che di chiedere a me, che sono dʼaccordo con te e sono senza poteri, dovresti inviare queste lamentazioni ai repository predefiniti: BigBoss, ModMyi e ZodTTD.

“Tag che indichino se lʼinstallazione di app/tweak richiedono un respring o un reboot” Mentre questo è spesso dichiarato, questo semplicemente non è come funziona il sistema: i pacchetti determinano se è necessario un respring o un reboot mentre vengono installati, permettendo agli sviluppatori di eseguire ottimizzazioni quali “devo riavviare solo se lʼutente sta usando questa versione del firwmare e ha questʼaltro pacchetto installato con questa specifica impostazione”. Infatti, tutti i miei pacchetti che necessitano di caratteristiche come queste tentano queste ottimizzazioni, e spesso non necessiterai di così tanti reboot o respring grazie a questo.

Dunque, specificare questo come tag statici nel pacchetto aumenterebbe senza un effettivo bisogno il numero di riavvii che un utente deve eseguire. Detto questo, per pacchetti nei quali non è ovvio (le estensioni avranno bisogno di un respring, e il Mobile Substrate avrà bisogno di un riavvio), come in casi di client MMS che hanno bisogno di un riavvio, dovrebbe certamente essere prassi comune per lo sviluppatore di inserire questa informazione nella schermata informativa del loro pacchetto. Questo, per lo sviluppatore/ distributore, è ancora più facile che modificare il pacchetto, e nonostante ciò è molto raramente specificato: aggiungere il tag dunque non cambierebbe quanto spesso è segnalato.

“Riguardo alla stabilità, sarebbe bello se Cydia avesse una soluzione per i repository e le app che non si sono aggiunte correttamente, invece di avere infiniti errori che continuano a comparire. Queste correzioni da sole sarebbero molto più utili di un intero ridisegno dellʼinterfaccia di Cydia o di altri cambiamenti estetici” Riguardo ai repository che non sono stati aggiungi correttamente, come detto da Ryan Petrich, Cydia 1.1 non dovrebbe più portare a situazioni dove repository malfunzionanti sono così inutilizzabili che sono anche ineliminabili. Detto questo, molti utenti si lamentano di repository installati tramite un pacchetto: eliminare questi repository ti obbligherà a rimuovere anche il pacchetto che li rappresenta.

(A causa di alcune di queste complessità, è una pratica futura di Cydia che nessun repository sarà installabile dai repository predefiniti tramite pacchetti, e quelli esistenti in “More Sources” saranno spostati in un nuovo meccanismo per gestire quelli che sono stati aggiunti, il quale permetterà una manipolazione più diretta e semplice dei repository usando una pagina “More Sources” che verrà presto migliorata.

 

 

Grazie a tutti voi, a proposito, per il vostro interesse in Cydia: il fatto che vi interessiate a quali funzioni sono o non sono in Cydia 1.1 significa molto per tutti coloro che lavorano sul progetto.

–Saurik

 

 

È permessa la copia e la redistribuzione della presentazione traduzione, in toto o in parte, in qualunque formato e tramite qualsiasi mezzo a patto che vengano dato credito al traduttore, Luca Zorzi, e sia presente un link al sito www.easyapple.org

 

 

Qui potete leggere l’originale in inglese.