Revisionati, con impronta,
e mai modificati dopo la pubblicazione.

Un sistema di plugin è un invito a eseguire il codice di qualcun altro sui tuoi file. Questa pagina riguarda i limiti di quell’invito: cosa significa revisione, cosa l’app ricontrolla prima di installare qualsiasi cosa, e cosa un plugin non può raggiungere nemmeno dopo il tuo sì.

Studio 1.17.1 · macOS 14+8.5 MB da scaricare
Linelark Studio con il pannello di un plugin di formattazione installato nel dock di destra, accanto al file che formatterebbe
Un plugin revisionato, disegnato dall’appStudio 1.17.1 · macOS 14+

Cosa sta tra un plugin e i tuoi file.

Quattro fasi distinte, ognuna delle quali può rifiutare: la revisione, la voce di catalogo, il download, e i permessi che concedi dopo.

01

Una versione è immutabile una volta pubblicata

L’archivio è costruito in modo deterministico e il suo SHA-256 registrato. Una nuova sottomissione con byte diversi viene rifiutata invece che unita: qualsiasi modifica — anche una sola riga riformulata — deve diventare una nuova versione con la propria revisione.

02

L’impronta viene ricontrollata sulla tua macchina

Dopo il download l’app ricalcola lo SHA-256 e lo confronta con il valore revisionato, e verifica che la dimensione corrisponda a quella registrata. Una differenza rifiuta l’installazione del tutto invece di avvisare.

03

L’URL di download non può puntare altrove

Una voce di catalogo è accettata solo se il suo URL di download è https, su linelark.com, al percorso esatto di quel plugin e di quella versione, senza stringa di query né frammento. Un catalogo manomesso non può dirottare un’installazione verso un altro host.

04

L’archivio stesso è vincolato

Nessun collegamento simbolico, nessun percorso che esca dal bundle, al massimo 1.000 voci, al massimo 20 MB decompressi e 50 MB compressi. Uno zip che tenti una di queste cose viene rifiutato prima che si scriva alcunché.

05

Le capacità sono dichiarate, poi concesse a parte

Il manifesto chiede l’accesso in scrittura a git, host con un nome, e credenziali con un nome. Installare non concede nulla: attivi ogni voce in Gestisci plugin, e il pannello mostra esattamente cosa è stato chiesto.

06

Cambiare ciò che un plugin chiede revoca il tuo consenso

I permessi sono legati a un’impronta delle capacità del manifesto. Un aggiornamento che aggiunge un host, o che sposta una credenziale in un’altra intestazione, deve richiedere da capo invece di ereditare il sì dato alla versione precedente.

Cosa un plugin non può fare, qualunque cosa chieda.

Sono proprietà della superficie dell’API più che promesse sul comportamento dei plugin. Una capacità che non esiste non può essere né chiesta, né abusata, né concessa per errore.

LimiteCome viene tenuto
Leggere una credenziale salvataNessuna chiamata ne restituisce una. Un plugin può chiedere se una credenziale esiste e può consegnarne una; il valore viene allegato alle richieste dall’host e non entra mai nel contesto del plugin.
Mandare una credenziale altroveOgni credenziale è legata nel manifesto a un solo host e a una sola intestazione. L’host la allega solo alle richieste dirette a quell’host.
Raggiungere un host non dichiaratoSolo HTTPS, host confrontati esattamente senza caratteri jolly, reindirizzamenti non seguiti, risposte limitate a 5 MB.
Toccare file qualsiasiNon esiste alcuna API per il file system. L’archiviazione di un plugin è un solo file JSON indicato dal suo identificativo, senza percorsi da nominare, limitato a 4 MB e 2.000 chiavi.
Scrivere sul disco di nascostoL’unica uscita è una finestra di salvataggio. La finestra è il consenso: non c’è quindi alcun argomento di percorso che un plugin possa scegliere.
Forzare un push, azzerare o unireNessuna chiamata del genere esiste. Il pull è solo in avanzamento rapido, e un push divergente viene rifiutato da git stesso.
Scartare le tue modifiche senza chiedereÈ l’host a mostrare quella conferma, prima della chiamata, perché un plugin non può mostrare una finestra di dialogo e un plugin che potesse farlo sarebbe la cosa sbagliata a cui affidarla.
Caricarsi su un host troppo vecchioUn plugin dichiara la generazione di API per cui è stato scritto, e un’app più vecchia rifiuta di caricarlo e lo dice, invece di perdere metà del suo pannello in silenzio.

Letto nel codice pubblicato di Linelark Studio 1.17.1, non nella sua documentazione. Quando i due non concordano, è questo che viene rilasciato.

I limiti di questo modello.

I meccanismi qui sopra sono reali e verificabili. Le parti che non sono meccaniche meritano di essere nominate, perché una pagina sulla fiducia che elenca solo punti di forza non è una pagina sulla fiducia.

  • La revisione è una persona che legge il codiceNon c’è né un audit formale, né una valutazione di terze parti, né un’analisi automatica di software malevolo. Revisionare vuol dire che il bundle è stato impacchettato, validato e letto dal responsabile del catalogo, a confronto con i permessi che chiede.
  • Un permesso concesso è un permesso veroL’accesso in scrittura a git vuol dire che un plugin può aggiungere all’indice, fare commit, cambiare ramo e fare push. L’accesso alla rete vuol dire che può parlare con gli host che ha dichiarato. Le porte sono un consenso, non una sandbox dentro il consenso.
  • Un plugin può bloccare l’editorGli script girano senza un cane da guardia. Un plugin che non restituisce mai il controllo bloccherà l’app finché non la si forza a uscire, e l’API limitata non può impedirlo.
  • L’installazione manuale aggira del tutto il catalogoUna cartella di plugin installata a mano non viene confrontata con alcuna impronta, perché non c’è nulla con cui confrontarla. Le garanzie di questa pagina riguardano le installazioni dal catalogo.

Aprilo sui tuoi
file.

Notarizzato da Apple, macOS 14 e versioni successive, Intel e Apple silicon.

Scarica Studio 1.17.1 8.5 MB · tutte le versioni, con le loro impronte