Changes between Version 12 and Version 13 of Guidelines/MaintenanceGuidelines
- Timestamp:
- Jun 13, 2009, 11:43:46 PM (13 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Guidelines/MaintenanceGuidelines
v12 v13 3 3 '''MAINTENANCE GUIDELINES''' 4 4 5 WARNING: The contents of this page is not the result of a consensus onthe Boost community.6 7 Please be free to improve this page directly or post on the Boost mailing list[mailto:boost-AT-lists.boost.org] and [mailto:boost-users-AT-lists.boost.org].5 WARNING: The contents of this page are not the result of a consensus of the Boost community. 6 7 Please feel free to improve this page directly or post on the Boost mailing lists [mailto:boost-AT-lists.boost.org] and [mailto:boost-users-AT-lists.boost.org]. 8 8 9 9 ----------------------------------------------------------------------------------------------- … … 13 13 ----------------------------------------------------------------------------------------------- 14 14 = Introduction = 15 Nobody wants to completely disallow changes , we need them.15 Nobody wants to completely disallow changes. We need them. 16 16 17 17 Everybody wants to avoid breaking changes, but sometimes these are also necessary. 18 18 19 This page describes guidelines that could help the Boost community to get stable libraries and as consequence '''to avoid user code breaking when the user upgrades to a more recent Boost release'''.20 21 The difference between '''breaking changes''' and '''bugs''' concerns documentation. A documented modification breaking user code cannot be considered a s abug while the same undocumented modification could be a bug.19 This page describes guidelines that could help the Boost community to get stable libraries and as a consequence '''to avoid user code breaking when the user upgrades to a more recent Boost release'''. 20 21 The difference between '''breaking changes''' and '''bugs''' concerns documentation. A documented modification breaking user code cannot be considered a bug while the same undocumented modification could be a bug. 22 22 23 23 ----------------------------------------------------------------------------------------------- 24 24 == User code breaking cases == 25 But why can user code break when the user upgrades to a more recent Boost release. 26 While this do not pretends to be exhaustive, some examples are given. 27 28 * '''Syntactical''' breaking: detected at compile time 25 Why can user code break when the user upgrades to a more recent Boost release? 26 Here are some examples which demonstrate the most common problems, although they 27 do not pretend to be exhaustive. 28 29 * '''Syntactic''' breaking: detected at compile time 29 30 It is evident that the removal of files, namespaces, classes, function, variables or macros could break user code. What it is less evident is that the addition of namespaces, classes, functions, variables at the namespace level or macros can also break user code. Note that 30 31 modifications can be considered as deletion+addition. … … 83 84 84 85 Adding macros 85 We shouldn't have user code breakingif we preserve the macro naming rule BOOST_LIBNAME_NAME.86 87 * '''Semantic al''' breaking: detected at runtime88 Some times the user code will compile with the upgraded Boost release, but the code will not behave as before. The kind of changes that could lead to this situation must be over documented because the compiler can not help the user to catch the breakingcode.86 Use code should not break if we preserve the macro naming rule BOOST_LIBNAME_NAME. 87 88 * '''Semantic''' breaking: detected at runtime 89 Sometimes user code will compile with the upgraded Boost release, but the code will not behave as before. Changes that can lead to this situation must be documented particularly prominently because the compiler can not help the user to catch the broken code. 89 90 90 91 The following code example … … 114 115 115 116 116 These guidelines are not only addressed to the Boost library developers, but also to the users and the release manager team (RM). Every member of the Boost community has his role to play. Note that the author plays also the role of user of all libraries on which his library depends and on his library depends and on its own library when writing the library tests.117 118 119 The key issue to get stable libraries are:120 * Versioning individual Boost .Libraries.117 These guidelines are not only addressed to Boost library developers, but also to users and the release manager team (RM). Every member of the Boost community has his role to play. Note that the author also plays the role of a user of all the libraries on which his library depends and of his own library when writing the library tests. 118 119 120 The key issues to get stable libraries are: 121 * Versioning individual Boost libraries. 121 122 * Using a deprecation period to give users notice that a breaking change is coming. 122 123 * Documenting and tracking the changes.