16:01:57 #startmeeting 16:01:57 Meeting started Mon Jan 5 16:01:57 2015 UTC. The chair is stefw. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:01:57 Useful Commands: #action #agreed #halp #info #idea #link #topic. 16:02:05 Any agenda? 16:02:28 work direction, focus 16:02:40 * stefw won't start discussing the multi-server features, until andreasn and others are here 16:02:46 jQuery amend 16:02:47 * Testing update 16:02:51 metrics channel 16:03:41 my two topics should be short, so we could get them done with first, maybe. 16:03:50 #topic jQuery amend 16:04:23 mvollmer, you're on :) 16:04:35 so, yeah, I started having the same doubts as stefw... 16:04:45 why do we do it? 16:05:03 a little backgound might be in order? 16:05:10 yes. 16:05:36 I have no idea what this is about 16:05:44 in many places the DOM is reconstructed from scratch whenever something in the data changes. 16:06:00 ah, that jquery feature (got it) 16:06:15 we will be using mustache more and more to create those DOM pieces 16:07:01 now i was thinking that it is important to update the DOM incrementally, with small changes instead of replacing a large chunk with a mostly identical large chunk. 16:07:40 but browser are doing a good job with replacing large chunks. 16:07:46 there's a vast array of possibilities in between extremely fine grained updates and replacing large chunks 16:08:12 the use case i was trying to solve with the amend work was simply keeping the interactive state of rows when nothing significant has changed 16:08:25 and in any case, our code should still be correct even if large chunks get replaced. 16:08:30 rows, or dom elements, or links, etc. 16:08:42 the code is still correct, but the UI behavior has usability issues 16:08:43 open menus 16:09:01 for example selecting data, scroll location, tab index, etc... 16:09:21 i'm fine with throwing away this UI state when something changes for real (like a significant UI element is added/removed) 16:09:33 but for a simple class add/remove or a number change (eg: cpu usage) 16:09:39 we shouldn't be throwing away such UI state 16:09:47 correct 16:09:57 so that's why the jquery amend branch was very simple, because it targetted fixing very specific use cases 16:10:09 it could get more complex later (eg: optional key based correlation) 16:10:20 if further use cases prove to be necessary to fix 16:10:31 it's easier to maintain usability if only data changes, not the layout 16:10:36 the nice thing is, as you mentioned mvollmer, the code pretty much is correct without this 16:10:47 and this can be treated as an optimization 16:10:56 a very nice to have optimization, but still an opmitization 16:11:29 would be good to find code for it. 16:11:50 ok, so summary: I am unsure how to proceed with it. 16:11:55 it's not a priority 16:11:59 i'm fine with completing it at a later 16:12:00 time 16:12:09 that's why i haven't pushed to complete it, other stuff is more important 16:12:22 what's the current state? it is a branch and not yet included? 16:12:26 it's on a branch 16:12:29 it mostly works, needs testing 16:12:33 we can have the current version in master so that we actually can start using it. 16:12:46 i have added some tests 16:12:49 i also wonder if it should be a real plugin in a separate repo 16:12:54 and we pull it in via /lib 16:13:14 could still be in https://github.com/cockpit-project/jquery-amend 16:13:18 ie: a sibling repo 16:13:42 i wrote this code because it didn't appear to exist 16:13:48 yeah 16:13:51 wouldn't have been against pulling in another self-contained plugin 16:13:59 everyone seems to have this code deeply intertwined with other logic 16:14:23 and nobody offers it as a separate plugin ... probably because they need to fix corner cases ... in which case the code quickly gets into the weeds 16:14:31 if we want proper incremental insert/remove in a sorted list, we pretty much have to implement "diff". 16:14:32 separate repo seems cleaner to me 16:14:50 mvollmer, yeah, i'm fine with adding optional key support later 16:14:55 yep 16:14:56 but again, it's not a blocker 16:15:08 and not a priority 16:15:10 very interesting, though... :-) 16:15:38 mvollmer, can you put the react link into the notes? 16:15:41 so we can find it later? 16:15:52 the one that describes the key based diff optimization? 16:15:53 of this meeting? 16:15:55 sure 16:16:25 #info http://facebook.github.io/react/docs/reconciliation.html 16:16:31 mvollmer, so what do you think we should do, bring it into cockpit now as is (with your tests)? 16:16:39 or shelve this until later, since it's not priority? 16:16:42 I would say so 16:16:45 ok 16:17:05 i can make a repo based on your branch and tests 16:17:09 ok 16:17:20 skip the key stuff, of course. 16:17:30 #action stefw will put jquery-amend in a cockpit-project repo and bring it into cockpit including mvollmer's tests 16:17:59 #info https://github.com/cockpit-project/cockpit/pull/1567 16:18:13 #topic Metric Channels 16:18:24 right 16:19:02 I think https://github.com/cockpit-project/cockpit/pull/1609 is ready for review 16:19:17 I did some potentially controversial things 16:19:18 cool 16:19:26 #info https://github.com/cockpit-project/cockpit/pull/1609 16:19:39 like, "counter" metrics are differentiated in the bridge 16:20:03 is that a PCP concept? 16:20:11 "counter" semantics, yes. 16:20:34 what are the potential issues with that? 16:20:35 and it means that only the deltas are meaningful, not the absoulte value 16:21:01 the client will not know the absolute value, in case it _does_ have a meaning. 16:21:21 can the client open another metric channel with different semantics? 16:21:30 no 16:21:31 for the same metric? 16:21:47 semantics are fixed per metric, it's not like units that you can convert. 16:22:00 but we can add an option to not do the diffinf. 16:22:01 is the word "semantics" from PCP? 16:22:05 yes 16:22:48 the main reason to do it is to handle 64bit counters. 16:23:00 interesting 16:23:03 well i think it's a valid use case 16:23:09 the action is in the low bits, but we might lose them when converting to double. 16:23:26 (there is a test case to prove that, even. :-) 16:24:01 so the issue here for me is that there's no backwards-compatible way to tell cockpit-bridge not to diff the counter values 16:24:15 well, besides having a new metric channel type 16:25:03 but we can look at that further during review, i guess. 16:25:14 yeah 16:25:31 any other issues? i'm interested in what made you add omit_instances to the channel options? 16:25:32 hi guys 16:25:37 can I help with anything ? 16:25:50 welcome to the cockpit meeting :) 16:25:58 we're discussing merging the metric channel work that mvollmer has been doing 16:25:59 stefw, to filter out "lo" explicitly, for example. 16:26:16 mvollmer, interesting 16:26:23 i don't think we have a concrete use right now. 16:26:54 #action stefw will review the metric channel code 16:26:55 so, "for completeness" 16:27:10 fche, hi! 16:27:12 fche, -> https://github.com/mvollmer/cockpit/blob/metrics-channel/tools/pcp.supp 16:27:57 next up would be pcp archives for me. 16:28:04 fche, i will need help with that. 16:28:12 right, that's good, and we'll need andreasn's work on the design there 16:28:13 please ping any time 16:28:38 ok, next topic? 16:28:41 wait 16:28:52 I was just reading the source code while you discussed this 16:29:25 is lack of numeric precision in the browser frontend an issue? is there a specific case? 16:29:42 dominikp, yes. 16:30:18 dominikp, Peformance Copilot can report 64 bit counter metrics, like bytes received on a network interface 16:30:43 but the normal way to parse JSON will give you a double. 16:30:45 yes, but are there cases where we need the numeric values in the frontend, not just the string value 16:30:56 we do get numeric values 16:31:04 as JSON numbers 16:31:31 here's an example of what they end up looking like when transferred: 16:31:31 https://github.com/cockpit-project/cockpit/pull/1609/files#diff-81551d4c3e08fb4033c1c32084ca4965R792 16:31:43 to display network I/O we would need to compute the difference between two numbers. 16:32:12 but the low bits are lost if the counter goes beyong 53 bits. 16:32:34 mvollmer, is that on the browser side? 16:32:40 yes 16:32:49 interesting 16:32:50 well, actually, not sure. 16:33:05 well on the bridge side we're using gint64 16:33:08 so it should be 63 bits 16:33:10 i guess json-glib might output proper 64bit integers. 16:33:15 yes it should 16:33:24 we can do calculations before we get to js 16:33:26 although json-glib has been known to have bugs :D 16:33:40 dominikp, yes, that's what we do. 16:33:41 right, that's what he's doing with the diff code 16:33:53 I don't think json per se dictates bit-width of the numeric literals 16:34:07 ok then :) 16:34:09 fche, right, but javascript does 16:34:49 ok 16:34:58 #topic Testing and CI 16:35:05 * stefw wishes jscotka was still around 16:35:24 So today I was working on getting CI going for our integration test suite 16:35:36 I've upgraded files.cockpit-project.org to RHEL 7 so it's easier to run VMs and containers on it 16:35:41 and got this far: http://files.cockpit-project.org/jenkins/ 16:36:04 you can see that we have a cockpit git master build, which fails during testing 16:36:16 Due to an invalid /tmp directory for the jenkins user 16:36:33 but rather than fix the symptom, i think the issue is that the build/test environment is not contained well enough 16:37:11 so i'm working on getting reproducable jenkins slaves that we instantiate from snapshots (either qcow2 and/or ostree) and run in a container 16:37:29 i'd like to also run ./VERIFY in such a container, so that all its dependencies are isolated from the host physical system 16:37:54 but it would still spin up qemu, right? 16:37:56 what about multiple containers to test inter-machine operation? 16:38:03 mvollmer, yes, at least for now 16:38:30 dominikp, we currently use qemu virtual machines to do that, but it is possible that some of those use cases can be replaced by containers 16:38:46 i'm trying to scope this work a bit: 16:39:11 * Get the current VERIFY test suite running as CI against two OS's (Fedora 21 and Rawhide) 16:39:34 and i hope we can go from there with further changes incrementally 16:39:53 I see the lack of testing against multiple OS's as something that is going to bite us 16:40:50 #info http://files.cockpit-project.org/jenkins/ is up and running 16:40:56 But I do have a question that i wanted to bring up 16:40:59 and that's about security 16:41:14 it seems that Travis will happily run/build whatever you want it to 16:41:14 stefw, is jenkins in a VM? 16:41:20 yes the jenkins master is in a VM 16:41:34 but the build slaves are not? 16:41:42 well the executor for the build slaves will not be 16:41:47 but that's not such a big deal 16:41:50 we can try and script those well 16:42:06 ok 16:42:07 so essentially each time a build slave is needed, it'll ask the host to spawn one, and it'll spawn a container 16:42:16 although tbh, containers are not secure either 16:42:43 with CI pulling from github.com it's really easy to execute someone's code from their pull request 16:43:10 how do other people do this? do they only test once something has landed into master? 16:43:13 or post review? 16:43:23 ie: manually triggered? 16:44:15 * stefw still can't believe that Travis CI actually lets you run whatever shit you want for 10 minutes 16:44:48 they treat requests from somewhere else differently 16:45:03 http://docs.travis-ci.com/user/pull-requests/ 16:45:49 isn't that about secrets? 16:46:15 in other words travis will still happily execute code from random pull requests 16:46:18 they don't really screen pull requests is what I gather from that 16:46:20 it just won't share your projects secrets with them 16:47:03 how much effort would it be to create a vm for the test? 16:47:19 yes, we could do that 16:47:28 it won't prevent malicious code 16:47:29 and that would sorta insulate the host from security issues 16:47:32 but it would preserve the host 16:47:38 but the code could still attack the rest of the internet 16:48:03 you can restrict the vm (traffic, firewall, ...) 16:48:13 and a timeout takes care of the rest 16:48:35 yes but this is really getting complicated fast 16:48:40 in addition jenkins has security issues 16:48:44 where slaves can tell the master to do things 16:50:04 are there alternatives? 16:50:19 i don't know. i guess we have to figure that out 16:50:27 manually triggering the build after review is an alternative 16:50:35 does the master have to be on the host, or can it run in a vm? 16:51:11 it's in a VM 16:51:23 but all the same issues apply there 16:51:44 you can reset it regularly 16:51:51 anyway, i can do more research around this, i guess 16:52:12 #info No real nice answer to the CI security issues, stefw will continue to look into it 16:52:13 I don't think manual triggering is good, though 16:53:04 not until it's actually an issue 16:53:30 well manual triggering would let us start using this right away 16:53:38 while we wait to figure out the plethora of security issues 16:53:42 i agree it's suboptimal 16:54:10 can you exempt a github group from manual approval? 16:54:32 i can look into that 16:55:19 #action stefw will try to get jenkins and github working together with manual approval and perhaps a whitelist 16:55:24 manual triggering wouldn't be that bad if access to the trigger isn't too limited 16:55:52 #topic Roadmap 16:56:03 Should we wait until at least andreasn and others are here for this? 16:56:35 That is, in order to start updating our roadmap and planning out the steps? 16:56:45 mvollmer, you still around? 16:56:49 yep 16:56:54 it would be better, probably 16:57:14 i think we have lots of warming up to do, to get back into the rhythm of things today and tomorrow 16:57:14 I can pick my way along until then 16:57:24 i tihnk more folks will join in on Wednesday 16:58:48 alright anything else? 16:58:52 #topic Open Floor 17:00:53 #endmeeting