How to declare backward incompatible changes in an OSS project?

Sometimes you need to introduce backward incompatible changes when the improvements far outweigh the flaws. You can easily switch to the old behavior, but the user should be aware of such changes.

Therefore, the question arises: how to report future incompatible changes to the FLOSS project (open source) so that users can prepare for them and either change their use or configure the program to use old behavior.

Since this is an OSS project, it is packaged independently by various distributions and can be automatically updated without user intervention. And then backward incompatible changes can ruin somebodys workflow (like third-party scripts).

Currently reviewed (and used):

  • project mailing list
  • project homepage
  • release notes (first warning, then announcement)
  • support blog

Edit 1: This (backward incompatible) change will happen in some major release.

All changes concern either the addition of precautionary measures (abandonment of commands that can completely confuse novice users), or changing the default values โ€‹โ€‹for more significant values.

Edit 2: During the transition period, the default configuration (which should be changed to fail / fail by default) changes to a warning, describing how to enable the warning, which also protects against lagging incompatible changes in the default behavior.

But if it is an automatic system that may not help ...


, , Git, .
. gitster journal ( )

+3
5
  • .
  • readme
  • , , DB .
  • , , .. .
  • Q/A, , , ,

- 1.x 2.x, , .

-Adam

+9

, . , . , .

, , , , . - :

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

RSS ( ), Twitter ( ), ( 3 ), ( , ) , . , .

( , )

+1

.

, :

, , , , (, , script), stderr. stderr ( ) , , .

stderr , , ( ) . ( ), (stderr warnings) , , , (. ) , , . , , , , , .

, , , , , , .

, script /, intellisense, . ( , ) , , runtime MissingMethodException - .

+1

Only my $ 0.02. Modern development environments (in particular. NET) provide a means of reporting to the developer that some APIs are deprecated / deprecated and will be removed in future versions. The Microsoft C / C ++ compiler has # pragma deprecated .

If this is not supported in your environment, rely on versioning to provide feedback.

-1
source

Source: https://habr.com/ru/post/1703351/


All Articles