Hi Barton,

I usually follow the same pattern for the commit messages when I remove a subroutine from C4.
We could list them (something like `git log|grep "Move (.*) to Koha::*"`) for each release then provide a script to catch removed subroutine.
However it will not help to know in advance (version N-1) if the plugin will still work.
I do not think it will help much to have the deprecated function, we change the prototype of our subroutines very often, that will also break the plugin. I should also add that when a sub is removed it's not only moved to Koha, code from callers is adjusted and completely different. It cannot be done in some cases I think.

The best still is to have a good test coverage for the plugin ;)

Cheers,
Jonathan


On Fri, 22 Jun 2018 at 17:52 Barton Chittenden <barton@bywatersolutions.com> wrote:
It would be useful for Koha to have a 'Deprecated' function, which would send a warning about the caller() function and the version of Koha where the function will be deprecated, and what it will be replaced by... so let's say that C4::Adequate::DoEET() is being replaced by Koha::Awesome->sauce(). in Koha 18.11.

In versions of koha prior to 18.11, we add a call to

deprecated( "18.11", "Koha::Awesome->sauce()");

at the beginning of C4::Adequate::DoEET(). 

Then, when C4::Adequate::DoEET() is called, this would generate the following message in the logs:

"C4::Adequate::DoEET is deprecated and will be removed in Koha 18.11. It will be replaced by Koha::Awesome->sauce()."

This would allow plugin authors to know that they will need to patch their plugins before they break on upgrade.

This is a bare-bones implementation of deprecated():

sub deprecated {
    my ( $version, $replacement ) = @_;
    my (
        $package, $filename, $line, $subroutine, $hasargs,
        $wantarray, $evaltext, $is_require, $hints, $bitmask, $hinthash
    ) = caller(1);
    warn( 
        "${subroutine} is deprecated and will be removed"
         . " in Koha version $version."
         . defined( $replacement ) 
            ? " It will be replaced by ${replacement}."
            : ""
    );
}


_______________________________________________
Koha-devel mailing list
Koha-devel@lists.koha-community.org
http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-devel
website : http://www.koha-community.org/
git : http://git.koha-community.org/
bugs : http://bugs.koha-community.org/