Frage

Manchmal müssen Sie vorstellen rückwärts incompatibile ändert sich, wenn die Verbesserungen überwiegt bei weitem die Nachteile.Es ist leicht möglich, wechseln Sie zum alten Verhalten, aber der Benutzer muss sich bewusst sein, diese änderungen.

Daher die Frage: wie zu verkünden Zukunft rückwärts inkompatible änderungen an ZAHNSEIDE (open source -) Projekt, so dass die Benutzer können vorbereiten für Sie, und ändern Sie deren Verwendung zu konfigurieren, das Programm zu verwenden alte Verhalten.

Denn es ist ein OSS-Projekt, es ist verpackt durch die verschiedenen Distributionen unabhängig und kann aufgerüstet werden, automatisch ohne eingreifen des Benutzers.Und dann rückwärts inkompatible änderung könnte irgendein Durcheinander workflow (third-party-Skripte für Beispiel).

Wege, die derzeit als (und verwendet):

  • Projekt mailing-Liste
  • Projekt-homepage
  • release notes (erste Warnung, dann Ankündigung)
  • maintainer ' s blog

Bearbeiten 1: Diese (rückwärts-inkompatible) ändern würde passieren, in einigen major release.

Alle änderungen sind über das hinzufügen von Schutzmaßnahmen (Verweigerung von Befehlen, die kann gründlich verwirren Neuling Benutzer), oder die Standardeinstellungen ändern, um mehr vernünftige Werte.

Edit 2: In der übergangszeit die Standard-Konfiguration (was soll geändert werden, um Standard-refuse/deny) geändert wird warnen, mit Anleitung zum verwandeln einer Warnung, die auch Schutz gegen rückwärts incompatibile änderung im Standardverhalten.

Aber wenn es automatisiertes system, dass könnte nicht helfen...


Das Projekt in Frage Git, distributed version control system;
finden Geben frühen Warnung, um die Benutzer am gitster s journal (Junio C Hamano blog)

War es hilfreich?

Lösung

  • Ändern Sie den major der Versionsnummer
  • Melden Sie es durch alle Wege zu Ihrer Verfügung
  • Fügen Sie Prominente Ankündigung in readme
  • Fügen Sie code hinzu, wandelt zwischen den alten und neuen ob DB oder sonstige Veränderungen erforderlich sind
  • Code hinzufügen, der erkennt die Nutzung abgeschrieben Methoden, Daten Lagerung, etc und warnt den Benutzer vor der Durchführung der destruktiven Veränderungen
  • Fragen relevant FAQ geben Sie Fragen, die auf großen F/A-websites, so dass, wenn die Menschen fragt, ist die Antwort sofort und offensichtlich mit einer einfachen Suche

Aber die major-Versionsnummer ist das primäre Ziel - die Menschen erwarten, dass 1.x 2.x übergänge zu Problemen führen und sind Sie vorsichtig beim Upgrade.

-Adam

Andere Tipps

Du hast gute Antworten über das Wort heraus bekommen.Aber die Migration mein eigenes mindset ist das größte Problem für mich, besonders, wenn die veralteten Funktionen in meine Muskel-Speicher.Verlernen ist schwieriger als das lernen.

Erste Warnungen vor kommenden incompatibilites wenn ich tatsächlich mit dem Befehle, ändern, besonders hilfreich ist, vor allem mit änderungen in den Standardeinstellungen.Etwas wie:

 $ git foo  
 Note: git foo currently defaults to HEAD. Starting with
 version 2.0, git foo will instead default to master.

Ich könnte gehen für RSS (wenn vorhanden), Twitter (wenn vorhanden), Mailinglisten (E-mail mindestens 3 mal, als das update ist Schluss), homepage (machen Sie es sehr gegensätzliche, so es ist leicht zu sehen) und blog, natürlich.release-notes sind kaum Lesen, so nehmen Sie es als das Letzte point-of-information.

(Ich habe dies geschrieben, als erste Antwort, aber nicht zeigen, bis)

Alle oben genannten plus.

Wenn Sie eine ändern, wenn:

Die genaue syntax einer nicht destruktiven Befehl ändern, um eine zerstörerische Befehl

Ich sehe keine Möglichkeit, dass der Wechsel statt mehr disruptive zum Rendern der alte Befehl vollständig ungültig sein, so dass wenn ein Benutzer aktualisiert und versucht (oder ganz eventuell ein Skript versucht) den old-style-Befehl beendet sich mit einer Fehlermeldung auf stderr.Mit stderr für Warnmeldungen auf Befehle, mit subtilen (oder nicht so subtile) änderungen, die nicht destruktiv ist auch eine gute Idee.Die definition von destruktiv ist etwas komplexer ist auf einem Quell-repository

Mit stderr Warnungen für einfache veralteten Methoden ist oft gut, aber einige Leute werden sich darüber beschweren, es bricht Ihren (schlecht geschrieben) - Skripts.In diesen Fällen ist eine leise Missbilligung release (alle nicht invasiven Formen der Missbilligung), gefolgt von einer mündlichen (stderr Warnungen) release folgte vielleicht (siehe unten) mit einem nicht-funktional, sondern vorliegenden Veröffentlichung folgte dann durch die totale Entfernung.Diese Letzte nicht-funktionale Version ist stark abhängig vom Projekt in Frage, es könnte mehr ärger als es Wert ist, vor allem für diejenigen Benutzer, die sind gut erzogen und halten bis zu Datum auf veraltete Funktionalität.

Da die spezifische änderung, die Sie verweisen, ist das entfernen des eingebauten ins, die dies in Ordnung sein sollte, hätte ich wahrscheinlich nicht getan haben, eine Version mit den eingebauten ins, die in einem nicht-funktionale mode, aber ich weiß nicht, das Projekt gut genug, um sicher sagen.

Hinweis code anstatt Skript-Ebene änderungen ist es möglich, in viele moderne Sprachen lassen in Methode stubs mit Parametern/Anmerkungen, die völlig blenden Sie Sie aus, intellisense sowie weigern, gegen den Sie kompilieren Sie Sie.Dies macht Ihre Gegenwart (mit einem einfachen, Ausnahme falls verwendet) ein sehr schöner Weg, um herauszufinden, können Sie nicht verwenden Sie Sie als eine runtime-MissingMethodException oder was auch immer.

Nur meine $0,02.Moderne Entwicklungsumgebungen (insbesondere .NET) als Mittel der Berichterstattung an die Entwickler, dass bestimmte APIs deklariert sind veraltet/deprecated und wird in der Zukunft entfernt werden-Versionen.Microsoft C/C++ - compiler #pragma deprecated.

Wenn all dies in Ihrer Umgebung unterstützt wird, verlassen sich auf Versionierung um bieten compat feedback.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top