Le migliori pratiche per includere il codice open source da altri progetti pubblici?

4

Se utilizzo un progetto open source esistente che è ospitato ad esempio su github in uno dei miei progetti, dovrei controllare il codice dall'altro progetto nel mio repository pubblico o no? Ho sentimenti contrastanti su questo, # 1 Voglio dare il giusto credito e l'attribuzione allo sviluppatore originale, e se è il caso, contribuirò a qualsiasi modifica che devo apportare. Tuttavia, dato che ho sviluppato / testato rispetto ad una revisione specifica del codice di altri progetti, questa è la versione che voglio distribuire agli utenti del mio progetto.

Ecco il caso d'uso specifico per illustrare il mio punto. Sto cercando una risposta più generalizzata rispetto a questo caso specifico. Sto sviluppando un framework semplice utilizzando rabbitmq e python per i messaggi in uscita che consentiranno l'invio di sms, twitter, e-mail ed è estensibile per supportare anche bus di messaggistica aggiuntivi. C'è un progetto su github che renderà la creazione e l'invio di messaggi SMS sviluppati da un'altra persona. Quando creo il mio repository personale, come faccio a tenere conto del codice che includo dall'altro progetto?

    
posta Bryan Kemp 28.06.2012 - 04:43
fonte

2 risposte

7

Assolutamente, inequivocabilmente, se sei legalmente in grado di farlo controlla il codice nel repository .

  1. Vuoi che le tue build siano ermetiche , il che significa che puoi semplicemente digitare "build" nella riga di comando e non richiedere strumenti aggiuntivi, librerie, SDK, ecc.
  2. Vuoi isolare la tua build da interruzioni casuali.
  3. Vuoi che le cose continuino a funzionare domani come fanno oggi. Questo è lo stesso di # 2 ma più sinistro.

Il modo migliore che ho visto è quello di creare una cartella third_party nella root del repository e avere tutti i riferimenti su quello. Dai a ogni progetto di terze parti la propria cartella e al suo interno inserisci un file LICENSE e README che spiega dove hai ottenuto e cosa puoi fare con esso.

Ad esempio:

/third_party/
    /WidgetLibrary1/
        README
        LICENSE
        /v1.0/
            ... all of its source

    /SuperAwesomeFramework/
        README
        LICENSE
        /v3.0/
        /v3.1/
            ... all of its source
/src/
    ... all of your source
    
risposta data 28.06.2012 - 05:13
fonte
2

Da un punto di vista tecnico, Git ha una funzione chiamata submodules che ti consente di incorporare una versione specifica di alcuni progetti esterni nel tuo repository. Altre persone che clonano il tuo repository riceveranno anche una copia della versione corretta del progetto esterno.

    
risposta data 28.06.2012 - 05:14
fonte

Leggi altre domande sui tag