È una buona idea costruire una libreria sulla libreria di qualcun altro?

5

È una buona idea usare la libreria di qualcun altro come base e creare la tua libreria su quella.

Voglio creare un framework JavaScript Canvas per un player di animazione su KineticJS. Dovrei farlo? Ho bisogno dell'autorizzazione dell'autore di KineticJS? Devo solo dire agli utenti di scaricare KineticJS prima della mia biblioteca, o semplicemente copiare il codice kineticJS nella mia libreria?

    
posta Joe Slater 04.04.2013 - 22:29
fonte

4 risposte

7

Vedo due prospettive per questo:

Legal: puoi farlo? Non vedo ragioni per cui tu non possa. So che ci sono alcune leggi / regole sul raggruppamento di librerie di altre persone, ma probabilmente si tratterebbe solo di librerie proprietarie o di licenze che hanno regole molto specifiche per includerle in altri progetti (come nel caso di una società a cui ho lavorato). Non sono a conoscenza di motivi legali per cui non puoi chiedere al tuo utente finale di scaricarlo se stessi ; Credo che Ubuntu abbia risolto questo problema semplicemente facendo scaricare manualmente i driver agli utenti finali.

Design: dovresti farlo? Una volta mi sono imbattuto in un problema utilizzando una libreria e stavo ottenendo un errore molto strano che non aveva senso per me. Si scopre che l'errore derivava dal fatto che la libreria che stavo usando dipendeva da un'altra libreria a cui non si faceva riferimento correttamente.

Quindi, se si utilizza la libreria KineticJS, assicurarsi che, se non includono la libreria, si lanci un errore che indichi che manca la libreria KineticJS.

    
risposta data 04.04.2013 - 22:43
fonte
12

Certo, puoi costruire la tua libreria su quella di qualcun altro. Le persone lo fanno sempre!

Non dovresti avere il permesso dell'autore della libreria di base di farlo (perché stai solo facendo riferimento al loro codice), ma potresti aver bisogno del loro permesso se vuoi ridistribuire la propria libreria con la propria. Ciò influenzerà il modo in cui i tuoi utenti ottengono la libreria di base: se ti è consentito ridistribuire, allora va tutto bene. In caso contrario, dovrai indirizzarli verso la posizione in cui possono scaricare la libreria di cui hanno bisogno.

    
risposta data 04.04.2013 - 22:34
fonte
0

Per pensarci dall'altra parte:

A meno che tu non stia scrivendo assembly sul bare metal, sei garantito per richiedere altre librerie, ad es. le librerie standard C, le librerie del sistema operativo, i toolkit della GUI, ecc. Da qualche parte lungo la catena di esecuzione, il tuo codice coinvolgerà diverse altre librerie.

Costruire sul lavoro degli altri è un aspetto fondamentale del riutilizzo del codice e non farei molto progresso se ogni singolo progetto dovesse ricominciare da zero.

Quindi, dovresti scegliere se utilizzare KineticJS nello stesso modo in cui utilizzi una determinata lingua, sistema operativo, ecc.

    
risposta data 05.04.2013 - 16:56
fonte
0

Costruire un progetto su una libreria non è mai gratuito, inclusa una libreria significa anche includere gli errori di quella libreria e le dimensioni del download.

A volte si può essere in grado di considerare la libreria un pezzo di codice indipendente che non ha bisogno di manutenzione e non conta realmente per la complessità del progetto, ma spesso non è così. Come sviluppatore professionista, l'unico modo in cui posso davvero giustificare l'uso di una piccola libreria trovata su Internet è se mi occupo di quel codice come se fosse il mio. Forse lo sviluppo originale risolverà un bug se trovo uno, forse non lo farà e dovrei farlo.

In definitiva una libreria inclusa fa parte della base di codice e come tale conta in modo negativo come qualsiasi altro codice. Può essere un buon codice relativamente privo di bug con un'interfaccia pulita che quindi non ha un peso molto relativo alle sue dimensioni, ma il peso non è mai pari a zero.

Se la libreria A dipende dalla libreria B quindi includere la libreria A nel mio progetto aggiunge implicitamente il peso di entrambe le librerie.

Desideri sempre che una libreria sia il più leggera possibile, inclusa un'altra libreria che funzionerà quasi sempre contro questo obiettivo. In alcuni casi questo sarà un piccolo extra aggiunto per un grande vantaggio nel lavoro salvato, in altri casi è molto importante per pochissimi benefici.

Conclusione

Di solito dovresti evitare le dipendenze della libreria nelle librerie, ma ci sono casi in cui il rapporto costo / guadagno è basso ed è accettabile. Le seguenti condizioni, in generale, rendono più accettabile l'uso di una sotto-libreria:

  • La libreria utilizzata è diffusa e generalmente ha pochi bug ed è ben supportata.
  • Viene utilizzata tutta o la maggior parte delle funzionalità della libreria, se la funzionalità necessaria dovesse essere reimplementata, la dimensione combinata del codice non sarebbe molto più piccola per essa.
  • La libreria si occupa di problemi che sarebbero difficili da risolvere senza di essa.
risposta data 05.04.2013 - 18:30
fonte

Leggi altre domande sui tag