16:04:51 #startmeeting golang_sig 16:04:51 Meeting started Wed Feb 27 16:04:51 2019 UTC. 16:04:51 This meeting is logged and archived in a public location. 16:04:51 The chair is nim. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:04:51 Useful Commands: #action #agreed #halp #info #idea #link #topic. 16:04:51 The meeting name has been set to 'golang_sig' 16:05:21 #topic Roll Call 16:05:27 .hello2 nim 16:05:28 nim: nim 'None' 16:06:02 .hello2 16:06:03 eclipseo: eclipseo 'Robert-André Mauchin' 16:06:07 .hello2 ngompa 16:06:08 Son_Goku: Sorry, but you don't exist 16:06:14 .hello ngompa 16:06:15 Son_Goku: ngompa 'Neal Gompa' 16:06:35 QuLogic, deparker: want to joing the golang SIG meeting? 16:06:40 join? 16:07:21 now we wait till 17h10 I think to give people time to arrive 16:07:32 eclipseo, nice to see you with us again 16:08:00 yeah sorry for last month I had a little break 16:08:34 eclipseo, we all missed for one reason or another all the meetings since november I think :( 16:08:39 I've been bringing myself up to speed with reviews and now I'm back into circular Go deps again 16:09:13 yeah we all see you are alive :) 16:10:02 heh 16:10:26 this month has been an "everything is on fire" month for me 16:11:10 end of Christmas break for everyone I fear 16:11:30 well, hardware failure of one of our servers is not a fun situation to recover from 16:11:47 err $DAYJOB's servers 16:12:11 I'd love to have one of those, I'm stuck in the provisionning phase at $DAYJOB 16:13:34 anyway, time is up, let's go 16:14:15 #topic where do we want to go now (aka https://pagure.io/GoSIG/go-sig/issue/20) 16:14:55 that's the only issue marked as meeting in pagure 16:15:00 it's getting stale 16:15:28 we also haven't had a meeting in a month ;) 16:16:18 I think we've all seen by now that neither jchaloupka nor jcajka were keen on involving themseves at this stage 16:16:21 at what part of the 11 points ane we? 16:16:45 well, I'm pretty sure that jchaloupka is basically dead to the world right now 16:16:52 I haven't seen hide or hair of him in months 16:17:28 right now the redhat-rpm-config stuff is done 99% of the way, someone need to convince the redhat-rpm-config maintainers to finish the little missing bit 16:18:15 that means we could move to 2 or even force resolution on 1 by moving to 2 16:19:05 QuLogic has been fixing golist 16:19:13 I've been fixing the macro packages 16:19:35 but I still have no idea how we could get them in the distro without support from jcajka 16:20:02 as they need to replace the current stuff to be useful 16:20:07 any idea here? 16:20:33 Son_Goku, you move more in distro cricles than us, how can we get there? 16:20:40 circles 16:20:54 But when this get implemented, do we need to rewrite all our SPECs or is this packaward compatible? 16:21:18 this is intended to be backwards compatible 16:21:29 if it's backwards compatible, jcajka will help us 16:21:29 and both QuLogic and my tests are green 16:21:40 and I can talk to him about making that happen 16:21:51 he's been very leery after the last few adventures 16:21:57 but the proof is in the pudding 16:22:18 if everything is double checked, I think he will agree 16:22:18 as for the other distros, I can reach out to my counterparts in openSUSE and get a dialogue going 16:22:42 it'll be trivial to get Mageia to go along, since Fedora and Mageia are pretty close as-is 16:22:54 someone should reach out to Akien, who is both Fedora and Mageia 16:22:59 (and not me ;) ) 16:23:53 eclipseo, nothing is perfectly checked unfortunately, you and others churn out packages too fast for anyone to retest all the time 16:25:02 Son_Goku, last time the only thing that broke is an alias that jchaloupka left in despite redhat-rpm-macros maintainer to nuke it :( 16:25:27 Son_Goku, so are you ready to do it? 16:25:31 Currently I'm checking rclone deps, for which upstream si moving fast in term of releases. So in any case, I'll revisit them when the new macros are in place. The only issue is that a lot of this is circular dependencies hell. 16:25:48 Son_Goku, what do you want from QuLogic or me to check things works before the next step? 16:26:12 I think at this point we just need jcajka's signoff 16:26:39 Son_Goku, yes he and jchaloupka own the packages that need changing/retiting 16:26:42 retiring 16:26:45 Would be great to have them all implemented, as I don't really wamt to continue bushing updates that will be obsoletes once the new macros are in 16:27:15 and jcajka's signoff is important to get this stuff working for EL8 too 16:27:19 as he's our connection to the inside 16:27:55 eclipseo, they won't be obsolete, they just can not use the enhancements that make spec wwriting easier 16:28:34 but anyway another reason we need this done is that Go modules will be on by default in Go 1.13 16:28:46 and that requires scary tooling reworking 16:29:11 and you can't really rework what's in Fedora right now 16:29:47 We need jchaloup for: https://pagure.io/golist/issue/1 16:30:36 eclipseo, QuLogic has fixed it in a PR 16:30:49 https://pagure.io/golist/pull-request/16 16:31:10 eclipseo, that's why we need this code in a clean package that QuLogic can update and maintain 16:31:12 yes that what I had in mind too when I investigated the bug 16:31:17 okay, I gotta go to work now 16:31:21 this should be committed 16:31:22 I'll be back in ~15 minutes 16:31:34 Son_Goku, ok see you in 15min 16:32:19 eclipseo, we're all in a 4th dimension land where the previous tooling maintainers have gone to greener pastures and the new ones are not official yet 16:32:58 anyway *if* Son_Goku can make jcajka and rehat-rpm-config maints to move 16:33:25 it'll all just be a mass rebuild, probably in a side branch, to check what works or not 16:33:25 I got the file triggers for ldconfig to happen 16:33:31 if I can do that, I can do almost anything 16:34:02 Son_Goku, the remaining stuff is simple and trivial, that's why they are bikeshedding it to death and not merging 16:34:15 bbs 16:34:16 on what branch will the new macros be active? From F29 to F31 or only F31? 16:34:45 eclipseo, probably, just devel till the first mass rebuild is ok 16:34:54 eclipseo, and then pushed to stable 16:35:25 eclipseo, I don't think it's wise to push to stable before we've done at least one serious rebuild in devel 16:36:32 ok 16:36:35 eclipseo, and don't think anything will break, and if something breaks it will be a corner case easy to fix, but that kind of initial bootstrap fixing is easier in devel 16:36:58 now the scarry stuff 16:37:00 modules 16:37:30 i still haven't understood them so I'm not much help here 16:37:38 I'll explain 16:37:51 for you and others that may read the meeting CR 16:37:59 I'm not sure how it will benefit Go packages except for thing like Kubernetes 16:38:11 basically, in just a few months, Google will release Go 1.13 16:38:22 at that point modules will be on by default 16:39:00 what will it change for us? 16:39:07 that means nothing we have in the distro will build anymore unless we manage to create module packages in the meanwhile 16:39:31 or that we diverge from upstream and force non-module mode Fedora-side 16:40:14 because upstream decided modules and traditional builds can not cohexist and do not use the same files on disk 16:40:49 how can we handle it then? 16:41:02 so we need to decide, probably by next meet, if we want to go the diverge-from-upstream route or get module-ready 16:41:31 what would be "module-ready" entail? 16:41:47 it seems to me that it's yet aother way to bundle 16:41:49 module-ready would mean: 16:42:42 generate golang-foo-module or golang-foo-module-devel packages containing the module files 16:43:55 generate the deps in rpm for those module files 16:44:12 index thos module files when installed on disk 16:44:40 handle all the cases where the module limit is not the same as our current devel packages 16:45:00 the issue i see if we diverge from upstream is tat at one point it will not be supported anymore and we will have issue while reporteng bugs to upstream bicause we don't use the official build method 16:45:34 for example upstream decided testing code was an integral part of modules, module deps include the depos needed by testing code, you can not ifdef it 16:46:15 this is problematic for circilar deps issues 16:47:02 eclipseo, I agree we have to go the module route sonner than later unless we want to be keft on the side by upstreams 16:48:02 but anyway, forgetting circular deps, because those are things upstreams are supposed to take care of 16:48:29 we have the problem that Google is pushing hard for modules but its tooling is very immature 16:48:47 and basically only handles the case where go gets everything from the internet 16:49:12 so we need to write our own code to create the module files 16:49:49 we need to write our own code to index the module files 16:50:14 and we need to convert module metadata to rpm metadata 16:51:13 I think I know how to do the conversion thing 16:51:23 for simple clean module requires 16:51:56 so it will work for 90% of the projects and fail badly for the 10% that try clever weird things 16:52:25 creating the module files is just copying the project files in the correct place and zipping it 16:53:37 but since upstream does not provide an authoritative way to do this, that means we'll have to rely on golist to identify project files 16:53:56 modules as defined in go.mod files always reference a specific version, while what we package are often the latest version only, how will we handle this? 16:54:36 that means we can not forget https://pagure.io/golist/issue/2 and we really need someone to fix it 16:55:27 eclipseo, as far as i understand things one of the main point of modules was to define the upgrade logic 16:55:41 eclipseo, so for all projects that use semver 16:56:58 eclipseo, the go compiler should accept foo a.b.c instead of foo x.y.z as long as a=x and b.c >= y.z 16:57:11 that's the easy nice thing in modules 16:57:38 eclipseo, otherwise we just do compat packages 16:58:10 eclipseo, another nice thing of modules is that compat packages should ont clash on-disk as in GOPATH mode 16:58:20 nim, sorry I saw this kind of late, I'm on pacific time... anyways I assume the go sig meeting is over but I'd very much like to join in the future... is there someone who could ping me with a calendar invite or something? 16:58:40 deparker, it's still on and you're welcome 16:58:50 deparker, we were discussing modules 16:58:56 nim, I have back to back meetings this morning right now unfortunately :( 16:59:24 could I be invited to future meetings so I can make sure I'm available? 16:59:51 deparker, the meeting bot sends and invite one week before to the golang mainling list 17:00:09 nim, ack 17:00:11 deparker, just read the ML, it's very low-traffic 17:00:34 deparker, we count on you! 17:00:57 anyway, to get back to modules 17:01:13 mapping deps seems doable easy peasy 17:01:33 generating module files needs someone to finally fix https://pagure.io/golist/issue/2 17:01:50 and indexing module files: I have no idea 17:02:25 I've not been able to locate the index spec so far, not the code that generates it on the Google servers 17:02:55 eclipseo, so that's all the things that need to be done 17:03:11 eclipseo, just before we get to the real-world testing 17:03:29 and see all the ways upstreams manage to break our assumptions 17:03:46 I don't see us being 1.13 ready when it's published 17:03:55 that's why at this stage I'm pretty pessimistic on us being ready 17:04:04 I can't help much with it as I'm not a programmer 17:04:23 eclipseo, NP, I'm not really a programmer either 17:04:40 I just do it because it needs to be done by someone 17:06:31 and, some upstreams won't be ready by 1.13 time I think, so the real deadline is 1.14 (even though it sucks to diverge from Golang upstream for one version) 17:07:04 but we won't be ready for 1.14 either without packaging prototypes for 1.13 17:07:36 which means getting all the stuff in https://pagure.io/GoSIG/go-sig/issue/20 out of the way first 17:07:58 was I more or less clear or do you have other questions? 17:09:01 eclipseo, I was all assuming it would be way easier before discovering upstream had made an hard break between modules and non-modules 17:09:21 eclipseo, and not provided anything for people not living in go get land 17:10:15 no that was clear, I just don't see how everything will fit within our build system in the end 17:10:41 eclipseo, that means I wasn't clear :) 17:11:06 eclipseo, basically, in a target module world 17:11:50 eclipseo, all the current devel packages are useless and probably gone 17:12:15 That I did understand 17:12:37 eclipseo, and you have module/module-devel packages that do the same thing, and contain module files (zip files) 17:12:59 eclipseo, and you can not mix modules and non-modules in a build 17:13:35 but some old package will never move to the module thing 17:14:04 so does it mean we will need to keep the old system and the new system together? 17:14:14 the overhead would be crazy 17:14:46 eclipseo, the first step is being able to generate module packages 17:15:22 eclipseo, I can automate easily the generation of the mirror old-style devel package from the module package if necessary 17:16:00 and then we decide when we turn old-strype generation off because it's just wasted repo space 17:16:29 what are other distros doing? are we the only ones unbundling everything? 17:16:39 no idea 17:17:12 IMHO everyone is at the "drat, 1.12 was released, modules will be on in 1.13, how do we do it now?" 17:17:55 ie modules cease to be just a nice theoritical idea, and people realise Google didn't ptovide the needed tooling for distros 17:18:45 module were supposed to remove vendor and force evryone to unbundle 17:18:46 maybe we shoild run experiments with 1.12 with GO111MODULE=on 17:19:07 unfortunately you can't 17:19:22 before the point where you generate module packages 17:19:42 because if you don't generate your own module packages 17:20:11 GO111MODULE=on will just cause the go compiler to download stuff from the internet 17:20:50 and sure it will work (as in "it builds") but you'll have no idea where the module was generated and how 17:21:16 that's the "upstream decided to do a hard break" part 17:21:51 you can't take a codebase, with a working GOPATH, and convert one of the deps manually to cjeck how it goes 17:22:16 you need to put everything in its own module to start checking 17:22:33 or download blyindly pre-made modules from the internet 17:23:03 or vendor everything (which will work with GO111MODULE=on, except you won't be using module mode at all) 17:24:09 that's why fist step is to start generating modules, forgetting about all the tricky stuff like circular deps 17:24:40 there is this also https://blog.golang.org/modules2019#TOC_5., which would need to be bypassed I guess 17:24:48 and once you have modules working in the simple case, iterate to see just how far you can go with the simple case 17:24:59 and what patterns require packager workarounds 17:26:05 eclipseo, we'll just nuke the sum file I think 17:27:07 at first at least 17:28:04 will probably have to because otherwise it's not possible to patch anything at the distro level 17:28:57 So now we will need to rebuild our current packages with new macros, but then in August we will need to reinvent everything for Go 1.13 17:29:03 great :( 17:29:05 and we will need to patch because I don't think upstreams will start magically releasing perfect code that never needs patching 17:29:42 eclipseo, progress! 17:30:10 eclipseo, more seriously, the new macros are just incremental enhancements 17:30:43 eclipseo, the module thing is a lot more scary, because it adds constrains on upstreams and us 17:31:03 and sure the end result will be better, but 17:31:30 I'm pretty sure that any spec, that does heavy surgery to workaround problems 17:31:40 won't survive modules without deep changes 17:32:11 that's why the new macros will help us a lot here 17:32:27 by helping to remove all the boilerplate 17:32:53 so it will be clearer if a spec does tricky things that will need a modulectomy 17:34:42 basically, once we get our tooling to work 17:35:07 it will be trivial to generate module, or devel, or module+devel from clean upstreams 17:35:23 ok, I hope so 17:35:32 and unclean upstreams will have to either move to modules, and clean their act in moving, or die 17:36:30 but, there will probably at least six months of heavy churn and dieout 17:37:17 and what's unclear at this point, is how many upstreams will clean up their act 17:37:38 and how many will find ways to continue doing garbage in module mode 17:37:55 just different garbage that will require different workarounds on our part 17:38:37 just for reference, the upstream ticket on providing some module tooling https://github.com/golang/go/issues/28835 17:39:23 I'm not excessively optimistic, it's targetted at 1.13 only, and not sure if they will do all the things we need or just part of them 17:39:50 that's why I think it's unreasonable to rely on this and we need to get our own tooling to work 17:42:09 except for the $GOPROXY/mymodule/@v/list part I think we could implement all the rest with not too much effort 17:42:20 and then it's just mass packaging and testing 17:44:45 eclipseo, except for the BuildRequires part 17:45:04 I'm pretty sure a spec conforming to the template here: https://pagure.io/go-rpm-macros/blob/master/f/templates/rpm/spectemplate-go-0-source-minimal.spec 17:45:35 could generate indiferently devel and modules packages with no packager change in the spec 17:46:12 that's the nice part of abstarcting everything in macros 17:46:29 yeah i was reading the template earlier, seems straightforward now 17:47:02 the only reason you would need manual change is that as long as https://github.com/rpm-software-management/rpm/issues/104 is not done 17:47:29 if modules generate golang-mod() provides and devel packages generate golang() packages 17:47:57 you need to switch manually BR from one to the other since they are not autogenerated 17:49:12 I don't hink repurposing golang() provides in module mode is doable unless we dump all existing devel packages in one go and restart everything from scratch 17:50:11 it seems it's on the right path, generally ignatenko things go through 17:52:15 everything is moving in the right direction Go side and rpm side, it's the Go SIG in the middle which needs to adapt 17:52:20 that's painful :( 17:53:13 thanks to you and others the golang packageset is a lot better shape than it was a year ago 17:53:37 otherwise I'de have just said dump everything and restart from scratch for modules 17:54:17 I'm rot sure I will put as much work upgrading the current packages, I'd like to wait for the new macros to settle in 17:55:49 the point is, that with your work, we don't need to upgrade the current packages 17:56:48 just put the new fixed golist/macro code in the distro (that's for Pharaoh_Atem, QuLogic and me), wheck your specs still build fine 17:57:03 and then just do new specs in new improved mode 17:57:29 and start working on modules so those new specs generate modules by default 17:58:00 and then once we get to the point that generating modules should just work for new-style specs 17:58:18 yes there will be a need for a mass cleanup of your specs 17:58:27 ok 17:58:48 hopefully, they should be more regular than the previous ones 17:58:50 I got to go now 17:59:01 so the mass cleanup could be done with scripting 17:59:24 eclipseo, that's the end of the hour anyway. Pharaoh_Atem didn't come back :( 17:59:38 yeah :( 17:59:44 maybe erdeeting then 17:59:45 eclipseo, do you want to add something to the meeting log? 17:59:52 endmeeting i mean 18:00:21 eclipseo, otherwirse I'll just record he should work with jcajka to get the new packages in 18:00:22 the oly action is for Pharaoh_Atem to push jcajka in the right direction 18:00:35 yeah 18:01:11 i'm going, see you later 18:01:54 #agreed Pharaoh_Atem should work with jcajka and redhat-rpm-config maintainers so the new golist and macro packages can be used in the distro 18:02:23 #chair nim 18:02:23 Current chairs: nim 18:02:31 #agreed Pharaoh_Atem should work with jcajka and redhat-rpm-config maintainers so the new golist and macro packages can be used in the distro 18:03:12 #info SIG members should think about where they want to go with Go modules for Go 1.13 18:03:25 eclipseo, thanks a lot for your time! 18:03:37 #endmeeting