Changes between Version 7 and Version 8 of FRP


Ignore:
Timestamp:
07/23/10 07:12:18 (14 years ago)
Author:
Samuli Seppänen
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • FRP

    v7 v8  
    1  = The Feature Removal Process (FRP) =
     1= The Feature Removal Process (FRP) =
    22
    3  == Overview ==
     3== Overview ==
    44
    5 The initial process was drafted in the [wiki:IrcMeetings IRC meeting] on 18th Feb 2010. It has since been discussed in detail on the  [http://sourceforge.net/mailarchive/forum.php?forum_name=openvpn-devel devel mailinglist] in the ''"[PATCH v2] Do not randomize resolving of IP addresses in getaddr()"'' thread.
     5The initial process was drafted in the IRC meeting on [http://sourceforge.net/mailarchive/attachment.php?list_name=openvpn-devel&message_id=4B7E88AC.9030701%40openvpn.net&counter=1 18th Feb 2010]. It has since been discussed in detail on the  [http://sourceforge.net/mailarchive/forum.php?forum_name=openvpn-devel devel mailinglist] in the ''"[PATCH v2] Do not randomize resolving of IP addresses in getaddr()"'' thread. In the IRC meeting on [wiki:IrcMeetings 22nd July 2010] it was decided to simplify the FRP somewhat by removing the "display a runtime warning" phase.
    66
    77 1. '''Ask users if they are depending on a feature considered for deprecation''' (e.g. using the openvpn-users mailing list)
    88  * If users complain, discuss the issue and possible solutions with them
    99  * If there are no complaints, proceed to 2
    10  1. '''Warn the user about feature deprecation on application startup'''. The deprecated code itself can also output a warning itself, depending on how often it's triggered. The warning can be a simple log message (e.g. "WARNING: this feature is being deprecated and will be removed soon"). The deprecated code will still be enabled by default.
     10 1. '''Make the feature disabled by default, but allow enabling it at compile-time'''
    1111  * If users complain now, discuss the issue and possible solutions with them
    1212  * If there are no complaints, proceed to 3
    13  1. '''Make the feature disabled by default, but allow enabling it at compile-time'''
     13 1. '''Remove the feature entirely from the code'''
    1414  * If users complain now, discuss the issue and possible solutions with them
    1515  * If there are no complaints, proceed to 4
    16  1. '''Remove the feature entirely from the code'''
    17   * If users complain now, discuss the issue and possible solutions with them
    18   * If there are no complaints, proceed to 5
    1916 1. '''Finished.''' The feature was not really important to anyone and is not cluttering the code anymore.
    2017
    21  == Overview over features undergoing FRP ==
     18== Overview over features undergoing FRP ==
     19
    2220The [https://community.openvpn.net/openvpn/query?status=accepted&status=assigned&status=new&status=reopened&group=severity&order=priority&col=id&col=summary&col=status&col=owner&col=milestone&col=component&col=version&col=changetime&report=9&type=FRP+-+Feature+Removal+Process Feature Removal Process] view found under [https://community.openvpn.net/openvpn/report View Tickets] contains a list over all features going through this process.
    2321
    24  == Moving features "down the ladder" ==
     22== Moving features "down the ladder" ==
    2523
    26 It is probably easiest move features down the ladder (see steps in above paragraph) is when new stable releases are made. This allows users to be certain that no features they use are removed without a warning and time to react. Assuming one release takes ~12 months and a feature is deprecated in "testing" just ''after'' a stable release is made, it will stay in the code for
     24It is probably easiest move features down the ladder (see steps in above paragraph) is when new stable releases are made. This allows users to be certain that no features they use are removed without a warning and time to react. Assuming a feature is deprecated just ''after'' a stable release is made, it will be available for quite a while:
    2725
    28  * 12 months (in testing, outputs a runtime warning)
    29  * 12 months (in stable, outputs a runtime warning)
    30  * 12 months (in stable + 1, disabled but available)
     26 * enabled by default in release + 0
     27 * disabled but available in release + 1
     28 * remove in release + 2
    3129
    32 So it'll take 24 - 36 months to get rid of a feature, depending on when (in the release cycle) it's deprecated. There are ways to speed up the
    33 process. We can, for example, have two processes depending on feature type:
     30There are ways to speed up the process. We can, for example, have two processes depending on feature type:
    3431
    3532 1. Longer process for features we know people depend on, but which '''need''' to be removed nevertheless (for whatever reason)
    3633 1. Shorter process for features somebody _might_ use - like the randomization feature discussed earlier
    3734
    38 The full FRP with steps 1-4 would suit type 1 features. Type 2 features could skip step 3 (''"disabled but available"'')
    39 to save time. It should be relatively easy to spot type 1 features: a mail to the -users mailing list should trigger loud complaints if a
    40 feature is widely used. Also, users have plenty of time to react to the warnings during the 12-24 month period.
     35The full FRP with steps 1-3 would suit type 1 features. Type 2 features could skip the "disabled but available" step to save time. It should be relatively easy to spot type 1 features: a mail to the -users mailing list should trigger loud complaints if a feature is widely used. Also, users have plenty of time to react to the warnings.
    4136
    42  = What to do - code wise =
     37= What to do - code wise =
    4338
    4439It important that each feature deprecation / removal is documented visibly in the release notes of each stable release.
    4540
    46  == First phase: Disable the feature on request ==
     41== First phase: Disable the feature on request ==
    4742
    4843 * Remove the feature by using #ifdef's wherever this feature is called or executed in the source code