15:02:25 #startmeeting modularity_wg 15:02:25 Meeting started Tue Dec 4 15:02:25 2018 UTC. 15:02:25 This meeting is logged and archived in a public location. 15:02:25 The chair is nils. Information about MeetBot at http://wiki.debian.org/MeetBot. 15:02:25 Useful Commands: #action #agreed #halp #info #idea #link #topic. 15:02:25 The meeting name has been set to 'modularity_wg' 15:02:26 #meetingtopic Weekly Meeting of the Modularity Working Group 15:02:26 #chair dgilmore langdon sct 15:02:26 Current chairs: dgilmore langdon nils sct 15:02:31 .hello2 15:02:32 asamalik: asamalik 'Adam Samalik' 15:02:35 #topic Roll Call 15:02:39 .hello psabata 15:02:39 .hello nphilipp 15:02:39 contyk: psabata 'Petr Šabata' 15:02:42 nils: nphilipp 'Nils Philippsen' 15:03:08 .hello2 15:03:09 langdon: langdon 'Langdon White' 15:03:27 #topic Agenda 15:03:44 #info #108 How do we keep rawhide sane? 15:03:50 #info #112 Discussion: Module lifecycles 15:03:57 #info #114 Stream default changes & Fedora Changes 15:04:05 #info #115 Discussion: Stream branch ownership for packages & modules 15:04:13 and I believe we got a couple more 15:04:17 #chair contyk 15:04:17 Current chairs: contyk dgilmore langdon nils sct 15:04:20 I have one more thing -- review of the naming guidelines 15:04:28 #info review of the naming guidelines 15:04:38 this doesn't have a ticket, right? 15:04:48 it doesn't 15:04:50 .hello2 15:04:51 ignatenkobrain: ignatenkobrain 'Igor Gnatenko' 15:05:03 Anything else? 15:05:13 nope 15:05:15 nothing else for me 15:05:18 good 15:05:28 #topic #108 How do we keep rawhide sane? 15:05:28 #link https://pagure.io/modularity/issue/108 15:05:37 #chair asamalik 15:05:37 Current chairs: asamalik contyk dgilmore langdon nils sct 15:06:12 Last week I thought we got this through, but apparently not quite. asamalik? 15:06:34 * contyk looks 15:06:48 I thought this was resolved 15:07:19 Me too, but there was more commentary in the ticket and Adam wanted to have it on the agenda again... 15:07:27 #chair sct 15:07:27 Current chairs: asamalik contyk dgilmore langdon nils sct 15:07:30 That's the topic we wanted to discuss with sct 15:07:39 Hey sct :) 15:07:40 * asamalik waves at sct 15:07:40 .hello sct 15:07:41 sct: sct 'Stephen Tweedie' 15:07:46 * sct waves! 15:08:32 is it? thought that was the next one 15:08:36 maybe it's both 15:08:56 contyk: just this one as far as I know 15:08:57 ah, no, it's this one 15:09:10 sct: https://pagure.io/modularity/issue/108 15:09:26 sct: it's how we handle defaults changing over time; dist upgrades, rawhide 15:09:59 sct: you sounded like you wanted to discuss this some more 15:10:51 Well, I can see various ways to go... is this an open-ended question or do we have a specific suggestion atm? 15:11:18 sct: there is a specific suggestion there 15:11:24 sct: last week the group agreed to the proposal in the ticket, i.e. ... 15:11:28 asamalik will summarize it 15:11:31 ;) 15:11:34 sure 15:12:08 when you install a module, you have two options: the default, or a specific stream 15:12:16 "dnf module install nodejs" gives you the default 15:12:26 "dnf module install nodejs:8" gives you a specific stream 15:12:58 your choice will be remembered and respected during a distro upgrade — by either keeping you on the default (and potentially changing a stream) or keeping you on the specific stream you chose 15:13:32 asamalik: That makes sense to me. But wasn't there also some thought that we might do this automatically for rawhide updates? 15:13:36 basically it remember whether you chose the default or something specific, rather than always remembering a specific stream 15:13:42 that works with both sets of expectations: traditional fedora — where a distro upgrade gives you new versions, and modularity — where your choice of a stream is respected and remembered 15:14:04 and yes, I think saying it applies only on dist upgrades is misleading 15:14:13 sct: let me make a small correction — technically this happens with every update, by policy only during major upgrades 15:14:13 it just applies 15:14:18 it applies when the defaults change; which happens in rawhide and, in stable, only on dist upgrades 15:14:33 sct: rawhide can change defaults basically anytime, the same way as it can change major package versions 15:14:54 EOF 15:15:18 asamalik: OK. We have a general set of issues about changing the module metadata mid-release 15:15:22 yeah, "when defaults change" is the salient thing 15:15:26 because we don't know exactly which one is installed; 15:15:29 but in this specific case 15:15:48 we *do* always know which stream is enabled, and we can tell when that changes 15:15:59 (can tell when the default changes) 15:16:13 sct: the proposal makes a suggestion that dnf either remembers "the default" or "a specific stream". Right now it can only remember "a specific stream" 15:16:22 but the important part is that the user chose this enabled stream vs just picked up the default 15:16:34 ... for all installed / enabled modules, that is 15:16:36 asamalik, could it also remember -nothing- meaning default? 15:16:41 asamalik: I don't think that works 15:16:48 ...so unless we change the configs/database, we will not remember which specific stream is enabled 15:17:04 asamalik: I think we need to know which exact stream is enabled, and *also* whether it is "locked" or able to follow moving defaults 15:17:32 asamalik: because we might need different (distro-sync) semantics for an update when a stream changes, from when we're just updating on the same stream. 15:17:39 sct: can you give an example why it would be important instead of dnf update just moving you to the new stream? 15:17:42 sct, do we need to remember the specific stream if unlocked, i.e. it's just what follows from the default being set elsewhere? 15:17:47 * contyk nods 15:18:04 sct: fair and a good point — although that might be an implementation detail, not a requirement if I'm not missing something 15:18:12 contyk: The obvious one would be if we have a newer stream that for some reason has a lower NVR of some component rpm 15:18:26 sct: I don't think you need to know what stream you had enabled before the defaults change but you might need to run distro-sync to update properly, yes 15:18:29 contyk: which shouldn't be common, but it is possible in theory, and supported by module semantics 15:18:50 and it would require the "dnf update" to be a downgrade in the specific case of switching stream. 15:19:17 from a user perspective, wouldn't i want to be able to look to see what stream I am on? even if it was default? in case I want to make it stick when I hear a new stream will become default? 15:19:19 contyk: You don't need to know the old stream, right; but you do need to be able to notice that the new stream is different, which is nearly the same thing. 15:20:33 langdon: +1, it would make sense to be able to track the current stream separately from the repodata default for that purpose 15:20:33 okay, so let's say we remember both the active stream and whether we're following the defaults or not 15:20:46 what would you suggest "dnf update" should do? 15:21:52 langdon: +1, although we'd need to make sure the following two scenarios are displayed correctly 1) "you have a default which is stream 8" 2) "you have the stream 8 which is btw a default" 15:22:00 contyk: who are you asking?` 15:22:06 anyone 15:22:15 langdon: mostly sct and you, though 15:22:24 oh.. i agree w/ the ticket.. if you are explicit, honor, else, follow default 15:22:26 s 15:22:27 Mostly update is the same as today; 15:22:28 but 15:22:35 contyk: I believe that "dnf update" should give you the "latest versions of packages in your selected stream" — potentially downgrading packages 15:22:44 asamalik, +1 15:23:08 asamalik: that implies running distro-sync 15:23:13 if we are following the default, and the current default is different from our current enabled stream, then instead of update, we treat it as a stream switch and distro-sync to the new NVRs for that module's contents only. 15:23:29 right 15:23:44 (With the usual provision that it's not an exact NEVRA, because we still need to honour hotfixes even in this case, which is potentially nasty.) 15:23:51 contyk: yes — that's my suggestion at least and that's what I'd expect, although I recognize it's a change in behavior some users might expect 15:23:58 yes, that makes sense; just unsure whether we and the dnf team would be okay with running distro-sync as part ot the update operation 15:24:21 although some concepts introduced by Modularity make "my" proposal make sense 15:24:38 sct: +1 15:24:49 langdon: +1 15:24:54 so "dnf update" would tell you "you're switching streams, nodejs:8->nodejs:10", for instance, and run distro-sync on that package set 15:24:57 correct? 15:25:04 contyk: +1 15:25:22 contyk, +1 15:25:26 correct — that's what I'd expect 15:26:02 hotfixes included as update candidates, of course 15:26:05 sct, langdon: ? 15:26:08 +1 15:26:21 in other words, update is always an update, except when switching a stream. In that case, it's a distro-sync for the module's package set. 15:26:27 contyk: im +1 but didn't understand your last statement 15:26:49 ... plus an update for the rest 15:27:03 langdon: we don't want to sync to the latest NEVRAs within the stream only, we want to install or keep hotfixes if their NEVRA is higher 15:27:31 Do we? A hotfix might be applicable only in the context of its stream. 15:27:32 * langdon thinks 15:28:03 nils: I thought a hotfix doesn't have such context, and overrides whatever has a lower NEVR 15:28:04 nils: yes, but you can't reasonably tell and if the NEVRA is higher, the following dnf update would update you to it anyway 15:28:20 i agree with nils.. kinda.. if an rpm is in "not a stream" it should update any lower NEVRA available.. 15:28:21 ahh, gotcha 15:28:44 if the hotfix is only for a stream.. it belongs in the stream virt repo 15:28:56 langdon: you don't have such information for hotfixes 15:29:03 langdon, ...except if it's from platform (but we imply a stream there, right?) 15:29:04 hotfixes are simple RPMs 15:29:42 ohh in the very specific language, yes.. in the more general, "hot fix" terminology, it could be either 15:29:49 hotfixes are almost like standalone RPMs with the exception they can win over modular RPMs with NEVRA comparison, right? 15:30:02 *with -> in 15:30:04 yes 15:30:15 any rpm that is "not in a stream" will win over the stream version.. won't it? 15:30:26 langdon: no, the other way around 15:30:46 are we considering hotfixes to be in scope here because of the distro-sync? 15:30:48 wait .. what? 15:31:07 or is there any other reason I'm missing? 15:31:08 langdon: modules override non-modular content; non-modular content (and non-enabled streams) are completely masked 15:31:26 the only exception are hotfixes, which are considered as candidates and subject to the standard NEVRA comparison 15:31:44 asamalik: Right 15:32:02 so how does dnf know that this bare-rpm is a hotfix vs a "regular" bare-rpm? 15:32:21 langdon: repo flags, installing from the fs directly... 15:32:26 langdon: It's a flag on the repo configuration 15:33:02 ahh ok.. i see.. i think this is why i have been confused by this bit a bunch of times.. i didn't know hotfix rpms were actually special 15:33:25 #action asamalik documents how updates work, including standalone RPMs, modular RPMs, and hotfixes 15:33:26 :) 15:34:01 okay, so that cleared, I think we have an agreement 15:34:23 I think it's worthwhile to stress this point in docs. For instance if you pull testing updates directly from koji, and install them they will be considered hotfixes (AIUI) and change the update semantics accordingly. 15:34:25 "update" informs you about streams being switched and runs distro-sync on that modular package set, respecting hotfixes 15:34:38 nils: agree, see the action above 15:34:47 do we want to have a "group answer" for why we don't like a "lock flag" per the ticket? 15:35:04 contyk: +1 15:35:05 langdon, DYM "lock command"? 15:35:30 neal's example is a "--lock" .. so.. no, i mean flag 15:35:35 but either way 15:35:48 ohh.. he has both 15:35:48 * contyk points langdon to the last week's log 15:36:00 Because AIUI we implicitly have a "lock flag" by being able to remember if a module is supposed to follow "the default of the day" 15:36:05 oh .. was that in the beginning of the meeting i missed? 15:36:55 I don't remember when exactly we talked about it 15:36:57 i just don't like it for two reasons a) "lock", i think, means "nothing changes" like pinning today.. which is not how modules work b) it is extra "typing" / semantics that we don't need 15:37:38 langdon: sorry I'm confused, we're not proposing anything like that at the moment 15:38:01 asamalik: yeah.. but we don't have an answer to "why" in the ticket aside from you saying it is yucky :) 15:38:04 it's "dnf module install nodejs" for a default, and "dnf install nodejs:8" for a specific stream with 'the locking' 15:38:06 langdon, ah gotcha -- yeah I concur we don't want that users have to use this command. It could exist to change from "follow default" to "stay on this stream" later but isn't really relevant in this convo IMO. 15:38:07 --lock only makes sense in combination with no stream being specified, kinda like "expand nodejs and lock that instead of following the default", but it was deemed unnecessary, confusing and pointless 15:38:31 Ahh. *rubs eyes* 15:38:49 langdon: ah now I understand! let me respond there 15:39:12 contyk: +1 15:39:14 that 15:39:31 langdon, neal also mentioned "dnf module lock ..." -- https://pagure.io/modularity/issue/108#comment-543047 15:39:32 + the term "lock" is confusing as per what langdon said 15:39:47 yeah 15:40:02 so let's not do the lock thing, and just respond why not 15:40:25 also, 40 mins in, do we want to move on? 15:40:46 as far as I'm concerned, sure 15:41:05 do we want to do an #agreed about: contyk> "update" informs you about streams being switched and runs distro-sync on that modular package set, respecting hotfixes 15:41:06 ? 15:41:24 sure 15:41:26 +1 15:41:30 as a correction of that decision from last time 15:41:36 proposed #agreed "dnf update" should inform users about streams being switched and perform distro-sync on the affected modular package set, taking hotfixes into consideration 15:41:38 an amendment 15:41:38 or making it more specific 15:41:53 nils: that's the word! 15:42:18 contyk: do you want to explicitly add that we're tweaking the decision from last time? 15:42:20 +1 on the amendment 15:42:29 it's not tweaking, but clarifying 15:42:37 asamalik: I think that's given 15:42:46 or that 15:42:50 contyk: ok fair, would you be +1 or +0 still? 15:43:16 although I might be just ratholing right now :) 15:43:23 asamalik: no point in voting again :) 15:43:26 +1 to the proposed #agreed 15:43:31 yup 15:43:32 contyk: right :) 15:43:34 #agreed "dnf update" should inform users about streams being switched and perform distro-sync on the affected modular package set, taking hotfixes into consideration 15:43:40 cool 15:43:40 i am terrible at this but isn't it "effected" ? 15:43:45 nils: can you skip a topic please? 15:43:50 langdon, no 15:43:59 langdon: nope 15:44:03 cool... that's one of those ones i can never remember 15:44:12 nils: there is no way we can finish the lifecycles, but we can pass the third one about fedora changes 15:44:18 ok 15:44:23 nils++ 15:44:27 skipping, wait a sec 15:44:49 #topic #114 Stream default changes & Fedora Changes 15:44:49 #link https://pagure.io/modularity/issue/114 15:45:23 so there were two proposals in the ticket 15:45:39 the right one and the wrong one!??!??! 15:45:42 yes 15:45:46 I'm leaning towards supporting that of asamalik 15:45:50 langdon: obviusly! 15:45:54 which is more restrictive than ignatenkobrain's but safer 15:46:15 * asamalik also supports his own proposal 15:46:31 we can always relax it later when we're confident everything works smoothly 15:46:47 contyk, in what way is it more restrictive? 15:47:09 no mid-cycle modules replacing ursine rpms 15:47:16 langdon: +1 15:47:17 nils: ignatenkobrain proposes we could replace ursine packages with modular and make those modules the default in stable 15:47:32 because right now it's the same as removing packages from the buildroot 15:47:36 nils: asamalik proposes we can replace them with modular but only add the defaults in the future release 15:47:36 mid-release 15:47:38 ahh okay, so that's a change from how I've understood we wanted it originally 15:47:52 cool! 15:47:55 asamalik, because UM isn't there yet? 15:48:00 nils: right 15:48:05 👍 15:48:20 any other questions or vote? 15:48:41 no further questions from me 15:48:43 im a little confused now 15:48:47 +1 to asamalik's proposal 15:48:53 langdon, ? 15:49:23 "asamalik proposes we can replace them with modular but only add the defaults in the future release" < where does it say this? i thought it said you can't replace ursine with a module mid-cycle.. but this remark says something else 15:49:58 langdon: "No default stream changes mid-release are permitted." 15:50:14 ...10 minutes... 15:50:18 which includes moving an ursine RPM to a module and making a default 15:50:24 but you are still removing the rpms from the build root in that scenario 15:50:50 what does the default part have to do with it?? :) ... you are still removing an ursine rpm, no? 15:50:52 you don't drop packages from stable 15:51:02 the default part would just make it easier on users 15:51:03 the ursine packages are going to be there until the release goes EOL 15:51:04 you can always make the module, but you need to wait with removing the ursine package and setting the default for the upcoming release 15:51:36 you can make modules with the same content and optionally enable them 15:51:55 ok... that makes sense.. but i don't think the proposal says you can introduce a new morule mid-cylce 15:52:01 if you make them the default, without Ursa Major, the RPM in the buildroot will differ from the one you have available at runtime 15:52:18 langdon: it does: "Introducing a new default stream not replacing any existing default stream or a traditional package is not considered a change. That means it can be done." 15:52:39 how about "introducing a regular old stream"? :) 15:53:00 langdon: you mean introducing a non-default stream? 15:53:07 ie... introducing a "new stream" that is not default 15:53:15 yeah.. it doesn't say you can do that 15:53:16 that's completely out of scope of this 15:53:25 that doesn't introduce any changes 15:53:31 right? 15:53:40 correct, that's just adding new content 15:53:43 "Introducing a new default stream not replacing any existing default stream or a traditional package is not considered a change. That means it can be done." could be "Introducing a new stream or module not replacing any existing default stream or a traditional package is not considered a change. That means it can be done. 15:54:01 but the wording implies that you can't do it 15:54:05 for me at least 15:54:17 yeah, mentioning streams for the seems kind of roundabout 15:54:45 if we consider adding a default stream on top of ursine RPMs "changing the default stream" 15:55:29 langdon: the issue is about changing default streams 15:55:41 langdon: anything that is not changing default streams is out of scope 15:56:25 ok.. if everyone else agrees with you, i am fine.. i just think your choice of wording implies that you can't introduce new modules or streams.. 15:56:38 asamalik, I think what langdon is getting at is that introducing a default stream on top of ursine content isn't permissible and how we phrase this is too complicated 15:59:01 It's not obvious that only adding a default stream for content that isn't available as ursine packages is ok. Did I get you right, langdon? 15:59:08 langdon: how is that related to defaults? 15:59:20 * asamalik doesn't want to overcomplicate the description 15:59:23 * asamalik hopes he sounds polite 15:59:30 :P 16:00:07 let's let it be.. and when it gets added to the full doc.. ill look at it again .. and see if i still think it needs a change 16:00:20 ok 16:00:30 have we #agreed on anything yet, I can't remember... 16:00:32 nils: I think that's exactly what it says in the last point, but we can definitely reword it 16:00:43 asamalik: could you do a proposed #agreed? 16:00:54 contyk: ok 16:01:31 asamalik, I think the implications might not be obvious to everybody, but let's not drag this on further and fine tune later 16:02:07 proposed #agreed We'll handle default stream changes and the respective Fedora Changes as described in this issue description: https://pagure.io/modularity/issue/114 16:02:36 that issue can change ;) 16:02:47 it will be getting moved to https://pagure.io/modularity/working-documents/blob/master/f/lifecycles-upgrades-ownership/defaults-and-fedora-changes.md though, right? 16:02:50 contyk: ha 16:03:08 ok let me copy/paste the four points 16:03:29 asamalik, maybe copy/paste them into one comment and link that one directly? 16:03:47 otherwise, the #agreed might get very bulky... 16:03:57 proposed #agreed 1) Module stream defaults should be only changed in an upcoming Fedora release 2) Changes of stream defaults should be communicated by a Fedora Change based on the change's significance and its maintainer's best judgement. 3) No default stream changes mid-release are permitted. 4) Introducing a new default stream not replacing any existing default stream or a traditional package is not considered a 16:03:57 change. That means it can be done. 16:04:03 :/ 16:04:51 +1 even if bulky :) 16:05:20 langdon: I'll put it right in the docs 16:05:28 +1 16:05:45 +1 16:06:07 #agreed 1) Module stream defaults should be only changed in an upcoming Fedora release 2) Changes of stream defaults should be communicated by a Fedora Change based on the change's significance and its maintainer's best judgement. 3) No default stream changes mid-release are permitted. 4) Introducing a new default stream not replacing any existing default stream or a traditional package is not considered a change. 16:06:07 That means it can be done. 16:06:12 you can split it into two #agreed points to log it 16:06:17 ha, well at least all the info fits 16:06:27 #agreed ^ That means it can be done. 16:06:28 done 16:06:34 I need to go afk 16:06:36 contyk++ 16:06:44 contyk: have a safe flight! 16:06:59 heh, thanks 16:07:02 #action asamalik documents the new policy 16:07:24 contyk, safe travels! 16:07:39 good, considering we're past time, let's postpone the rest? 16:07:46 yeah 16:08:03 I could do both, although I'd prefer postponing 16:08:32 I've postponed a call I had on the hour to :15 :) 16:09:04 Alright. Thanks everybody! 16:09:04 * asamalik waits for waving 16:09:08 #endmeeting