Qual è un buon modo per deprecare i moduli NPM?

1

Uno dei miei moduli NPM è, francamente, piuttosto zoppo, non ha funzionato da anni, non ha guardiani, non ha stelle e solo ~ 50 download al mese. Lo abbandonerò e alla fine lo cancellerò in modo da non ingombrare la mia pagina github. Nel caso in cui ci sia un progetto al mondo che fa affidamento su di esso, c'è un buon modo per farlo sapere agli utenti? Qualche frase standard per il file README?

"Libero di andare a casa"?

    
posta user949300 28.11.2016 - 12:42
fonte

2 risposte

3

TL; DR: Non uccidere un cucciolo, darlo in adozione invece.

Il punto di pubblicazione di una biblioteca non è la fama e la gloria. Il punto sta contribuendo con alcune funzionalità utili. Dato che hai pubblicato il tuo lavoro in un gestore di pacchetti, hai permesso ad altri di dipendere da esso.

Il numero di stelle e download è irrilevante. In genere, molte dipendenze sono nascoste, non pubbliche e molti utenti non dispongono di un account che consenta loro di presentare il proprio progetto. Anche se avessero un account, potrebbero non voler associarsi pubblicamente al tuo progetto. Non ottieni nulla eliminando il pacchetto, ma causi un grosso mal di testa per i tuoi utenti, anche se esiste un solo utente.

Una cancellazione è sensata solo in tre casi:

  • Sei costretto a rimuovere il codice per motivi legali, ad es. se hai pubblicato materiale che non ti è stato permesso di pubblicare.

  • Ti vergogni del progetto. È di una qualità così abissale o è uno scherzo di cattivo gusto, e tu non vuoi essere associato ad esso. Un progetto che nessuno usa sarebbe neutro o positivo, ma un modulo così orribile avrebbe effetti negativi notevoli per una ricerca di lavoro.

  • Il codice è fondamentalmente rotto a livello di progettazione. Non è possibile utilizzare il codice in modo sicuro e metterebbe gli utenti in pericolo.

Questi punti non sembrano essere applicati qui. Quindi non vuoi mantenere il modulo, dal momento che non sembra molto gratificante. Va bene. Pubblicare qualcosa come open source non ti obbliga a investire più nel progetto di quanto tu voglia; è perfettamente OK interrompere qualsiasi manutenzione. In tal caso, non cancellarlo, ma sii onesto con i potenziali utenti.

Se il modulo non è semplicemente ottimo, ma sai di alternative migliori, collegalo a loro dal tuo README e tutte le pagine di destinazione pertinenti.

Status of this module

This module is deprecated. Please use other-module instead. It is more mature, better tested, and offers additional-features. That project doesn't have missing-feature, but you can use workaround.

Se non vuoi effettuare ulteriori interventi di manutenzione, dillo:

Bugs

This project is no longer being maintained, and I'm no longer fixing bugs. Please contact me if you want to adopt this project. You can also fork it on GitHub.

Gli avvisi di deprecazione di runtime dovrebbero essere evitati poiché sono una misura molto drastica. Mentre hanno più visibilità di un paragrafo aggiuntivo nella tua documentazione, dovrebbero essere usati solo se qualcosa riguarda la rottura in una versione imminente. Dal momento che non ci sono versioni future nel tuo caso, tali avvisi non hanno alcun senso. Si noti inoltre che tali avvisi saranno invisibili se gli utenti hanno memorizzato nella cache una versione specifica del modulo in un registro dei moduli personale, come sarebbe sensato.

Un tipico modulo di nodo è molto piccolo. Non stai pagando NPM o GitHub di spazio di archiviazione significativo o larghezza di banda con il tuo progetto. Il tuo profilo utente GitHub elenca solo i tuoi repository più popolari, quindi l'eliminazione di quelli non popolari non la disorienta. Non faresti niente - NPM, i tuoi utenti o la tua reputazione - un favore cancellando completamente il tuo modulo.

    
risposta data 28.11.2016 - 18:10
fonte
2

Ecco un paio di cose che vedo le persone fanno per qualsiasi progetto:

  • Rilascia una versione patch che emette un enorme avvertimento nella console che questo progetto è deprecato e non verrà fornito ulteriore supporto quando si interrompe.

  • Avvisi enormi in README.md per riflettere la deprecazione. Reason può essere scritto README.md, su un problema o sul wiki.

  • Imposta repo reindirizza quando vuoi eliminare il repository.

  • A volte le persone lasciano il repository intatto come riferimento storico e non per rompere l'intero ecosistema. Non vuoi essere il prossimo tasto sinistro.

Ecco alcuni buoni esempi:

  • link (avvisa che è stato rinominato in pug, repo reindirizza a pug)
  • link (lasciato intatto per scopi storici, spiegazione in questione)
  • link (lasciato intatto a fini storici)
risposta data 28.11.2016 - 14:29
fonte

Leggi altre domande sui tag