19:00:04 #startmeeting ansible core 19:00:04 Meeting started Tue Nov 21 19:00:04 2017 UTC. The chair is thaumos. Information about MeetBot at http://wiki.debian.org/MeetBot. 19:00:04 Useful Commands: #action #agreed #halp #info #idea #link #topic. 19:00:04 The meeting name has been set to 'ansible_core' 19:02:19 * gundalow waves 19:02:26 #chair gundalow 19:02:26 Current chairs: gundalow thaumos 19:02:33 * thaumos waves back at gundalow 19:02:47 I wonder how many meetings we can look back and see us do that 19:03:22 new ansibot feature 19:03:36 #chair bcoca 19:03:36 Current chairs: bcoca gundalow thaumos 19:03:46 ansibot is the new hubot 19:04:03 it does all the things 19:04:23 it even 5-mans lvl 15 heroics 19:05:11 wut 19:05:19 you mean mythic+ 19:05:19 #chair jtanner 19:05:19 Current chairs: bcoca gundalow jtanner thaumos 19:05:25 yes mythic+ 19:05:33 you know what I meant :-P 19:05:35 get your wow refs right! 19:05:48 they are forever heroics to me 19:05:54 i prefer sham-wow refs. BILLY MAYS HERE ...! 19:06:02 long live 15-man ubrs 19:06:14 ^^ not really 19:06:14 although billy was not the shamwow guy 19:06:17 but whatevs 19:06:28 I think I missed the shamwow days 19:06:38 oxy clean 19:06:38 ubrs? 19:06:45 #chair maxamillion 19:06:45 Current chairs: bcoca gundalow jtanner maxamillion thaumos 19:06:52 ubrs == upper blackrock spire 19:08:02 if we get a couple more, we can talk about the host pattern topic you brought up bcoca 19:08:41 on a side note 19:08:49 awwww, rip the oxy clean guy ... he was the best 19:08:49 I always wanted him and Steve Irwin to get together and sell something, there'd be *so* much energy 19:08:54 #topic keycloak PR #31716 19:08:57 #link https://github.com/ansible/ansible/pull/31716 19:09:08 does someone here wanna take a stab at looking and commenting on this one? 19:09:33 @alikins, care to continue reviewing it? 19:09:49 PTO 19:09:54 * thaumos sighs 19:10:06 thaumos: I'm not familiar with the term "upper blackrock spire" 19:10:21 no worries, just me and bcoca being World of Warcraft nerds 19:11:24 #action thaumos to sync with alikins after holidays about the PR. 19:11:31 * bcoca tempted to confiscate Wow nerd card based on 'heroic 15' gaffe 19:11:42 such shame. 19:11:45 :-) 19:12:01 don't revoke it! 19:12:10 Just give me a point on my card :-P 19:12:19 #chair abadger1999 19:12:19 Current chairs: abadger1999 bcoca gundalow jtanner maxamillion thaumos 19:12:29 thaumos: ah ... that's one I never got into, watched a room mate drop out of high school because he couldn't put it down (long story, but it was bad... he got to a point where he was lying to us and would go to a coffee shop and play) ... so I never touched it 19:12:32 oh, zodbot? 19:12:33 .hello2 19:12:34 maxamillion: maxamillion 'Adam Miller' 19:12:36 \o/ 19:12:43 #topic list-hosts behaviour discussion 19:13:07 @bcoca, I got a kick out of the reporter saying, "So, want me to open a bug?" 19:14:22 .hello2 19:14:22 @bcoca, does the PR you reference go along with the project list topic? 19:14:23 gundalow: gundalow 'John Barker' 19:14:28 .hello1 19:14:31 .hello3 19:15:21 ?? 19:15:23 (sorry, carry on) 19:15:25 gundalow: there's '.hello ' and then '.hello2', the latter of which will assume you mean your own nick for the field 19:15:32 sorry, 20 chainsaws in air .. not sure which one 19:15:47 * maxamillion goes into lurk mode 19:15:48 sorry sir 19:16:02 #link https://groups.google.com/forum/#!msg/ansible-project/oRZwBj4XDx8/7IPtbtKFCgAJ 19:16:16 and 19:16:18 #link https://github.com/ansible/ansible/issues/32860 19:16:20 yeah, wanted vote on which should the actual behaviour be 19:16:25 okay 19:17:42 what did you mean by "some have pointed out that the 'new behaviour' is a feature"? 19:17:58 Sorry, I am just trying to follow along with you 19:18:06 that the vars declaration can be used by other inventories 19:18:21 even if 'current inventory' does not have any hosts or groups related to the 'decalred group' 19:18:32 also, 2 diff topics 19:18:57 one is patterns, the other is '[groupname:vars]' being valid if only entry in ini inventory 19:19:10 still want vote on both, but lets not confuse them 19:19:11 10-4, I'll stop conflating topics 19:19:14 yep 19:19:15 agreed. 19:19:22 I am on the same page as you now. 19:19:31 okay, so first topic then being the project topic post 19:20:36 https://github.com/ansible/ansible/issues/32906 <= this might be a symptom 19:21:30 so between versions, was there a decision to make the behaviour change, or was it a result of something? 19:22:43 bcoca: I think that it should match both hosts and groups bu I'm not yet sure what the string pattern versus glob pattern distinction is.... trying to re-read that comment now. 19:24:29 if pattern is 'dev' we always just matched group named 'dev' and ignored host named 'dev', but when doing 'patterns' i.e 'de?' we would match both 19:24:54 i think that the 'pure string' should stay as is and the 'regex/glob' should also try matching hosts 19:25:59 I thnk the pure string should match both as well but if the 2.3 behaviour was just to match the group, I can get behind that as "backwards compatible" until we decide to change it consciously. 19:26:24 abadger1999: we've had a warning about group/hosts with same name just cause of that behaviour 19:27:02 i would not recommend changing that at this poing, teh globbing, makes more sense to me, and that is what i want a vote on this point, if you want to bring the string matching up, lets schedule it 19:27:17 As long as the additional "backwards compatible" justification is there, that works for me. 19:27:55 I don't think it's the right way but if it's also a backwards compat break, I'm fine with continuing to use the 2.3 behaviour. 19:28:54 can we introduce a way to allow for users' interpretations of execution? 19:29:30 so they can opt into this old way, that way make it still backward compatible by enforcing a pluggable solution? 19:29:37 thaumos: I don't understand what you mean by "users' interpretations of execution" ... can you clarify? (or is that a term I just haven't learned yet) 19:29:50 yeah, let me clarify. 19:30:34 thaumos: nope, that is just too complex .. too many knobs 19:30:54 @maxamillion for clarification, Can we have a plugin allow for a user to have Ansible do what they expect for --list-hosts output? 19:31:00 @bcoca, okay fair. 19:31:25 +1 for restoring 2.3.x behaviour 19:32:09 @abadger1999 would you suggest we bug fix that behaviour in, then document our intentions grandfathering in a deprecation cycle for 2.8? 19:32:39 or are you suggesting something different? 19:32:48 thaumos: ah, I follow 19:32:49 thaumos: Like I say, I'm fine with the 2.3 behaviour... bcoca seems to think it *is* the right behaviour and I'll go along with that. 19:32:49 thaumos: it has nothign to do with output, but with actualy generating the host list 19:33:10 thaumos: So no need to deprecate and change because of me. 19:33:12 thaumos: yeah, I'd agree with bcoca ... I could see that getting off in the weeds fast, first thing that comes to mind is test matricies 19:33:15 i would really like more people from core on this .. but seems bad timing 19:33:32 who do we need to pull in @bcoca? 19:33:39 im going to 'fix' for now and make backwards compat, we probably want to revisit later 19:33:47 personally I am +1 on old behaviour as well 19:33:57 we should revisit for sure. 19:34:24 bcoca: Make it so ;-) 19:34:27 #action bcoca to fix for now and make backwards compat 19:34:29 agreed, +1 for backwards compat 19:34:58 #action bcoca to revisit this later with greater core group at a later date. 19:35:10 #action thaumos will remind bcoca to revisit it later. 19:36:54 #topic '[groupname:vars]' being valid if only entry in ini inventory 19:37:07 #link https://github.com/ansible/ansible/issues/32860 19:38:19 agreed that vars only empty groups should produce an error, 19:39:17 +1 19:39:20 +1 19:39:24 Reasoning: that will pick up typos 19:39:40 mostly why it existed, as it was noop otherwise 19:39:54 typos and general confusion of "oops, I missed something" vs "why isn't this doing what I wanted it to / expected it to do" 19:40:03 also* 19:40:09 but yeah, +1 19:40:20 merged 19:40:22 \o/ 19:40:32 abadger1999: can i cp to stable? 19:40:39 bcoca: yep. 19:40:49 bcoca: cut off is tomorrow. 19:42:26 2 blockers to go 19:43:13 Since I may be somewhat busy, I would love if people either cherrypick today or explicitly tell me in irc/slack that they have something they need to get into rc1. 19:43:40 going to cp 2 more then, letting 3rd wait for shippable 19:43:47 removed one blocker as it is not 'correclty sovled' 19:44:58 @mattclay, wanna talk about your pylint rules topic really quickly? 19:45:08 Sure 19:45:29 bcoca: Sounds good. 19:45:30 #topic pylint rules len-as-... and no-else 19:45:48 (Would be nice to do jborean's as well after) 19:45:57 he doesn't have thanksgiving ;-) 19:46:14 is he here? 19:46:27 thaumos: Australia... I think I can speak to his. 19:46:36 right, that's why I asked 19:46:46 they started celebrating thanksgiving since last year's election 19:46:47 if you're cool speaking for him, then we can cover it :-) 19:47:02 I didn't want to do it without him because he's on the other side of the globe 19:47:08 We've been enabling various pylint rules to catch things that can cause problems. I don't think anyone has issues with that. However, there are some pylint rules which really only enforce style guidelines, along the lines of PEP 8. The question is whether we want to enable more of those or not, specifically: len-as-condition and no-else-return 19:47:40 I am okay with enforcing more. 19:47:51 This came up due to this PR: https://github.com/ansible/ansible/pull/30764 19:47:52 len-as-condition I like because it's a small optimization. 19:48:06 mattclay: I have been fixing those as the PEP8 sanity test already catches these IMO 19:48:24 mattclay: so I don't see a need in adding them from pylint as well 19:48:31 dag: Is there a matching PEP 8 rule that catches them which we've disabled? 19:48:47 mattclay: no, we fix these already afaict 19:48:52 s/PEP 8 rule/pycodestyle rule/ 19:49:11 mattclay: your PR is related to files not already PEP8 compliant 19:49:20 They aren't failing CI, so either there is no pycodestyle rule for them, or it is disabled. 19:49:23 no-else-return... I'm somewhat, meh about but there's nothing wrong with fixing it that I can see. 19:49:29 they are in the legacy whitelist 19:49:33 Ah, OK. 19:49:42 -1 to style rules, but dont think you had to ask 19:50:19 I have been fixing both in other files, so I am pretty sure this is already covered 19:50:23 I didn't even check to see if they were on the legacy whitelist. In that case there's no need to enable the rules in pylint if we're picking them up in the non-legacy check using pycodestyle. 19:50:37 * mattclay verifies 19:51:17 (For the first one, I mean: if "len(variable) != 0:" takes more CPU and brainpower than "if variable:") 19:53:11 I'm not seeing a pycodestyle failure for the no-else-return case. 19:53:32 Even when removing a file from the legacy list which fails the pylint test. 19:54:00 * mattclay checks len-as-condition 19:56:07 Hey 19:56:39 dude, it's early @jborean93 19:56:41 go to sleep 19:56:41 I'm not seeing any pycodestyle failures for len-as-condition either. 19:56:42 hmmm, pretty sure I have seen both of them in the past when using ansible-test 19:57:07 thaumos: 5:56am, have the windows meeting in a few minutes so got to be prompt for that :) 19:57:09 nevermind 19:57:16 heh 19:57:46 @jborean93 sleep much higher in my book than windows :-P 19:57:56 mattclay: so non-whitelisted code fails if you enable this in pylint ? 19:59:05 We don't have a file whitelist for pylint, just configs to enable rules for various groups of files. If we enable these two pylint rules we'll have failures that aren't detected by pycodestyle (even if those files are not on the legacy PEP 8 list). 19:59:26 So it's not redundant to enable them. The question is whether want to or not. 20:00:01 so let's vote. 20:00:06 mattclay: I mean just as the opposite test to prove me wrong 20:00:12 +1 20:00:41 dag: Sorry, I'm not sure what you mean. 20:00:44 abadger1999: you had a +1 on len-as correct? 20:00:48 +1 20:01:19 -1 20:02:07 I suppose I'm +1 on most style changes that don't have false positives. Just some I'm willing to offer a justification for. 20:02:12 any more votes? 20:02:22 we need to close out the meeting for the windows working grou 20:02:32 +1 on len-as 20:02:43 give @jborean93 a reason for waking up at the crack of dawn 20:03:30 We run in our own channel, so overlap is OK other than people interested in both :D 20:03:37 ah, good to know 20:04:07 so that being said, do we want to continue the meeting to get in jborean93's topic? 20:04:21 up to you folks, I may need to leave though because I have fatherly obligations. 20:04:49 So we have for len-as-condition: +3, -1 ? 20:04:58 to close the current topic though, mattclay looks like you got a positive vote on len-as 20:05:01 yes 20:05:20 How about no-else-return? 20:05:29 maxamillion: do you care to vote for len-as-condition? 20:06:43 mattclay: +1 from me on no-else-return. I don't have justification besides consistency, though. 20:08:56 Seems like we need more people for no-else-return, guess we should continue next week. 20:08:57 thaumos: sorry, got called afk for a second ... reading backscroll 20:09:27 If jborean93 would like to discuss his get_md5, it seems like something we can talk about quickly. 20:09:29 yeah, I'm +1 for len-as 20:09:41 Comes down to how long the deprecation cycle should last. 20:09:48 I'm also a big sucker for pep8 20:10:01 sigh, everytime I run pylint on Ansible codebase, my system grinds to a halt, CPU gets hot, fans to the max :-/ 20:10:31 sounds like ansible-dc 20:10:35 s/dc/doc 20:10:56 dag: Yeah, pylint is a CPU hog. I think it's mostly from the type inference. 20:11:06 we can make ansible-doc much faster, just remove 1000 modules 20:11:16 @bcoca ;-) 20:11:41 Ok, if people want to talk about it now, my question is around this PR https://github.com/ansible/ansible/pull/33002 20:11:54 are we cool with closing out the current topic? 20:12:01 alikins had a start on fixing that, actually... Use jinja2 templates for building the module lists instead of sphinx TOC. 20:12:08 We can delay the vote to next week since a lot of folks are out. I just wanted to be able to give feedback on direction for that PR. 20:12:21 abadger1999: that affects docsite build, not ansible-doc 20:12:36 bcoca: ah... ansible-doc is pretty snappy, though, right? 20:12:50 abadger1999: you have not done 'ansible-doc -l' in a while have you? 20:12:56 Hmmm over a second or two. 20:13:06 yeah, okay, could use some optimization again. 20:13:11 we had to add --list_files version or ansibot was hosed 20:13:27 okay, we can defer @mattclay, but it sounds like most are for it. 20:13:35 * mattclay nods 20:13:47 #topic deprecate get_md5 from stat and win_stat 20:14:17 I'm +1 for deprecating. The question is how. And how long deprecation cycles should be. 20:14:28 Currently `stat` and `win_stat` have an option `get_md5` which defaults to true which pretty much has been replaced with `get_checksum` and `checksum_algorithm` 20:14:30 I am +1 for deprecating as well 20:14:35 dep cycle should be the standard 4 20:14:40 deprecating return values is always a hard thing to do :-/ 20:14:42 no need in making that longer in the tooth 20:15:10 hard to test for it, unless we would have special values like we do for omit 20:15:14 you can leave the return longer (empty) but just changing it to 'false' by default sould 'fix it' w/o need of removing the option 20:15:21 some people WANT md5 (dontaskmewhy) 20:16:13 Yea, the default is `yes` and we can't just add a warning and remove after 4, we either need to remove the yes option after x cycles and then finally the option altogether some cycles after that 20:16:13 +1 for deprecating also 20:16:35 The PR currently adds the ability to set `checksum_algorithm: md5` so people can still get md5 hashes 20:16:51 just change to no by default, leave the option, no need to deprecate 20:16:59 ah, if that is avialble, ok 20:18:01 Wouldn't we want to remove it eventually? 20:18:19 remove it, 20:18:47 So the question is how many releases do we want to do it? 20:18:50 4 20:18:55 we technically will do it in 4 steps 20:19:00 1st step to change default to no 20:19:04 2nd step is to finally remove it 20:19:20 change default to no and warn on yes for 2.5, dep out in 2.9 20:19:27 remove has to do with deprecation, not with default change 20:20:29 But people would need at least some notice that the default changes, especially on a stableinterface module 20:20:50 I can only set a warning "without bothering people too much" when someone explicitly set's `get_md5: True` 20:21:37 thaumos: +1 20:22:33 I say notice in changelog, porting guide, and a warning on the task. 20:23:01 we can also do a post in ansible-project as well. 20:23:14 after that, I think we've done all we can to notify 20:23:40 Ok, so you are saying, change to no in 2.5 (with all the changelog porting info), warn if set to yes saying it will be removed in 2.9 and then finally remove in 2.9? 20:23:49 I can +1 thaumos's proposal but I could +1 others as well. 20:24:02 yes 20:24:45 +1 to thaumos as well 20:25:24 Ok, that's fine with me, I can update the PR for that 20:25:57 Do we want to document that the `md5` return value will also be removed in 2.9, or do we usually keep those for backwards compatibility and just null it out? 20:26:06 it being stableinterface does make me feel bad about changing it but.... 20:26:22 if we're going to remove one we might as well remove both. 20:26:26 stableinterface? 20:27:05 maxamillion: we mark modules with stableinterface or preview to denote whether the params and return values are going to change in a backwards incompatible manner. 20:27:21 oh right 20:27:22 And as I say that, it makes me feel even worse about changing it. 20:27:22 * maxamillion derps 20:27:29 that's in the metadata doc 20:27:39 I think technically if the option is being removed in 2.9 I think the return value also get's removed by default 20:27:41 so not too bad 20:27:42 I may like bcoca's better now... change the default value but leave it in. 20:28:01 Because it only returns `md5` if `get_md5: True` 20:28:03 * jborean93 checks 20:28:18 yeah, probably best to leave it in as to not break that 20:29:55 ok `md5` is not returned when `get_md5: False` so it does it together 20:30:14 By changing the default it already removes the value and I'm fine with that 20:32:05 +1 20:32:26 Cool, well that works for me and I can update the PR for what was discussed 20:32:32 bcoca: So... I'd like to deprecate get_md5, but since this is stableinterface, not remove it. (until 3.0) Does that make any sense to you? 20:33:29 I don't agree with having two approaches 20:33:41 in my mind since we're adding an alternative, it's still stable 20:33:52 it causes confusion having two things we will always have to maintain 20:34:17 we're giving the users an alternative that still does the same thing and removing it four versions down the road in 2.9 20:34:17 I guess that bowls down to what needs to remain unchanged within the definition of the stableinterface 20:34:28 boils * 20:34:35 yes it does... but what does stableinterface mean if it's not stable? 20:34:37 stay with me brain... 20:35:06 stable to me means we're retaining functionality. doesn't have to be tied to the letter of implementation. 20:35:09 is it: stable subject to deprecation cycle and preview can change releaes-to-relase? 20:35:24 Well you did remove the params option in a stableinterface recently :) 20:35:24 thaumos: stable to me means, don't break playbooks. 20:35:31 heh 20:35:34 Yes, that is true. 20:35:39 no deprecation cycle either. 20:35:50 @abadger1999 we're giving fair warning to changing language. 20:35:55 If people set get_md5: True right now it won't break, it's only if they didn't and are relying ont he md5 return value 20:36:11 to me it's different if we rip the rug out from under people saying sorry this isn't here anymore and you got nothing to replace it with. 20:36:12 The trouble is how you warn without annoying people with warnings 20:36:28 people that don't like warnings can turn it off 20:36:42 we're doing them a solid by keeping it around for four versions. 20:37:27 Okay, if we're okay with a definition of stableinterface that includes removing parameters, then I'm okay with deprecate and remove as proposed by thaumos. But we may want to update the docs that reference stableinterface. 20:37:41 I can foresee someone saying, "Well why don't you just fix get_md5?! You left it in, which means you could still fix it?! I don't care that it's deprecated, fix it because I don't want to rewrite my playbooks!" 20:38:05 * jborean93 support Python 2.4 so I don't need to upgrade my hosts 20:38:13 and that is what I thought we were saying with stableinterface. 20:38:19 But if we don't then that's fine too. 20:38:30 nope, there's a very defined difference in my eyes. 20:38:33 we just should add the clarificatio nto the docs 20:38:59 we reserve the right to change the language to make more sense. It is still stable because functionality remains. 20:39:09 Two places in docs: 20:39:11 docs/templates/plugin.rst.j2:{% set module_states = { 'preview': 'it is not guaranteed to have a backwards compatible interface', 'stableinterface': 'the maintainers for this module guarantee that no backward incompatible interface changes will be made'} %} 20:39:11 I thought stableinferface meant what abadger1999 is saying, so if that's not what the intention is I'd also like to see a clarification in the docs 20:39:16 docs/docsite/rst/dev_guide/developing_modules_documenting.rst: :stableinterface: This means that the module's parameters are 20:39:53 we're retaining backwards compat by keeping the functionality. 20:40:29 I do agree the docs seem to state the interface stays the same, if we were to change the default's then the interface changes 20:40:32 thaumos: I really think backwards compat means playbooks continue to function. 20:40:42 without revision 20:41:13 okay, how about this. 20:41:23 have an undocumented get_md5 that is deprecated. 20:41:41 i really do foresee people complaining about it still being there yet we do nothing with it 20:42:19 I was thinking that too.... The one problem (not a blocker but we should go into it with our eyes open) is that it hurts people who have to port to undocument get_md5 20:42:24 because they didn't take the time to rtm about get_checksum:yes and checksum_algorithm: md5 20:42:37 I inherited this playbook that has a get_md5 parameter. What does that do? 20:42:41 Well the checksum_algorithm: md5 isn't there right now 20:42:48 This PR was going to add it 20:42:52 right 20:43:04 so assuming it'll be there when added, it's repetitive 20:43:08 and causes confusion 20:43:32 agreed 20:43:32 I am just future thinking 20:44:19 what are other's thought on the subject? 20:44:25 yeah, agreed.... so it's a questoin of can we satisfy both old users and new users? 20:44:40 yeah, I know what you mean @abadger1999 20:44:54 I just feel we satisfy the old users by warning them and directing them to the new right way 20:45:16 Maybe the undocumented route and a note section that sayss "There used to be a get_md5 parameter, use get_checksum instead"? 20:45:24 we have lots of code rot if we keep around a parameter that is deprecated. 20:45:47 Oooh.. the deprecation message could include the note to use get_checksum, that might be the right way. 20:46:12 lol, 20:46:18 I thought's that's what it would do anyways 20:46:35 Still doesn't help people relying on it implicitly being set to yes 20:46:49 I still think it violates the stableinterface as it is currently written, but if the group wants to clarify what stableinterface means then I'm not going to be grumpy about it 20:47:34 here's a thought i had... can we alias it somehow 20:47:40 I think no, but thought i'd raise that as an option 20:47:42 So Step (1) Change default and deprecate with the message pointing to get_checksum. Step (2) in 4 releases, undocument the get_md5 parameter. Step (3) In ansible 3.0 or if we decide we're tired of maintaining it for old users, we remove. 20:47:48 and Koa is getting grumpy. I need to roll soon 20:48:19 Change the default for 2.5? 20:48:36 I am okay with changing the default in 2.5. I think bcoca was too. 20:48:40 abadger1999: +1 20:48:52 abadger1999: that seems to "check all the boxes" 20:50:13 ok, do we have a doc/page where we list things to deprecate in the future, or is it a try to remember to do kind of thing? 20:50:42 can someone take over for me pls :) 20:50:44 jborean93: Currently the latter but I would love it if you started the former. 20:50:47 thaumos: I'll endmeeting 20:50:48 thanks all! 20:50:53 ty!!!! 20:51:25 Cool, thanks will update the PR based on what we discussed 20:51:26 thanks all 20:53:10 #info Decided on a mix of several proposals: ‎[12:47:42] ‎<‎abadger1999‎>‎ So Step (1) Change default and deprecate with the message pointing to get_checksum. Step (2) in 4 releases, undocument the get_md5 parameter. Step (3) In ansible 3.0 or if we can agree we're no longer going to maintain it for old users, we remove. 20:53:17 #topic Open floor 20:53:29 Okay, we've gone long into overtime. Anyone have anything else? 20:53:44 #info no meeting on Thursday, it's a major US holiday 20:54:09 #info 2.4.2 rc1 comes out tomorrow; 2.4.2 final on the 29th if there are no blockers 20:54:25 I'll end the meeting in 60seconds if no one has anything. 20:56:49 #endmeeting