La modifica in questo caso è qualsiasi cosa che non sia una modifica banale al codice sorgente.
Quindi quali sono alcuni esempi di cambiamento banale ?
- Lo spazio bianco cambia solo o altra formattazione come interruzioni di riga.
- Ridenominazione delle variabili
- Rinominare un file o un modulo
Si noti che le modifiche insignificanti non fanno nulla per il flusso programmatico dell'applicazione.
Le modifiche non banali includeranno:
- Flusso algoritmico di rielaborazione
- Aggiunta di funzionalità (registrazione, tracciamento, miglioramenti)
- Correzioni di bug
Si noti che le modifiche non banali sono additive o che influenzano il flusso del programma.
Tuttavia, ci sono alcune aree grigie . Ad esempio, il refactoring di un metodo estraendo alcune parti potrebbe non essere banale. Dipende dalla complessità dell'estrazione e da ciò che deve essere riorganizzato per supportare l'estrazione. Allo stesso modo, estraendo cut & incollare blocchi di codice in un singolo metodo richiede alcune analisi per determinare se non è banale.
Quindi affrontiamo le tue domande.
Reading the original sources and then re-implementing a custom way.
Ho intenzione di andare con non banale e quindi una modifica al codice originale. L'aspetto chiave qui è re-implementing [in] a custom way
. Non era una copia & incolla l'esercizio; hai dovuto fare uno sforzo significativo per implementare e validare il tuo lavoro.
Reading the original sources, waiting for a year and then re-implementing something based on whatever you could remember.
Difficile da dire, e potrebbe andare in entrambi i modi. "Tempo di attesa" non ha nulla a che fare con il determinare se la modifica fosse banale o meno. Ad esempio, potresti avere una memoria fotografica ed essere quindi in grado di riscrivere il codice letteralmente dalla memoria. È un'impresa impressionante, ma non si qualificherebbe come una modifica. D'altra parte, si potrebbe finire con una completa riscrittura degli algoritmi e quindi hanno creato un cambiamento non banale.
Direct and very significant "complete" refactoring of the original sources.
Sicuramente una modifica del codice originale. Complete refactoring
implica ri-organizzare quantità significative di codice e alterare il flusso del programma.
Trovandoti alla periferia della tua domanda, perché ti interesserebbe tanto sapere se una modifica conta o meno come una modifica. Se apporti una modifica non banale al codice, allora possiedi il copyright di quella modifica. E anche se la licenza BSD ti dà praticamente libero di fare qualsiasi cosa con il progetto originale, se hai riscritto l'intero progetto puoi rivendicare tutti i diritti d'autore del nuovo progetto.
La cortesia suggerirebbe di riconoscere il precedente progetto come ispirazione, ma non sei legalmente obbligato a farlo una volta che hai completamente riscritto un progetto. E se non hai completamente riscritto il progetto, allora dovrai rispettare le clausole della licenza BSD.