17:01:49 #startmeeting AnsibleFest Contributors Summit: Community Collections & Community Workflow 17:01:49 Meeting started Mon Sep 23 17:01:49 2019 UTC. 17:01:49 This meeting is logged and archived in a public location. 17:01:49 The chair is gundalow. Information about MeetBot at http://wiki.debian.org/MeetBot. 17:01:49 Useful Commands: #action #agreed #halp #info #idea #link #topic. 17:01:49 The meeting name has been set to 'ansiblefest_contributors_summit:_community_collections_&_community_workflow' 17:02:48 #chair abadger1999 acozine akasurde alikins bcoca dmsimard ganeshrn gregdek jborean93 jillr jimi|ansible jtanner mattclay madonius nitzmahone samccann sdoran 17:02:48 Current chairs: abadger1999 acozine akasurde alikins bcoca dmsimard ganeshrn gregdek gundalow jborean93 jillr jimi|ansible jtanner madonius mattclay nitzmahone samccann sdoran 17:02:59 Anyone one remote here for this? 17:03:18 Howdy 17:03:31 Hey, I need to juggle this and cloud breakout. Be down there after we finish talking vmware 17:03:34 gundalow: I'm half-way here and half-way in #ansible-cloud 17:03:36 listening, all is quiet 17:03:41 no idea which one will be more relevant for me :) 17:04:00 Yup, I think people will bounce between a bit 17:04:18 I'm not sure where I'm needed either. So I'm here but if someone wants me somewhere else, they can pull me out. 17:04:48 I hear ya gundalow 17:05:26 samccann: is there a place docs people will meet and discuss this year? 17:05:44 will this be text only, or text + voice (bluejeans)? 17:06:08 abadger1999: acozine is there physically. I'll ask if she has any informal docs gathering planned 17:06:40 Felixfontein - the bj links are in the etherpad pages. Which session are you looking for? 17:07:41 samccann: I found the links, I'm just wondering whether it's needed - having audio input from two different meetings is hard to handle :) 17:08:20 abadger1999: there is no official docs breakout today 17:08:25 In previous years, most discussion was done via bluejeans with a little input via irc 17:08:42 but if there's interest, I would be happy to gather a group 17:08:44 acozine: Cool. If you have something feel free to let me know. 17:09:00 BlueJeans probably won't let you be in two meetings at once 17:09:20 Partner meeting is in #ansible-meeting-2 17:10:05 rharolde: it does seem to work as a guest. though I don't have audio right now. 17:11:01 BlueJeans: https://bluejeans.com/3008457278/ 17:11:12 I can attempt to keep up with the community breakout w/ notes here 17:11:23 samccann: Thank you 17:11:28 So far: introductions around the room and what people hope to get out of this sesssion 17:14:49 rharolde: it works, but effectively you cannot hear any of the two meetings... 17:16:04 Discussing: what size should a collection be? 17:17:56 many small collections could be annoying - lots of collections keywords/qualifying modules and tasks. 17:19:27 #link https://docs.ansible.com/ansible/devel/user_guide/collections_using.html#using-collections-in-a-playbook 17:19:35 using a collection in a playbook ^^ 17:19:39 (nitzmahone) splits that account for distinct maintenance teams, release time lines, could be good 17:19:51 https://docs.ansible.com/ansible/devel/dev_guide/developing_collections.html 17:19:58 https://docs.ansible.com/ansible/devel/user_guide/collections_using.html 17:21:55 Can we (virtual attendees) see what Option D is? 17:22:12 a playbook or role could have 5-7 modules, each of which could be in a small collection (option D) 17:22:31 as I'm hearing it, Option D is many small collections 17:22:42 not sure what A-C is :-) 17:23:22 (many small collections will make it harder to move stuff around. probably won't happen a lot, though :) ) 17:24:08 abadger1999: option D is collections at 2nd directory level of lib/ansible/modules/foo/HERE 17:24:09 (how many raised hands?) 17:24:22 what's A, B and C? 17:24:48 one pro of small collections - might be easier to form a dedicated community/WG around that collection vs trying to support it as part of a larger collection 17:25:03 ^ also easier to do release cycles 17:25:12 samccann, bcoca: +1 17:25:13 not have 'aci' modules depend on nxos ones ... 17:25:14 similarly, might simplify the tests associated with that smaller collection 17:25:22 and requirements 17:25:49 If there's separation of infrastructure for each colleciton (like different github repos) then a lot of other things become easy with somewhat smaller collectins too. 17:25:54 also consider that for installation, this is not a limitation as 'meta collections' do work 17:26:10 also, smaller collection might help someone take over a community collection to make it certified for example. easier to migrate vs pull out from a larger collection 17:26:13 But a balance is good.... teams, release cycles, etc. 17:26:37 all in one and one per plugin are extreemes, i think we can find happy mediums 17:27:13 moving stuff (modules, plugins, ...) from one collection to another is probably hard (and requires duplicate code) 17:27:13 Are there defined requirements for the collections to be "certified"? 17:27:16 #info Need to prioritize user experience over developer experience 17:27:17 bcoca: can you explain how the meta collection could simplify the earlier comments about having FQCN scattered throughout a playbook if the modules are all in different smaller collections? 17:27:56 FragmentedPacket: legal contracts + technical stuff 17:27:57 samccann: ansible.commuinity <= meta colleciton that has no content, just 'depedencies' that poign to 20-40 collections that are part of community and get installed when you 'install ansible.community' 17:28:11 so unlikely to get a Community certified collection 17:28:27 by def, community wont be certified 17:28:50 Yeah I would imagine most collections would have at least 5-10 'things' (between plugins/modules/roles) 17:29:18 I don't think that will be sustainable for long. 17:29:33 (the meta collection) 17:29:45 its just a list of deps 17:30:01 to 'emulate' the current community plugins, in the end i expect most people to do piecemeal 17:30:11 very few need azure + aws +nxos + vyos + .... 17:30:25 its a 'kitchen sync' .. which i think is not very useful to most users 17:30:32 but some will insist on it .. for now 17:30:33 trying to externally keep deps working will be unmaintainable. 17:30:42 Right now, those are all under our control. 17:30:53 #info Only Core Team from this room have played with Collections 17:30:55 ansible-community collection would aslo be under our control 17:31:05 But once they're not under centralized control, keeping things working together gets much harder. 17:31:07 If it's purple output, it makes me nervous :D 17:31:09 #info there are 20 people in the room 17:31:21 abadger1999: true, but each collection should be mostly independant 17:31:23 far cry from 130 earlier 17:31:25 #info core + ~5 people have looked at some of docs/webinar/blog 17:31:36 bcoca: Oh, so we're going to continue to be the bottleneck of reviewing the changes to the content? 17:31:39 most of the ones i think we can include in 'community' 17:31:39 cyberpear: there are 3 breakouts happening now 17:31:41 abadger1999: no 17:31:44 Exactly. 17:31:53 each breakout have its own IRC or just main? 17:31:58 and that's why it will become unmaintainable. 17:32:05 abadger1999: we are not the bottleneck now, community can mostly merge now w/o core involvment 17:32:09 cyberpear: I believe they all have their own breakout. 17:32:11 abadger1999: earlier they mentioned giving more commit rights to working groups 17:32:12 cyperpear: partner breakout is on #ansible-meeting-2 17:32:15 *all have their own IRC 17:32:20 i would argue its as unmaintainable as current workflow 17:32:23 (which would be easier with a narrower breakdown) 17:32:25 geerlingguy: exactly. 17:32:57 most of them already have 'commit' thouhg indirectly via shipit 17:33:25 if no random thing blocks merging via shipit 17:33:45 (like #commits != #authors if people use the github suggestion feature :) ) 17:33:52 If we have a common meta collection like ansible.community, there needs to be a common decision making process/body/policy that can guide it to common places. If we don't have those things and no plan to do so, then a common meta collection is not going to work. 17:34:05 2.10 is the first release where maintainers have the option to move content out to collections 17:34:16 abadger1999: i would think the current 'sanity' tests would still apply to anything we ship 17:35:03 s/would/should (collections will need test structures set up once for each new repo—or if all in one, then in that repo) 17:35:04 can envision active working groups deciding on their schedule for moving content. 17:35:25 my opinion is that there should be a well-defined process for things included in the "batteries included" distribution, and should allow any modules that meet certain quality/guidelines/requirements, same as community modules today 17:35:47 ^ agreed 17:35:50 But, for instance, (1) we aren't shipping it anymore... these ship on their own schedules in their own ways. (2) sanity tests can be ignored by a collection. A collection can choose which ones make sense and which ones don't. 17:36:10 Without having common decision making, those things stop having meaning. 17:36:44 (as someone said earlier, for instance, "which python versions does each collection support?") 17:36:44 a collection can ignore sanity tests, but if WE maintain a community one , we would not include versions that dont pass them in that meta 17:36:51 bcoca: incorrect. 17:36:57 We already do. 17:37:01 #info what's the smallest step that allows us to move in the right direction. IE can we just move some modules into a collection, the move others in later Ansible Release 17:37:05 because they have good reasons to ignore them. 17:37:22 new collection name: "ansible.dumpster" 17:37:33 And if we're not reviewing the changes, then we have to trust that collections are adding themselves to ignoring certain tests for good reasons as well. 17:37:43 geerlingguy: that is mostly what 'community' is right now 17:38:16 I think of community more as: "ansible.purgatory" 17:38:27 #info Some modules have "interesting" cross dependencies. IE VMware modules use module_utils/networking 17:38:36 example of a challenge - vmware has its own module_utils, but also uses one in network. Dependencies become problematic if we move things out separately 17:39:30 module_utils has technical solutions, though. 17:39:43 We can do backwards compat for module_utils 17:39:57 it's TBD how many of these unusual dependencies there are. 17:40:00 (things which require fqn in a playbook is not as esay) 17:40:00 I wonder how much will splitting into collections lead to code duplication 17:40:29 module utils is not only problem, plenty of people 'subclassing' modules 17:40:43 * geerlingguy just subclassed a module yesterday :O 17:41:04 modules really wont work, unless you force ALWAYS connection local 17:41:10 subclassing modules doesn't work. 17:41:27 Tyler B predicts: Ansible 'next' will take as long as Python 3 to adopt (/s) 17:41:36 But bcoca used quotes around subclassing so he might be doing something different ;-) 17:41:43 subclassing a class, not module 17:41:51 geerlingguy: yep. that works. 17:42:06 abadger1999: people do really weird things 17:42:07 Although I've grown to realize that is frequently a bad idea. 17:42:13 bcoca: no... it's not possible. 17:42:17 but that class comes from a plugin that's part of core that's community so if it split out then my collection would need to change to point to that community collection... 17:42:17 even instanciating and monkey patching plugin 17:42:19 it gets complicated 17:42:26 ansiballz doesn't allow it. 17:43:02 With a plugin, you can do it. 17:43:19 abadger1999: did you add protection for that? cause i know people that were doing that and it 'worked' while conneciton was local 17:43:20 but not modules. 17:43:31 same as using __init__.py in modules (we had a couple of cases that even made it into core) 17:43:44 longterm it may be more desirable to use FQCN in playbooks instead of the collections keyword(s) 17:43:56 Only working for connection local is not working to me. I think 2.9 will break it in some circumstances, too. 17:44:13 it works with `connection: local` because it is using python to import the module directly, totally ignoring ansiballz. it won't work well with venvs though 17:44:16 A side effect of relative imports working. 17:44:18 ok, 'workingish' on their test due to conneciton local 17:44:34 (FQCN = fully qualified collection namespace) 17:44:36 felixfontein: yep. 17:45:02 * geerlingguy still writes FQDN when I mean FQCN :P 17:45:03 I do not know who is speaking in crystal CD, but there is 2 people who were speaking at the same time 17:45:28 me too geerlingguy! 17:45:39 #topic - PR backlog 17:45:59 Can we have the existing name or location forever point to the new collection/name where a module or plugin has been moved? Whoever moves the module would need to update the pointer. 17:46:20 abadger1999: when you say you can't subclass a module, are you talking about something other than this? https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/k8s/common.py#L264 https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/k8s/raw.py#L65 17:46:42 .. then nothing that depends on it would ever break. 17:47:42 `needs_triage` - meeting 2x a week where core committers go in and review these, but not community issues 17:47:53 now talking: Sivel, who's describing how Core Team does triage of new issues & PRs for support:core that have arrived this week. Also once a week they look at oldest 17:48:14 fabianvf: yes, something different. Like, You can't subclass KubeVirtPVC from here: https://github.com/ansible/ansible/blob/devel/lib/ansible/modules/cloud/kubevirt/kubevirt_pvc.py#L311 17:48:26 #info Core Team can "only" get through 10 old issues/PRs 17:48:36 fabianvf: It's inside of an ansible module (lives in lib/ansible/modules) rather than inside of a module_utils. 17:49:11 abadger1999: ah ok, so you can subclass an `AnsibleModule`, but you can't subclass anything from the `modules/` directory 17:49:21 #info PR review days in IRC - can get through around 50 in a long day. 17:49:32 fabianvf: although, as I also hinted, subclassing a class inside of a module_utils has to be done carefully... it's relatively easy for a base class to break a subclass. 17:49:37 fabianvf: yep. Correct. 17:49:38 fabianvf: at least not without dirty tricks (like connection:local or having ansible installed on the remote host as well) 17:49:52 (unless you control both the base class and subclass) 17:50:14 felixfontein: Yep. Although the 2.9 relative import feature will break those tricks in certain circumstances. 17:50:46 geerlingguy: yep. But, for instance, everyone subclassing AnsibleModule is probably doing it wrong ;-) 17:50:53 abadger1999: yeah I'm definitely familiar with the breakages, but there's enough shared logic that inheriting the fixes has been worth it thus far 17:51:42 did that 17:51:47 i've done it a couple of times 17:51:53 #action gundalow Speak to GitHub to see if we can get view count for Issues/PRs 17:52:00 felixfontein: was that Docker? 17:52:00 mostly cause i makred them during triage and figured it out later 17:52:01 (when I thought the feature makes sense, and was interested in the feature and/or module) 17:52:06 gundalow: docker and/or crypto 17:52:09 geerlingguy: also, an issue that I saw today was someone subclassing a module class. But then not using the base class's argspec as the base of their module's argument spec... that is equally fragile. 17:52:29 felixfontein: ack, thanks 17:52:56 I also sometimes create feature requests as a reminder of stuff that could/should be implemented, but I don't want / can implement now (because of lack of time, ...) 17:54:21 "drive by contributions" (as mentioned earlier) 17:54:31 fabianvf: https://github.com/ansible/ansible/blob/devel/lib/ansible/module_utils/aws/core.py#L121 <=== that's what we did for the AnsibleAWSModule base class instead of subclassing. It's a bit more robust. 17:54:40 like people searching for the feature, finding the request, and implementing it :) 17:55:40 fabianvf: people don't like it because it requires that you have to write more boilerplate. But it's better because AnsibleModule won't do something like add a new attribute that then is shadowed by something in your subclass. 17:56:02 #info Do we need to get better at saying "no" to incoming feature requests 17:56:44 which projects are this? 17:56:46 abadger1999: yeah I'll have to unpack what that's doing later 17:57:06 yes to 'Do we need to get better at saying "no" to incoming feature requests' 17:57:14 #info Closing is about expectation management 17:57:20 fabianvf: it's basically composition instead of inheritance. 17:57:40 Best happy medium IMO is what K8s community bot does, with the 90-day-stale thing 17:57:47 zombie land 17:57:48 #info a closed issues is just as easy to find as an open issue. AND makes the open issues easier to find 17:57:48 tagging is good, so you can distinguish between implemented feature requests and not implemented feature requests (both are closed) 17:57:56 easy enough to mark as 'not stale' or as 'never stale' (anyone can do it via comment) 17:58:05 +1 to stale bot, if the issue still has interest it's easy to bump it 17:58:37 * geerlingguy just wants ansibot to have like 10,000 more loc 18:00:14 my list is aprox 300 ... still tiny, probably overlaps with his a lot 18:00:57 as a module maintainer my list is generally ~50 18:01:00 discussion: how many of the current issues backlog are possible targets for some developers here. 18:01:00 We could close 627 community feature requests within 90 days :) 18:01:04 except if the closed one is locked 18:01:34 geerlingguy: as in just adds `needs_info` to the 627 label/support:community label/feature 18:01:36 felixfontein: then just open a new dupe feature (if necessary) 18:01:46 felixfontein: Yes... that should be mentioned 18:01:46 samccann: if you are looking for good intro issues the easyfix label might help 18:01:53 geerlingguy: then it's harder to keep track of how many people are interested 18:02:05 @gundalow ^ Mention that closed issues and PRs get locked 18:02:08 (and more stuff to actively close) 18:02:29 true, but if someone closes an issue, it pops up again, then opened again, etc... either there's a troll, or it's something that should be dealt with 18:02:36 sivel: agree - the `easyfix` label has helped us get community folks to take on some docs issues 18:02:51 bot 18:02:54 named sivel 18:02:59 hehe 18:03:11 the first two times I've seen it, I was wondering whether sivel does it manually :) 18:03:47 maybe closed feature requests (which aren't implemented) shouldn't be locked? 18:03:56 felixfontein++ ^^ 18:04:18 I don't like locking issues as a general rule... 18:04:36 a lot of times someone comes into a really old issue and adds some really good info (for future people who run into it again) 18:04:48 many times unrelated to ticket discussion 18:05:25 for bugfixes and merged PRs and implemented features, I think locking is a good idea in general (if you have a problem with it, open a new issue). though there are exceptions @geerlingguy 18:05:29 but to the point above ( felixfontein's ) — just don't lock closed feature requests 18:05:45 geerlingguy: I'd still lock them if they have been implemented :) 18:05:54 for those who want to hack on openstack module PRs: https://github.com/ansible/ansible/issues?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3Aopenstack+label%3Aneeds_triage 18:06:09 rewrite ansible in ruby STAYS LOCKED 18:06:22 does that one actually exist? 18:06:23 shipit 18:06:26 I hate locked items 18:06:38 close it, don't lock it 18:06:57 its mostly to remove illusion from users that they actually let us know anything 18:07:44 it would be cool if github issue queues themselves had a 'stale issue' functionality 18:08:11 3,6,9 months all work for me 18:08:24 my filter is any issue closed >15 days gets ignored 18:08:31 I can't comment on my own PR if it's locked 18:08:37 locking seems reasonable to tie to "Will anyone see new comments here"? 18:08:42 you can prod us to unlock 18:09:13 bcoca: that only works well if you know how to contact "us" easily, like on IRC :) 18:09:23 So it seems more like "what length will bcoca change his filter to match what the bot does?" ;-) 18:09:28 or ML 18:09:35 Or in a new issue. 18:09:43 I also find locking pretty frustrating, unless the last comment is the de-facto solution and the whole discussion has clearly played out. Generally erring towards locking ends up feeling very anti-user, at least to me 18:09:46 Sounds like Ansibot needs more Watson integration ;) 18:10:08 fabianvf: normally 'def facto solution' is 7 posts up and we close cause people keep appending misinformation 18:10:15 fabianvf++ same here, I generally see locking as "this discussion was off the rails, so it was locked" 18:10:24 or asking same question, w/o reading answers 18:10:37 not "it's old so it's locked" (unless there's a spam problem, which thankfully GitHub seems to not have) 18:10:43 bcoca: even then if you're going to lock it the best solution should be the last comment IMO 18:10:51 fabianvf: 18:10:55 ++ 18:11:00 * geerlingguy in general, outside ansible/ansible when I see locked I feel offended :P 18:11:14 lol 18:11:16 fabianvf: easy to do with manual locking, not easy with 'time/automated one' 18:11:18 geerlingguy++ 18:11:29 if i lock due to 'off rails' my comment normally links 'solution above' 18:11:31 bcoca: well I'm arguing against time/automated locking :P 18:11:45 fabianvf: manually locking thousands of issues is not scalable 18:11:58 doesn't affect those on the repo, but that's not most folks 18:12:04 bcoca: do thousands of issues need to be locked though, or just closed? 18:12:04 unsubscribe is a thing though 18:12:12 why lock at all? 18:12:17 locked, tons of people still comment on closed issues 18:12:20 ^ if the problem is notifications, unsubscribe from the issue 18:12:24 cyberpear: cause WE DO NOT SEE THOSE 18:12:30 geerlingguy++ 18:12:42 people get frustrated as they expect maintainers to respond 18:12:52 people are dumb, just ignore them :) 18:12:55 users can still help each other 18:12:55 this is not for us ... we dont see it already ... its for users posting into ether 18:13:16 yet they rarely do in closed issues, its mostly list of 'is anyone going to respond, this is still and issue!!!' 18:13:19 but they should get used to it 18:13:29 Can you show use A,B,C,D ? 18:13:32 I see tons of "I'm having this problem" comments when I'm browsing project issues on GitHub 18:13:53 ansibot could learn to respond on old issues 18:14:04 geerlingguy: i think that is poor user experience 18:14:12 meh 18:14:19 it's the standard everywhere on GitHub 18:14:20 cyberpear: at one point i fear asnibot will take over roombas and end humanity 18:14:21 bbn it 18:14:26 from a user perspective, locking issues feels actively hostile and turns me off a project 18:14:29 geerlingguy: standard != good 18:14:35 no but it's expected 18:14:35 fabianvf: 18:14:44 and I don't believe locking issues == good 18:14:47 agreed 18:14:50 agreed 18:14:53 fabianvf: depends on how you lock, we have message explaining 'we dont see old issues, please open new one' 18:15:02 like I said, outside of ansible/ansible, locked is kind of an offensive thing unless you were being a troll 18:15:04 locking and not saying anything ... 18:15:14 it's hard to find the new issue 18:15:24 not find, open 18:15:30 most times, there is NO new issue 18:15:33 yes drive 18:15:35 find 18:15:38 if anyone creates one, we do instruct 'link old issue' 18:16:03 I hear talk about options A/B/C/D, but no explanation of what those are. 18:16:05 but you can't link old to new (and old is the one you get from Google) 18:16:09 so those going to old issue, should see link to new 18:16:15 will old issue show link to new one? 18:16:21 geerlingguy: github shows linked issues by default 18:16:33 no, new -> ref #old, then in old history you see 'new' 18:16:34 even utf created by external user? 18:16:38 rharolde: A/B/C/D is spectrum of A being "one giant collection with everything" vs D being "one collection for every folder in ansible/ansible modules" 18:16:47 cyberpear: even if you reference in diff project 18:16:48 thanks 18:16:53 bcoca: true 18:17:02 even for locked? 18:17:06 yes 18:17:09 but I ignore those things because everyone is always linking to popular issues 18:17:19 * cyberpear tries 18:17:23 Anyways, I'm still on team don't-lock 18:17:24 so basically we cannot win with you? 18:17:48 also "don't lock" vote from me 18:18:03 we should schedule for irc meeting 18:18:05 You can, if autolock is disabled. Manually lock if the need arises, this is how every other community I'm in on GitHub works 18:18:10 closing can be automated 18:18:10 who without commit eus 18:18:16 yeah locking is best reserved for trolls IMO 18:18:25 I don't think that's going to happen. To be frank we'll always lock issues to help us maintain sanity 18:18:26 rights wants to lock? 18:18:28 we lock issues, not people out 18:18:38 we dont lock an issue due to troll, we ban troll 18:19:00 ùhh, I can't hear what is said in community room 18:19:27 misc: Some folks are forgetting to speak in to the microphone. :) 18:20:09 sorry :( 18:20:14 change will get noise, either way, the question is if that noise is due to sake of change or cause change is actually bad 18:21:12 which dots? 18:21:18 there's no screen sharing active 18:21:19 mnaser: see os_stack.py and grep for min_version 18:21:23 mnaser: that is one place where this is checked 18:21:29 @gundalow are you able to share screen? 18:21:33 dots are imaginary! 18:21:45 it's all so complex! 18:21:55 we 'collect' everything 18:22:32 mnaser: note my checkout might be old 18:22:37 (sivel) We'll likely be shipping the modules in core frozen in time for a period of time even after they're moved to collections 18:22:41 `migrated_to` 18:22:55 http://dash.tannerjc.net/graph Query: repo ansible/ansible Tick backlog 18:23:19 yay, there's something to see! 18:23:26 we are now DDoSing jtanner's server :P 18:24:28 What, it doesn't auto-scale with an ansible operator? ;) 18:25:07 cc limit 18:25:20 ha, I don't think jtanner's had time to split that thing into microservices and ship it on serverless yet 18:25:30 its also on his 'personal' cloud 18:26:05 I also mentioned our kibana instance, which is at https://kibana.eng.ansible.com/ 18:26:19 You have to write your own queries, nothing really pre-built 18:26:20 if we make the server crash, it goes serverless by definition 18:26:56 therapy 18:27:04 heh 18:28:13 Working Groups: https://github.com/ansible/community/wiki 18:28:57 DING DING Change over in 15 minutes 18:32:11 https://tannerjc.net/wiki/index.php?title=Ansible_Developer_Filament 18:33:38 Thanks, everybody 18:33:41 #endmeeting