Changes between Version 3 and Version 4 of Guidelines/MaintenanceGuidelines


Ignore:
Timestamp:
Nov 23, 2008, 12:14:51 AM (14 years ago)
Author:
viboes
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Guidelines/MaintenanceGuidelines

    v3 v4  
    1 Please be free to improve this page directly or post on the Boost mailing list.
     1[[PageOutline]]
     2
     3WARNING: The contents of this page is not the result of a consensus on the Boost community.
     4
     5Please 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].
    26
    37= Motivation =
     
    101105The main problem is that this warning will appear independently of whether the user code uses or not the deprecated feature. In order to palliate to this the inclusion of the deprecated feature could be accessible conditionally and only when included the warning will be reported or not.
    102106
    103 For compatibility purposes deprecated features should be included by default.
    104 If a user don't want to include a deprecated feature he/she can define one of the following macros:
    105 
    106 '''BOOST_DONT_INCLUDE_DEPRECATED''': don't include any deprecated feature.
    107 
    108 '''BOOST_DONT_INCLUDE_DEPRECATED_ON_X_Y''': don't include any deprecated feature to be removed on version X.Y.
    109 
    110 '''BOOST_LIBX_DONT_INCLUDE_DEPRECATED''': don't include any deprecated feature for library Boost.LIBX.
    111 
    112 '''BOOST_LIBX_DONT_INCLUDE_DEPRECATED_ON_X_Y''': don't include any deprecated feature for libarary Boost.LIBX  to be removed on version X.Y.
    113 
    114 '''BOOST_LIBX_DONT_INCLUDE_DEPRECATED_NAME''': don't include the deprecated feature name.
     107For compatibility purposes deprecated features should be included by default. So the library behaves as if the features have not been deprecated. If a user don't want to include a deprecated feature he/she can define one of the following macros:
     108
     109 * '''BOOST_DONT_INCLUDE_DEPRECATED''': don't include any deprecated feature.
     110
     111 * '''BOOST_DONT_INCLUDE_DEPRECATED_ON_X_Y''': don't include any deprecated feature to be removed on version X.Y.
     112
     113 * '''BOOST_LIBX_DONT_INCLUDE_DEPRECATED''': don't include any deprecated feature for library Boost.LIBX.
     114
     115 * '''BOOST_LIBX_DONT_INCLUDE_DEPRECATED_ON_X_Y''': don't include any deprecated feature for libarary Boost.LIBX  to be removed on version X.Y.
     116
     117 * '''BOOST_LIBX_DONT_INCLUDE_DEPRECATED_NAME''': don't include the deprecated feature name.
    115118
    116119Once one of this macros is defined the author can define another macro to make easier the work.
    117120
    118 '''BOOST_LIBX_NAME_DONT_DECLARED''': states that the deprecated feature name has not been declared
    119 
    120 
    121 Deprecated warning are not reported by default. If the user wants this deprecated warnings to appear he/she can define one of the macros:
    122 
    123 '''BOOST_WARMS_DEPRECEATED''': warms on all deprecated features
    124 '''BOOST_WARMS_DEPRECEATED_ON_X_Y''': warms on all deprecated features to be removed on version X.Y
     121 * '''BOOST_LIBX_NAME_DECLARED''': states that the deprecated feature name has been declared
     122
     123
     124Deprecated warning are not reported by default, so the library behaves as if the features have not been deprecated. If the user wants this deprecated warnings to appear he/she can define one of the macros:
     125
     126 * '''BOOST_WARMS_DEPRECEATED''': warms on all deprecated features
     127
     128 * '''BOOST_WARMS_DEPRECEATED_ON_X_Y''': warms on all deprecated features to be removed on version X.Y
    125129
    126130[wiki:Guidelines/MaintenanceGuidelines#delete_files See the examples below].
    127131
     132
     133
     134
     135
     136
    128137= Cross version testing =
    129138
    130139Running the regression tests from the _previous_ major release against the current release is a way to automatically detect and flag interface/behavioral changes. Sure, there are many potential problems with such an approach:
    131140
    132 - Some library tests are likely to also exercise code at the
    133 implementation/detail level.
    134 - Already limited testing resources (on the other hand, interface changes
    135 are likely to be detected by running such tests for a single, reasonably
    136 compliant, compiler).
    137 - ...
     141 * Some library tests are likely to also exercise code at the implementation/detail level.
     142 * Already limited testing resources (on the other hand, interface changes are likely to be detected by running such tests for a single, reasonably compliant, compiler).
     143 * ...
    138144
    139145In order to have the better we can preserve the test of the older releases and run them on the current release.
     
    141147= Versioning individual Boost libraries =
    142148
    143 This page do not contains any advice related to individual Boost libraries packaging. There is already a project working on that. But tagging individual Boost libraries with a specific version has already some advantages.
     149This page do not contains any advice related to individual Boost libraries packaging. There is already the CMake project working on that. But tagging individual Boost libraries with a specific version has already some advantages.
    144150
    145151
     
    149155Tagging each library release with a version, is the better way to signal to the user of possible incompatibilities.
    150156
     157For example the thread library could have:
     158
     159 * '''2.1.0''' Changes since boost 1.35
     160
     161 * '''2.0.0''' Changes since boost 1.34
     162
     163 * '''1.0.0''' Initial release on 1.25
     164
    151165== Create a Feature Request ticket for each deprecated/suppressed/modified/new  feature [author, user] ==
    152166Each modification should be tracked with a ticket on the track system.
    153 
    154167
    155168== Release note and track system traceability [author] ==
     
    158171    * the list of all deprecated/suppressed/modified/new features with its associated ticket.
    159172
     173For example the thread library could have (#XXXX should be replaced by the trac tickets):
     174 * '''2.1.0''' Changes since boost 1.35
     175    * #XXXX: New generic lock()  and try_lock()  functions for locking multiple mutexes at once.
     176    * #XXXX: Rvalue reference support for move semantics where the compilers supports it.
     177    * A few bugs fixed and missing functions added (including the serious win32 condition variable bug).
     178        * #XXXX: bug1
     179        * ...
     180        * #XXXX: bugn
     181    * #XXXX: scoped_try_lock types are now backwards-compatible with Boost 1.34.0 and previous releases.
     182    * #XXXX: Support for passing function arguments to the thread function by supplying additional arguments to the boost::thread constructor.
     183    * #XXXX: Backwards-compatibility overloads added for timed_lock and timed_wait functions to allow use of xtime for timeouts.
     184
     185
     186
    160187== Include a diff file showing the modification respect to the previous release [author, RM] ==
    161188This file is the explicit report of all the changes in the library. It could be used by the Boost community to inspect that every change has been correctly documented (see inspections bellow).
     189
     190== Trac ticket => test cases association [author] ==
     191
     192Each feature request or bug should have associated at least a test case. A table showing this association will help to check that each feature,bug is has the expected test coverage.   
     193
     194||Ticket||Synopsis||Test Case||
     195||#XXXX||foo foo foo bar bar bar ||test_foo_bar||
     196
     197
    162198
    163199= Codding =
     
    215251 || defined(BOOST_LIBX_DONT_INCLUDE_DEPRECATED)  || defined(BOOST_LIBX_DONT_INCLUDE_DEPRECATED_ON_1_41) \
    216252 || defined(BOOST_LIBX_DONT_INCLUDE_DEPRECATED_NAME)
    217   #define BOOST_LIBX_NAME_DONT_DECLARED
    218253#else
     254  #define BOOST_LIBX_NAME_DECLARED
    219255  #if defined(BOOST_WARMS_DEPRECEATED) || defined(BOOST_WARMS_DEPRECEATED_ON_1_40)
    220256    #warning "name is deprecated, please use new_name instead"
     
    231267}}}
    232268
    233 When the declaration should not been included, the author could define a BOOST_LIBX_NAME_DONT_DECLARED, which could be used on the class/function/variable definition. E.g.
     269When the declaration should been included, the author could define a BOOST_LIBX_NAME_DECLARED, which could be used on the class/function/variable definition. E.g.
    234270
    235271{{{
     
    239275namespace libx {
    240276
    241 #if defined(BOOST_LIBX_NAME_DONT_DECLARED)
    242 #else
     277#if defined(BOOST_LIBX_NAME_DECLARED)
    243278  name::name() {
    244279    // as before
     
    255290Instead of modifying an existing function prototype, do as you were deleted it and added the new one. As both prototypes should cohabit during some releases, check if this overloading could cause user code breaks.
    256291
    257 
    258 
     292== Remove the deprecated features on a given release [author] ==
     293Once the deprecated period is expired the author should remove them.
    259294
    260295= Test and Inspections =