Patrick and Pali, each of you please respond to the lists to confirm that what I say below is what you also understand is the primary plan, and if not, then say why not; in prior discussion I recall you agreed with it.

Assuming they agree, the concerns of Night Light and those he is speaking for should be handily satisfied.

The whole discussion on the mailing lists that I recall and participated in seemed to consensus on branching DBD::sqlite in order to best satisfy the needs of all stakeholders.

There would be one version control with 2 active release branches.

A maintenance branch would exist starting from the 4.041/3 release on which further stable releases named DBD::mysql 4.x would be made, and the primary goal of this branch is to not break/corrupt anything that relied on 4.041 behavior. So people with legacy projects that just use DBD::mysql and made particular assumptions on its handling of Unicode or Blobs etc won't have corruption introduced because DBD::mysql changed its handling of those things. People without knowledge of CPAN or the development process will get something that just continues to work for them and doesn't corrupt. For all intents and purposes this branch would be frozen but could have select security or bug fixes that comply with the mandate and don't involve changing Unicode etc.

The master branch would then have all the short term breaking changes including the 4.042 Unicode fixes and would have all the significant feature changes including compatibility with newer MySQL major versions. All of its releases would be under a new namespace such as DBD::mysql2 and start at version 5.0 to signify that large changes happened which might possibly break code or cause corruption if user code doesn't specifically account for the differences. Being a different name this is strictly opt-in, so the only ones using DBD::mysql2 are those that explicitly opted in to it, and by doing so they also opted in to fixing anything with their code that needed fixing to not corrupt data while using it.

The concept of having a single driver with toggled behavior eg a mysql_enable_proper_unicode flag was already rejected as unwieldy to implement, especially for such deep rooted changes as properly handling Unicode.

Note that I expect that most other higher-level projects that use MySQL would NOT branch like this, instead having internal logic or their own toggle to work with DBD::mysql vs DBD::mysql2, or a few may branch, but the key thing is that branching DBD::mysql does NOT necessitate doing so in the rest of the ecosystem.

-- Darren Duncan

On 2017-11-07 12:07 PM, Night Light wrote:
Proposed, but no made decisions posted afterwards.

The last proposal is to re-commit the rejected 4.042 changes into the 4.043
master branch and only work on fixes that came after June.

The git issue that regards improperly encoding of BLOBs is opened on April 6th
(hence me sending the message to prevent a recurring cycle).

https://github.com/perl5-dbi/DBD-mysql/issues/117

On Tue, Nov 7, 2017 at 8:57 PM, Michiel Beijen wrote:

    To me, the only real option is to make a new option in DBD::mysql;
    mysql_enable_proper_unicode or the like which you would knowingly set
    in your application code, which will expose the new behaviour. I
    understand this is difficult, but I really think it's the only way.

    If in the short term this is not feasible, it *could* be possible, in
    my eyes, to release a DBD::mysql2 or similar that does *correct*
    behaviour. Also in that case this is something the application
    developer should set explicitly in his connection string.

    This DBD::mysql2 or similar could live in another git repository, but
    preferably in the same repo, and even in the same CPAN distribution as
    DBD::mysql, and eventually the goal should be that they re-unite and
    using DBD::mysql2 would really be the same as to use the
    'mysql_enable_proper_unicode' option in DBD::mysql.

    --
    Michiel

    On Tue, Nov 7, 2017 at 7:41 PM, Darren Duncan <dar...@darrenduncan.net
    <mailto:dar...@darrenduncan.net>> wrote:
    > My understanding from the last discussion on this matter is that it was
    > agreed DBD::mysql would be forked such that the existing DBD::mysql name
    > would be frozen at 4.041/3 indefinitely and that the 4.042 changes plus 
any
    > further feature development would take place under a new name such as
    > DBD::mysql2 version 5.0.

Reply via email to