I am advocating for a standard that new AWS module pull requests should be written in boto3, with an acceptable fallback to botocore should particular functionality not exist/be possible at the boto3 level.
Boto, botocore, and boto3 can all live together and do not conflict with each other. That being said, I’ll be working on extending our ec2 module_utils to include boto3 equivalent functions (and perhaps more) so the experience from a module development perspective can be consistent with the prior library.
Time permitting, I’d like to slowly but surely refactor existing AWS modules to use boto3 where it makes sense (like ec2_tag where boto currently cannot tag ELBs).
I think the module_utils piece is the first step. Once that is done, then we can make an official decree. The authentication/connection pieces of utils are key. Equally, old modules would be able to start using boto3 as well and it would be my suggestion that “new feature” prs for pre-existing modules happen via the boto3 library where possible.