IRC logs for #trustable for Wednesday, 2018-07-25

paulsherwoodpersia: did you intend irony there, or an actual insight?06:27
paulsherwoodchanging the text will often (but not always) change the behavour, but other things affect behaviour too06:28
*** paulwaters_ has quit IRC07:10
*** paulwaters_ has joined #trustable07:10
*** noisecell has joined #trustable07:42
*** Kinnison has quit IRC07:48
*** Kinnison has joined #trustable07:49
*** willbarnard has joined #trustable07:56
*** weyfonk has joined #trustable08:21
*** willbarnard has quit IRC08:29
*** willbarnard has joined #trustable08:30
*** toscalix has joined #trustable08:34
*** paulwaters_ has joined #trustable09:24
flatmushSTANDUP! Order: flatmush, noisecell, willbarnard09:50
flatmush## Ben Brewer (flatmush)09:50
flatmush* Done09:50
flatmush  - Test kernel rebuild time for demo -- 20 minutes09:50
flatmush  - Discussions about easiest way to get CI running09:50
flatmush* Doing09:50
flatmush  - Rebase minimal distro on definitions so we can use its CI runners09:50
flatmush  - Prepare for demo on Friday09:50
flatmush## Francisco Redondo Marchena (noisecell)09:50
noisecell* Done09:50
noisecell    - Update some packages09:50
noisecell* Doing09:50
noisecell  - Set the dependencies/build to avoid overlaps when building the image.09:50
noisecell    - This seems not to be a trivial task.09:50
noisecell    - Create white-list for stage1 and stage209:50
noisecell## Will Barnard (willbarnard)09:50
willbarnard* Doing09:51
willbarnard  - Analyzing certification requirements for ISO 26262/IEC 6150809:51
flatmush## Discussion09:51
paulwaters__o_09:51
noisecell_o_09:51
flatmush10 9 8 7 6 5 4 3 2 109:51
willbarnard_o_09:51
flatmushSTANDUP ENDS!09:51
noisecellta flatmush09:54
persiapaulsherwood: Actual insight.  The approach taken by morph, ybd, buildstream is that when an input changes, the output is expected to change, so all the things that depend on that output should be rebuilt.  This carries the implication that we know how something behaves if we know which version of things was used to build it.10:07
persiaThere exists a (large) set of changes that do not require rebuilds of depending objects, for which this ends up being wasted effort.  Also, there exist a large number of updates that can be made smaller where such rebuilds aren't required.10:08
persiaUnfortunately, allowing such things means that one cannot infer a manifest of a system based on the top-level components, recursively determining subcomponents, rather one should compose a manifest of a system based on each of the many components, only ensuring they are compatible.10:09
persiaI have yet to think about this enough to have a good understanding of what sort of nomenclature makes sense for relations between components and subcomponents, or how to determine when behaviours are expected to be identical, such that one can safely update a subcomponent without updating things that depend on it.10:10
persiaMy experience in the distro environment is that one does this mostly ad-hoc, based on testing when things don't work, but that doesn't lend itself to predictive automation.10:11
flatmushI would assume the best way is to have the headers (or interface) for any dependency as a separate part of the artifact where possible, and depend on that, so re-builds are only forced when interfaces change10:11
flatmushof course in most cases, projects don't much care about the idea of an interface further than a vague goal to be backwards compatible10:12
flatmushso rebuilds would still be very frequent10:12
persiaflatmush: For the libary case, where it is possible to get sensible symbol descriptions, I think that mostly works.10:40
persiaOf course, it is possible to make a change that is both ABI compatible and massively changes behaviour, so one may need some mechanisms to verify that hasn't been done.10:40
persiaFor the executable case, I have yet to think of a way to capture behaviour that can usefully result in build avoidance.10:41
flatmushif the interface doesn't change and the behaviour does, then I'd say that's a bug, and there's very little you can do about it10:42
persiaFor example, if component A requires component B to be executed during the build process (for component A), and component B is updated, it is complicated to determine if component A needs to be updated.10:42
persiaflatmush: Key is to *detect* it.10:42
flatmushbuildstream doesn't currently do anything for this case anyway10:42
flatmushif you update a bst element and the interface is unchanged, but the behaviour is different, the first you'll know of it is when a test on the final image fails, assuming you even test that specific change10:43
persiaNo.  As I said at the start of this, morph, ybd, and buildstream all make an assumption that I now consider false.  That assumption ends up requiring more frequent and larger updates to address security issues, etc.  On the other hand, it avoids a tangled mess of thought which we're discussing now.10:43
flatmushI don't really consider this a tangled mess of thought tbh10:44
persiaIf you update a bst element and the interface is unchanged, the dependencies will all be rebuilt anyway (and assigned new cache keys), so there's no possibility of single-element updates.10:44
flatmushthe rebuild doesn't matter10:44
flatmushif the interface is unchanged, whatever built before, will build again10:44
persiaWhy not?10:44
persiabst has no concept of "interface changed" vs. "interface unchanged"10:44
flatmushif an interface doesn't change, and behaviour does, the rebuild does nothing to mitigate that10:44
flatmushindeed10:44
flatmushimagine I change malloc to call abort internally10:44
persiaThe important part is the assignment of a different cache key.10:45
flatmushin buildstream, everything would rebuild10:45
flatmushbut it'd still be broken10:45
flatmushthe rebuild doesn't guarantee that packages work together10:45
flatmushonly testing can tell us that anyway10:45
persiaTechnically not very much would rebuild, because the breakage happens at such a low level that many build tools stop working, but I get your point.10:45
flatmushbst does nothing to detect package compatibility currently as far as I'm aware10:45
persiaYour awareness matches mine.10:46
flatmushthe only way to find these things is via large amounts of testing10:46
flatmushso back to the main point, if we have interface artifacts that things depend on, you reduce some rebuilds, and have the exact same behaviour as we have now10:46
persiaThe problem with that model is that one then requires that large amounts of testing for every little security update, which leads to the "don't update anything ever" school of thought.10:46
noisecellthe problem is no all packages also add a dependency package description. So bst elements become like debian-control files10:47
flatmushsure, but do you know of a better model?10:47
persiaIf we want to be able to consume updates in a timely manner for systems composed of thousands to tens of thousands of components, then we need something else.10:47
flatmushlots of work tbh10:47
flatmushthat's what lots of updates require10:47
persianoisecell: I consider bst element defintions to be a combination of debian/control & debian/rules, but yes.10:47
flatmushautomated testing will mitigate some things, but the issues will still require a random engineer googling stuff10:47
noisecellpersia, yes it is a merge of both, but we were discussing dependencies in this case, though10:48
persiaTo my mind, if we can detect when things could potentially work together vs. cannot work together, we are in a position to reduce the volume of testing, I think.10:48
persianoisecell: Yes.10:48
flatmushsounds like magic to me10:48
persiaflatmush: Yep, although I prefer to call it "sufficiently advanced technology".  Needs more thought.10:49
flatmushwill this thought lead to a concrete solution ;)10:49
persiaI hope so.  I'll share if it does.10:50
persia(for that matter, I'll probably share if I just get to a concrete vocabulary and/or am able to express my new idea properly)10:51
*** traveltissues has joined #trustable10:56
*** willbarnard has quit IRC11:24
*** willbarnard has joined #trustable11:44
*** willbarnard has quit IRC12:41
*** willbarnard has joined #trustable12:41
*** willbarnard has quit IRC14:05
*** willbarnard has joined #trustable14:07
*** paulwaters_ has quit IRC15:02
*** willbarnard has quit IRC15:56
*** weyfonk has quit IRC17:09
*** toscalix has quit IRC17:15
*** traveltissues has quit IRC21:07

Generated by irclog2html.py 2.15.3 by Marius Gedminas - find it at mg.pov.lt!