Salta ai contenuti

Open source

Ripple Effect è proprietario e il suo codice sorgente non è pubblicato. Diversi dei pacchetti su cui è costruito sono open source e quattro sono nostri: l’editor di nodi, il layout ad ancoraggio con cui è disegnato lo spazio di lavoro, la stima del tempo di lettura e il sistema di segnalazione dei crash. La distinzione va tenuta ben chiara, perché le due metà si confondono facilmente: i pacchetti sono aperti, l’app no. I quattro sono pubblicati a sé e accettano pull request. fl_nodes_v2, fl_panel e fl_crashpad sono pacchetti Flutter e richiedono Flutter; dart_read_time è Dart puro.

github.com/ConnectingTheDots-DCWK/fl_nodes_v2 · MIT

È la tela: geometria, collegamenti, selezione, annullamento, il modello di esecuzione (il controllo è spinto, i dati sono tirati) e la minimappa. Non sa nulla di narrativa. Un nodo è ciò che l’host dice che sia un nodo, e Ripple Effect è un host tra gli altri. Tutto ciò che riguarda il comportamento di una scheda sulla tela, descritto in Lavagne, nodi e macro, è questo pacchetto al lavoro, e un contributo lì arriva a Ripple Effect e a ogni altra applicazione costruita su di esso.

github.com/ConnectingTheDots-DCWK/fl_panel · MIT

È un albero di divisioni, pannelli singoli e gruppi di schede che ridimensioni, ancori e riorganizzi. Puoi strappare una scheda dalla sua barra, rilasciare un pannello accanto a un altro e ritrovare lo stesso layout il giorno dopo. Ogni pannello contiene normali widget Flutter, e nel pacchetto non c’è nulla su file o documenti: una scheda è un nome che l’host risolve. Cosa può andare dove lo stabiliscono le schede stesse e una policy scritta dall’host, così un’applicazione può dire che i suoi pannelli degli strumenti condividono una barra solo con altri pannelli degli strumenti.

È ciò con cui è disegnato lo spazio di lavoro. La pagina del progetto è un’unica area di ancoraggio su questo pacchetto: i documenti sono schede e divisioni, e il layout viene conservato per progetto in .ripple/workspace.json. Il pacchetto è diventato pubblico per primo, così da essere costruito allo scoperto e non attorno alla forma di una sola applicazione. Il suo albero, il solver e il formato di file non importano nulla da Flutter, quindi un layout può essere costruito, modificato e salvato senza interfaccia. Il post che lo presenta spiega perché l’albero ha questa forma.

dart_read_time: quanto ci vuole a leggere un passaggio

Sezione intitolata “dart_read_time: quanto ci vuole a leggere un passaggio”

github.com/ConnectingTheDots-DCWK/dart_read_time · MIT

È la stima sotto ogni passaggio: cinquantaquattro lingue, alfabeti misti contati una sequenza alla volta e una parola onesta sul fatto che il valore di una lingua sia misurato o stimato per ragionamento. È Dart puro, senza Flutter, quindi può usarlo anche un browser o una riga di comando. Passaggi, scelte, lingue e tempo di lettura spiega cosa fa con essa la riga sotto l’editor.

github.com/ConnectingTheDots-DCWK/fl_crashpad · MIT

È la segnalazione dei crash nativi per Flutter basata su Google Crashpad, su desktop, Android e iOS. Non sa nulla di alcuna app, logger o backend. In Ripple Effect intercetta un crash nativo; ogni segnalazione viene ripulita prima che possa essere letta o inviata. Aggiornamenti, log e Messaggi spiega cosa fa l’app con una segnalazione.

github.com/pydantic/monty · MIT

Non è nostro. monty è un interprete Python in sandbox scritto in Rust dal team di pydantic, ed è il modo in cui una scheda Script, uno span {{ … }} in un passaggio e la console eseguono Python. Un ringraziamento a runyaga, il cui dart_monty ha portato per primo l’interprete in Dart. Il motore collega l’interprete direttamente, e uno script fuori controllo viene fermato alla sua scadenza.

L’interprete è un sottoinsieme di Python: niente filesystem, niente rete, niente class, e una libreria standard ridotta a un breve elenco. Questa restrizione è ciò che rende sicuro eseguire la storia di uno sconosciuto. Python in una storia spiega il compromesso, La sandbox e i suoi limiti dice cosa consente, e il riferimento Python elenca cosa l’app vi rende disponibile.

L’elenco completo dei componenti di terze parti e delle loro licenze si trova nell’applicazione, in Impostazioni ▸ Informazioni ▸ Licenze di terze parti. Ciascuno è regolato dalla propria licenza, che quella dell’app non tocca.