18:04:39 #startmeeting Community Working Group 18:04:39 Meeting started Wed Jun 10 18:04:39 2020 UTC. 18:04:39 This meeting is logged and archived in a public location. 18:04:39 The chair is felixfontein. Information about MeetBot at http://wiki.debian.org/MeetBot. 18:04:39 Useful Commands: #action #agreed #halp #info #idea #link #topic. 18:04:39 The meeting name has been set to 'community_working_group' 18:04:54 welcome all to the weekly community working group meeting :) 18:05:45 #topic versioning and releasing community.general and community.network 18:05:54 I hope we finally manage to finish this today :) 18:06:16 lets see:) 18:06:25 Oooh, zodbots back :-) 18:06:55 woot! 18:07:02 the last week we decided that the collections should be released from release branches, we talked about backporting (bot), feature backports only for current active major version, bugfixes for the current and previous, and serious bugfixes and security fixes even one more 18:07:09 (more details: https://github.com/ansible/community/issues/539#issuecomment-640034934) 18:07:21 I've tried to compile a list of questions still open: https://github.com/ansible/community/issues/539#issuecomment-640040115 18:07:37 mind if I follow along with some infos for the meeting minutes? 18:07:40 yep, with zodbot meetings are much more fun ;) 18:07:40 (Oh, looks like its only back in certain channels... I guess we can rearrange meetings if we need to, though.) 18:08:06 indeed, it's missing in #ansible-docs 18:08:16 samccann: sure, thanks! 18:08:46 (I know why that probably is... I'll update #ansible-docs about that after the meeting) 18:08:49 #info collections should be released from release branches see https://github.com/ansible/community/issues/539#issuecomment-640034934 for details 18:09:04 #info open questions https://github.com/ansible/community/issues/539#issuecomment-640040115 18:09:21 does anyone know if gundalow will be here today? 18:10:15 I thought he was out most if not all of this week (dunno if out was out and having fun or out and stuck in meetings all week or something) 18:10:27 ok 18:10:34 I guess he'll say something when he's around :) 18:10:50 so, should we start with the deprecation cycle? 18:11:04 #topic deprecation cycle for community.general/community.network 18:11:05 felixfontein: Could you #chair some people? 18:11:08 oh 18:11:22 (then samccann's info will work ;-) 18:11:25 #chair bdodd samccann andersson007_ abadger1999 cyberpear 18:11:25 Current chairs: abadger1999 andersson007_ bdodd cyberpear felixfontein samccann 18:11:42 Thanks :-) 18:11:44 sorry, never started a meeting before I think :) 18:11:53 #info collections should be released from release branches see https://github.com/ansible/community/issues/539#issuecomment-640034934 for details 18:11:57 I was hoping someone else does it, but apparently no... ;) 18:11:59 #info open questions https://github.com/ansible/community/issues/539#issuecomment-640040115 18:12:04 thanks! 18:12:09 how long does it take to deprecate something in ansible-base? ~2 years? 18:12:11 :-) 18:12:30 andersson007_: right now, 4 versions, which right now is ~2 years. but that might change. 18:12:33 andersson007_: yeah, ansible-base has been steadily creeping up. 18:12:41 thanks 18:12:43 also, as far as I understood the deprecation cycle was shorter a longer time ago 18:13:12 When we originally decided on 4 versions, we were aiming for 1 year and 3 releases was just under one year. 18:13:30 felixfontein: now you're making me feel like a greybeard ;-) 18:13:41 felixfontein: in your proposal you suggest establishing 6 month cycle, right? 18:14:00 I heard there were thoughts of increasing the ansible-base major release cycle to once per year, though no idea if that's still thought about 18:14:08 abadger1999: sorry ;) 18:14:11 #info original ansible/ansible deprecation was 4 versions, which was about a year or so 18:14:14 andersson007_: no, two years 18:14:27 ok, sorry 18:14:33 though I was assuming that the 2 years ansible recently had was normal ;) 18:14:42 #info that has stretched to close to 2 years now, since the releases have slowed down. 18:15:27 since we deprecate by version, it should be measured in major releases. we currently plan to release a new major version every 6 months, so we can choose between ~6 months, ~12 months, ~18 months or ~24 months (assuming that nobody wants an even longer cycle) 18:15:59 2 year cycle is more than enough 18:16:00 imo 18:16:12 I think 6 months is too short, but 12 or 18 months sound good to me 18:16:26 24 might be a bit long, after all we don't sell commercial support ;) 18:16:32 agreed 18:16:34 about 24 18:16:40 I'd tend toward the longer end, but I'd also make breaking major versions less frequently 18:17:12 so, what kind of concrete numbers do you all like? :) 18:17:17 12 18:17:22 12 or 18 18:17:25 so I'd consider 2 major versions fine as long as we don't make major releases except when necessary 18:17:36 samccann: 12 or 18?:) 18:17:49 cyberpear: major releases will be every 6 months, so 2 major versions will be ~12 months 18:18:03 Will it be easier to adjust up or down later? 18:18:04 I'd say 18 mo 18:18:08 ok if I had to pick just one - 18 mo 18:18:12 adjusting up inconveniences contributors. 18:18:19 though. more like 8-12 months, since you could add a deprecation in 1.2.0, which is released 2 months before 2.0.0 18:18:22 adjusting down inconveniences users. 18:19:00 my nickel would be to favor users over contributors 18:19:10 3 major versions would be 14 to 18 months 18:19:27 Okay, then I would suggest we start low and then get higher if we have contributors willing to do that. 18:19:39 which happens to be the same amount of time we currently allow major bugfix/security fix backports 18:19:46 ^ Regarding samccann's vote to favor users. 18:20:22 we can also ask for at least 2 major versions, and allow 3 or even 4 if maintainers want that 18:20:38 start low as in 12 mo? how does that help users? Seems a user would not want something removed every 12 months? 18:20:44 It makes users less happy right away but it proves that we have the manpower to maintain for longer before making the expectation better. 18:20:50 6 months even... 18:21:03 6 months seems very short to me 18:21:18 that way you can essentially remove something for the next major version 18:21:27 What i worry about is say we started at two years.... but quickly found that we can't sustain that... no one in interested in maintaining their obsolete code that long. 18:21:34 So then we decrease it to one year. 18:21:36 ah gotcha 18:21:51 End users then get their expectations crushed. 18:22:49 so if it comes to that, make it an adjustment for only code not yet deprecated? 18:22:52 If we do the opposite, start at one year... and we find we are able and willing to go longer because we have enough people willing to maintain a longer deprecation cycle, then users will be happier that they suddenly have 6 months or one year longer to port their playbooks. 18:23:08 valid point 18:23:21 cyberpear: yep I'd make that a given.... but it's still about managing expectations... 18:23:47 cyberpear: deprecations can always be extended I guess, nobody minds if stuff stays longer (or even forever, if it turned out it shouldn't have been deprecated - remember group names? ;) ) 18:23:56 Hi, here now 18:24:00 hi gundalow! :) 18:24:03 #chair gundalow 18:24:03 Current chairs: abadger1999 andersson007_ bdodd cyberpear felixfontein gundalow samccann 18:24:03 hi 18:24:09 I expect that I'm using this product and I'm getting two years to port things... suddenly the product announces that in the future I'll only have one year. I probably feel like I'm having something taken away from me. 18:24:20 true 18:24:55 on the flip side - I'm an ansible 2.8 user and used to nearly a 2yr deprecation cycle, but when I go to 2.10 it's now a year 18:25:06 felixfontein: thanks for starting the meeting 18:25:30 samccann: true 18:25:54 but then we already have new features and bugfixes longer than ansible had before 18:25:57 my next nickel though - is abadger had the most valid point - what can the community maintain on its own. And if we have doubts, go with the lower number (like 12 months) 18:26:35 samccann: heh.... note that this policy would only be for collections we control.... so, for isntance, I think that community.kubernetes is already planning on 2.10 including backwards incompatibilities that weren't even announced 18:27:12 hmm, I hope they add a breaking_changes section to their changelog... 18:27:24 Whatever is decided I think we should be clear that we reserve the right to change it based on user & contributor feedback (though maybe we can't shorten the 2.10 (lowercase) support cycle? 18:27:40 That sounds important... I'll open a ticket in their github and cc you, felix. 18:27:52 abadger1999: thanks! 18:28:55 should we have a poll? about a number of major versions we want the deprecation cycle to last *at least* (for collections we control, i.e. community.network and community.general)? 18:30:22 ok, if nobody doesn't want it, let's have one :) 18:30:30 :-) 18:30:38 POLL: write the number of major versions you want the deprecation cycle to last *at least* 18:30:42 #info whatever is decided, we need clear docs on how to write changelog/fragments wrt `breaking_changes` 18:30:50 2 18:30:55 2 18:30:56 2 18:30:57 2 18:31:04 2 18:31:55 abadger1999: any preference? 18:32:05 2 18:32:16 ok, great! 18:32:26 I guess nobody minds if maintainers want to have a longer one? 18:32:37 Absolutely fine :-) 18:33:01 #agreed the deprecation cycle should be at least two major versions. maintainers can decide to choose a longer one, but not a shorter one. 18:33:07 great :) 18:33:10 Woot 18:33:34 ok, an adjacent question: how should current deprecation versions (which are ansible versions) be mapped to collection versions? 18:34:25 if we assume ~6 months per ansible release (currently), we could map 2.11 -> 2.0.0, 2.12 -> 3.0.0, 2.13 -> 4.0.0 and 2.14 -> 5.0.0 (that would be ~july 2022) 18:35:09 of course we could also shorten that, and f.ex. say 2.11, 2.12 -> 2.0.0, and 2.13, 2.14 -> 3.0.0 (that would be ~july 2021, i.e. one year) 18:35:17 I'd say, "the major release coming around the time that the corresponding version of ansible is released" 18:35:37 cyberpear: we have to convert the versions now, so we can't wait until we find out when these versions are actually released 18:35:40 problem is, ansible-base may have longer release cycles. 18:36:17 so if we were to keep with the idea of 'don't cut current deprecation cycles short', then I think the first list makes sense 18:37:15 I'm fine with that, though it's a bit funny that existing deprecations will last a lot longer than things that will be deprecated in the near future 18:37:53 felixfontein: I think your mapping is sensible.... I think we could get away with going shorter because most people will realize that it's a large change in who is maintaining the content so the maintenance cycle can be different. But there will probably be a little pushback, possibly from vocal people, if we do so. 18:39:14 since deprecations can be prolonged, if we choose the shorter cycles, maintainers (or people who want to become maintainers) can still extend them afterwards. though they might get surprised in the first place 18:39:18 (To be clear on my stance... I would be fine with shorter.) 18:40:17 also, for deprecated features to be actually removed, someone has to actually remove them. I guess we will add deprecation errors to the ignore.txt file, and create an issue - and if nobody maintains the module/plugin, the deprecation warning will just stay there, as well as the feature, until someone invests time to remove it 18:40:39 just leave a comment about the original ansible-base deprecation version for maintainers' reference 18:41:02 that's fine with me 18:41:33 POLL: does anyone wants the longer mapping, or a completely different mapping? 18:41:50 I'm happy with the short mapping 18:43:50 (anyone else already has an opinion?) 18:44:26 i'm happy w/ it 18:44:35 I'm fine with the short mapping. 18:45:06 short 18:45:20 Short 18:46:09 cyberpear? 18:46:32 I won't get in the way of short 18:46:54 ok 18:47:12 so let's use the short mapping, and add comments with the original Ansible version 18:47:43 #agreed mapping for old deprecation version numbers (from ansible): 2.11, 2.12 -> 2.0.0, and 2.13, 2.14 -> 3.0.0. old version should be kept as a comment 18:48:35 should we look at the changelog questions next? then maybe we have everything together we need for a next release 18:48:56 #topic changelogs 18:49:00 my proposal would be: 18:49:33 1. have one changelog per major version (similarly as ansible/ansible right now) 18:49:51 2. delete fragments from repo after a new version is released 18:50:26 sounds good to me 18:50:36 having one changelog means that the changelog for 2.x.x says that it continues the 1.0.0 changelog, similar to what ansible/ansible is doing right now. 18:50:39 1. maybe per minor x.X.x version (collections)? 18:51:03 so there would be a 1.x change log, and it would contain a runnning list (1.0.0, 1.1.x 1.2.x etc etc)? 18:51:08 if we have multiple major versions released between two ACD major releases, the ACD changelog would combine the changelogs correctly 18:51:21 samccann: yes 18:51:32 andersson007_: that would be quite excessive IMO :) 18:51:46 felixfontein: ok 18:51:56 for smaller collections it is probably ok to have one continuous changelog 18:52:09 though I guess for community.general that file would grow pretty big over time 18:52:27 I like the idea of making it easier for smaller collections. 18:52:37 so trimming it for every major release would keep the size manageable 18:53:03 I'm OK with c.general and c.network having (needing) more process 18:53:12 gundalow: this is mainly about community.general and community.network, smaller collections can IMO do whatever they want... 18:53:19 I'm happy w/ one per major so long as it works for ansible (acd). So if ansible pulls in say the 1.2.1 version of a collection, the ansible changelog would only have those details? Do we foresee a scenario where ansible pulls in 1.2.1 but a 1.2.2 or a 1.3.x already exists for that collection? 18:53:47 samccann: the ACD changelog will contain all changelog entries between the last collection version included in ACD and the current one 18:53:50 felixfontein: nod 18:54:23 even if there are five major community.general releases between two ACD releases, all entries from these changelogs will show up in the ACD changelog 18:54:31 (though I hope that won't happen, since that's 2.5 years) 18:54:36 yeah my point is what happens if ACD is not pulling the most recent version of a collection? Does the changelog generation still work, or would it pull in changelog fragments from a version that is more recent than what ACD has? 18:55:06 samccann: the changelog is taken from the released collection on galaxy, so it will not contain anything newer 18:55:18 so between the time ACD does a 'freeze' and does its release, a collection owner has updated their collection in galaxy 18:55:43 samccann: if the old version is not contained in that changelog, the changelog code will look at the changelog's ancestor, download that collection version, and continue with its changelog, until it found the previous release included in ACD 18:56:03 samccann: it will use the collection version that is included in ACD 18:56:16 ok kewl 18:57:10 is anyone opposed to the idea of not keeping fragments once they are included in changelog.yaml? 18:57:56 nope 18:58:15 no 18:58:26 (ansible/ansible currently keeps them, and they are the source of truth, and they want to keep it that way.) 18:58:49 since old collection releases are immutable, I think it also makes sense to not change old changelog entries 18:58:51 felixfontein: so this would be a difference with ansible/ansible's workflow? 18:59:02 if they are in changelog.yaml and not available as fragment files, that's easier to ensure :) 18:59:17 (i'm not opposed, jsut clarifying) 18:59:33 abadger1999: yes. but it shouldn't affect anyone - except people who want to modify old changelog fragments in an easy way 19:00:48 Cool. 19:01:01 hmm, should we vote? 19:01:33 let's vote then:) 19:01:37 POLL: is it ok for everyone if a) we have one changelog per major verion, and b) fragments are removed after a version is released (contents are in changelog.yaml) 19:01:45 +1 19:01:46 +1 19:01:52 +1 19:01:52 +1 19:02:23 gundalow: cyberpear: 19:03:14 no opinion 19:03:22 that's fair :( 19:03:23 :) 19:03:26 sorry, typo :D 19:03:39 sounds to do me. +1 19:05:09 #agreed a) we have one changelog per major verion, and b) fragments are removed after a version is released (contents are in changelog.yaml) 19:05:12 thanks! 19:05:47 (too late) yup 19:05:47 maybe one last thing for today: what do you think of making a first proper release of community.general very soon, like next week (or the week after that)? version 0.2.0? 19:06:04 (before having a 1.0.0 later, maybe next month?) 19:06:36 version numbers are free, I'm all for more releases right now. 19:06:37 or more precisely, how about: a) release 0.2.0 in two weeks, and b) release 1.0.0 by end of July? 19:06:59 I think we should wait until ansible-base is really frozen, so there won't be more changes to deprecation etc ;) 19:07:02 Maybe in the future we'll have release criteria nad testing periods and such, but I don't think we're anywhere close to that level of organization yet. 19:07:17 19:07:23 +1 19:07:27 I guess for 1.0.0 we can have a freeze, some testing period, ... 19:07:47 I think in the proposal I defined it as two weeks, or so 19:08:04 felixfontein: dates sound ok to me 19:08:15 I'd really like to have a proper 0.2.0 release soon, so that abadger1999 has something better for the ACD docs pipeline, and I have something better for the ACD changelog pipeline ;) 19:08:27 +1 to that :-) 19:08:43 I guess we can also try end of next week, assuming that ansible-base 2.10 beta 1 is out by then 19:08:59 if we want to be really quick 19:09:49 does anyone prefer a release next week over one in ~2 weeks? 19:09:55 1.0.0-rc1 is a valid semver pre-release 19:10:10 cyberpear: true, but I think it's a bit early for that yet 19:10:59 agreed 19:11:09 0.2.0 sounds gid 19:11:10 abadger1999: what's your opinion? since you depend most on a new release 19:11:12 good 19:11:24 no longer than 2 weeks is ok 19:11:31 next week is also ok 19:11:58 Same as andersson007_ from me. 19:12:03 we can also say end of next week if ansible-base 2.10 beta is out by wednesday, and later if not 19:12:45 I think having 1-2 days after the beta is out is a good thing, just to be sure that everything is working as expected 19:12:49 need to run for another meeting.. later taters! 19:12:59 samccann: see you later, and thanks a lot! 19:13:24 ok. is everyone fine with "a couple of days after ansible-base 2.10 beta is out"? 19:14:01 yep 19:14:05 also: I guess for this one, we release directly from master and not from a branch? 19:14:16 (i.e. no backporting until 1.0.0 is out) 19:14:26 +1 19:14:54 cyberpear: gundalow: objections, or other ideas? 19:16:02 No objections 19:17:33 cool! 19:17:55 cyberpear: I assume it's ok for you then 19:18:32 #agreed version 0.2.0 to be released next, a couple of days after ansible-base 2.10 beta is released. with changelog and correct version_added and deprecation versions. version after that will be 1.0.0. 19:18:38 #agreed will be released directly from master, i.e. no release branch, and no backporting until 1.0.0 is out 19:18:57 ok. should we stop for today? 19:19:20 the remaining questions from my list (https://github.com/ansible/community/issues/539#issuecomment-640040115) can also wait :) 19:19:58 Up to other people... I can be here or go back to coding ;-) 19:20:05 I think now we have everything so that we can do a next release, and announce a rough schedule and information about releasing in the repo 19:20:59 * cyberpear steps away 19:21:03 I'll create PRs (resp update for version_added) for these aspects and CC you all in there 19:21:15 good, I think in that case we'll better stop for today 19:21:25 #endmeeting