14:01:04 #startmeeting modularity_wg 14:01:04 Meeting started Tue Oct 31 14:01:04 2017 UTC. The chair is langdon. Information about MeetBot at http://wiki.debian.org/MeetBot. 14:01:04 Useful Commands: #action #agreed #halp #info #idea #link #topic. 14:01:04 The meeting name has been set to 'modularity_wg' 14:01:28 #meetingtopic Meeting of the Modularity Working Group (once every two weeks) 14:01:34 #chair cydrobolt dgilmore haraldh langdon mikedep333 sct tflink 14:01:34 Current chairs: cydrobolt dgilmore haraldh langdon mikedep333 sct tflink 14:01:40 #topic Roll Call 14:01:44 .hello2 14:01:46 langdon: langdon 'Langdon White' 14:02:15 .hello tflink 14:02:16 tflink: tflink 'Tim Flink' 14:02:36 * tflink has a conflict, will only be paying half attention 14:03:31 seems like there are a lot of conflicts :/ 14:05:06 o/ 14:05:11 .hello psabata 14:05:12 contyk: psabata 'Petr Ĺ abata' 14:05:25 i think if it is just the 3 of us in 5m we should just cancel.. 14:05:38 contyk: did you see my PM? 14:06:16 langdon: I did 14:06:30 langdon: but it's unrelated to this meeting :) 14:06:36 langdon: Igor had an agenda item 14:06:38 true :) 14:06:43 but he isn't here :) 14:06:57 he will be soon; we just finished another call 14:09:09 .hello2 14:09:10 ignatenkobrain: ignatenkobrain 'Igor Gnatenko' 14:09:30 there he is 14:09:48 https://pagure.io/modularity/issue/75 14:09:51 .hello sct 14:09:54 sct: sct 'Stephen Tweedie' 14:09:54 one should set up #topic 14:10:36 ignatenkobrain: i was going to.. but waiting for you to join 14:10:43 topic is "roll call" right now 14:10:53 #topic agenda 14:11:20 1) https://pagure.io/modularity/issue/75 14:11:36 #info Stream naming conventions https://pagure.io/modularity/issue/75 14:11:40 and other topics? 14:12:47 nothing really 14:13:04 ok... swithing to topic 14:13:20 #topic Stream naming conventions (https://pagure.io/modularity/issue/75) 14:13:52 #chair ignatenkobrain 14:13:53 Current chairs: cydrobolt dgilmore haraldh ignatenkobrain langdon mikedep333 sct tflink 14:13:59 ignatenkobrain: want to take it away? 14:14:33 well, I wrote everything in ticket 14:14:43 I'm in the middle of another meeting so ... ;) 14:14:56 so can you just copy it here 14:15:01 I think it contains enough information 14:15:13 .hello2 14:15:14 asamalik: asamalik 'Adam Samalik' 14:15:41 in short we need best practices / recommendations for naming streams where one is not immediately obvious 14:15:48 for instance for collections of random things 14:15:57 ignatenkobrain: It all depends on what you want to maintain. 14:16:02 isn't this in the guidelines? 14:16:12 I thought there was already a thread about it (and the result was: f27) 14:16:20 There was a thread internally, for sure 14:16:34 modularity is not a free-for-all 14:16:46 just because you can have 20 versions of something does not mean you _should_. :) 14:16:47 langdon: if it's in the guidelines, can you point me to it? 14:17:08 contyk: I can probably look out the email thread from archives 14:17:34 so a specific example is the libtom module which includes two libraries, both from the same upstream project but each with a separate life cycle and update cadence 14:17:59 now 'f27' doesn't really make sense; this module has nothing to do with the release 14:18:09 f27 may still make sense 14:18:12 it could be '1', incremented every time one of the libraries is updated 14:18:17 it depends on the ABI and release expectations 14:18:21 or '1-1' or something like that 14:18:30 You need to have a stable ABI for any application that depends on the library. 14:18:36 yes 14:18:41 So when are you going to switch the version of the library? 14:18:58 Do you really care about being able to introduce a new version halfway through f27? 14:19:12 isn't that one of our features? 14:19:19 if not, then it should just be f27, and apps depend on it 14:19:21 contyk: Sort of 14:19:30 there is no general way to install two versions of the lib at the same time 14:19:37 that doesn't make sense 14:19:42 because arbitrary branching 14:19:50 (nils wrote an e-mail about it on Oct 9th) 14:19:52 That makes two versions _available_ at the same time 14:19:58 that doesn't mean they can install together 14:20:13 this is precisely why we need a stable set of dependencies in platform 14:20:23 sct: no one's proposing parallel installation, just having yet another stream when one of the components gets an incompatible update; such stream could be introduced anytime 14:20:24 so dependencies for different apps don't interfere with each other. 14:20:36 You can't avoid it 14:20:39 sct: question is how to name streams for collections of multiple things with varying update cadence 14:20:51 if one app depends on the old version and another app depends on the new one, you have a parallel installation conflict. 14:21:17 sct: module stream expansion addresses that problem 14:21:25 So the first question on "how to name it" is whether you want to deal with that situation. If not, then for dependencies, the default answer is in many cases forced to be "it's one version for the release, so f27 is a reasonable name" 14:22:21 contyk: Stream expansion doesn't solve the installation problem, if you have two apps installed at the same time requiring different versions. 14:22:29 Bundling with scl-type repackaging solves it 14:22:32 containers solve it 14:22:42 there are various solutions but they are not transparent. 14:23:44 sct: no, but if I have applications that require "libtom:*" and MBS builds them against both, I can then install a combination of modules with either of the tom libtom modules, avoiding conflicts 14:24:29 sct: while this is not possible right now because the feature hasn't been implemented yet, our recommendations shouldn't be limited by the current state (which will hopefully change soonish), I think 14:25:03 contyk: For sure. That only works if the two versions are ABI-compatible, though. In which case, why not just upgrade to the newer of the two ABI-compatible versions in a single stream? 14:25:24 You only need to maintain a new stream if you know you are introducing incompatible changes. Otherwise you can just rebase within the stream. 14:25:27 sct: no, they don't need to be ABI compatible, just API 14:25:50 sct: when you submit an MBS build with this glob-style dependency, MBS creates two separate module builds 14:25:54 contyk: The problem is lifecycle 14:26:04 what happens when there is an app out there that already built against the older ABI 14:26:31 then you're limited to libtom with the old ABI and cannot choose 14:26:32 you cannot now rebuild any other module against the newer ABI without introducing a runtime conflict. 14:26:36 * langdon swears he had a ticket describing conventions that was to be added to the guidelines but can't find it now 14:26:36 if you want that app 14:26:37 Exactly 14:26:51 so the wild-card API requires: only works at a single point in time 14:26:57 you need to rebuild everything if you change the ABI 14:27:08 sct: yes; it's a build time feature 14:27:11 and modularity is supposed to make things independent, not to require mass rebuilds 14:27:32 which is why it's really the ABI properties which dictate what you can do with different streams, not API 14:27:57 if that's true, then you can never change anything 14:28:05 if every new stream needs to be abi compatible with the old one 14:28:11 so for the system ABI as a whole, you need to pick one ABI. "f27" is still a reasonable stream name for that. 14:28:17 Only for dependencies 14:28:27 which is why we need a large dependency set in platform. 14:28:34 Edge modules can rebase arbitrarily 14:28:50 dependencies cause linkage/conflict between otherwise independent modules. 14:28:54 and now we're getting to the question :) 14:29:19 ignatenkobrain is packaging a non-platform module with more than one component and wants to know what stream name he should choose for his non-platform module 14:29:27 So for stream names it all comes down to, under what circumstances would I change to a new ABI? 14:30:12 If we need it fixed for the duration of f27 due to these dependency ABI issues, it should be called "f27" (or arguably should potentially be added to platform, because it is a de-facto part of the ABI for apps above it) 14:31:29 weren't modules supposed to offer life cycles independent of the distro? 14:31:57 and parallel availability? 14:32:12 Only for availability, not installability. And installability causes major constraints here. 14:32:15 if I'm reading you correctly, you're proposing exactly one version of a module that is bound to the base release 14:32:35 For shared dependencies. 14:32:45 anything can be shared if it has api 14:32:55 We have additional mechanisms if we need to have multiple versions in flight at the same time 14:33:07 compat-lib packaging is a well known way to do this 14:33:12 but it's the exception, not the general case. 14:35:59 I still don't get it 14:36:21 how it is related to my problem? 14:37:03 ignatenkobrain: is there no logical version for the the thing? e.g. httpd-2.2 ? 14:37:15 no 14:37:21 that's the point :) 14:37:34 I would just use "1" :) 14:37:43 Yeah.. So my argument has been it should be 1.0 14:37:57 Or 1 rather 14:38:12 Keep it simple, certainly. 14:38:37 ignatenkobrain: Point is, if you're going to have two streams available at the same time, you need to expect conflicts if different apps require different versions. 14:38:44 ignatenkobrain: If you have a way to handle that, then great 14:39:07 sct: I don't care about conflicts. I just want to give ability users to use old verions 14:39:14 if not, you may be forced to keep a standard version for apps to build against; and if so, then "f27" is a simple fallback stream name that represents the default version you want f27 apps to find. 14:42:02 so it seems only viable solution us to use 1..2..3... 14:42:08 f27 doesn't make sense to me at all 14:42:14 because it has no relation to dstro version 14:42:20 it is version of module 14:42:28 s/version/stream/ 14:42:40 Yeah.. I would expect the "lamp module c 14:42:46 Sorry.. 14:42:59 To also be 1,2,3, etf 14:43:12 Goodness I can't type today 14:45:39 ignatenkobrain: User, or developer? 14:46:06 ignatenkobrain: because if you give packagers the ability to pick arbitrary conflicting versions of their dependencies, the result is a sprawl of application incompatibility. 14:46:19 ignatenkobrain: If it's just for end-users, it's a very different story. 14:46:31 I think the rule(s) is simple.. F27 for tightly coupled to a platform version or an extension of platform, else version of major component, else, sequential from 1 14:46:35 It really does depend on what it will be used for and what combinations we want to support in parallel. 14:52:54 so.. we really do need an action item to add this to the guidelines 14:53:03 but.. is everyone clear here? 14:53:08 or is there more to discuss? 14:53:47 langdon: I think there's a little more --- we should come back after f27 on some parts of this 14:54:17 as source compat and binary compat are different... the issues change a bit with arbitrary branching if we can build different binary versions based on the same source branch. 14:54:35 As long as source and binaries share the same stream name, I think the topic is well covered. 14:55:20 well.. we only have five minutes left :) 14:55:41 so we agree on 1,2, 3? 14:56:57 ignatenkobrain: i think so.. but to sct's point.. it matters a bit on the use case(s) you see for the module.. but the general rule, yes 14:58:59 proposed: #agreed F27 for tightly coupled to a platform version or an extension of platform, else version of major component, else, sequential from 1 14:59:18 or if we can't get to that.. maybe move to mailing list? 15:01:27 #info tabled discussion til next time or the mailing lists 15:01:36 #endmeeting