Should the dependency be included in the repository?
Penso che le dipendenze dovrebbero sempre essere incluse nel repository a patto che includerle non violino nessuna delle condizioni d'uso. Poche cose sono più fastidiose del dover trovare manualmente le giuste versioni delle giuste dipendenze prima di poter creare una build. Certo, questo è facile quando hai strumenti automatici per farlo, che possono trovare e scaricare la giusta dipendenza, ma cosa succede se non sei connesso al web al momento o se il server è inattivo o il progetto della dipendenza è stato interrotto completamente e portato offline? Includere sempre le dipendenze, se possibile.
Should the dependency be built from within the same build script as
the rest of the project, or from a separate build script?
A meno che non ci sia un buon motivo per compilare dal sorgente, usa le versioni precompilate.
E perché non fornire opzioni nello script di compilazione? Un semplice passaggio per scegliere se compilare o meno le dipendenze. Se l'utente sceglie di compilare anche le dipendenze, invoca semplicemente i propri script di compilazione dallo script di build del tuo prodotto. Quindi l'utente può richiamare manualmente gli script di compilazione delle dipendenze o scegliere di creare una compilazione completa di tutto. Ma consegnerei le dipendenze come binari se non c'è una buona ragione per compilarli dalle fonti. Penso che nel mondo Open Source, alcune licenze richiedano di distribuire le fonti insieme al tuo prodotto, ma ciò non significa che non puoi averle precompilate.
In breve: Fornisci un pacchetto di lavoro autonomo, se possibile. Ciò fornirà la massima praticità ai tuoi utenti.