14:09:43 #startmeeting Cockpit weekly meeting 2016-11-21 14:09:43 Meeting started Mon Nov 21 14:09:43 2016 UTC. The chair is andreasn. Information about MeetBot at http://wiki.debian.org/MeetBot. 14:09:43 Useful Commands: #action #agreed #halp #info #idea #link #topic. 14:09:43 The meeting name has been set to 'cockpit_weekly_meeting_2016-11-21' 14:09:50 #topic agenda 14:10:02 * Translations 14:10:04 * Debian builds 14:10:11 * Simpler reauthorization 14:10:25 * container image scanning 14:11:28 anything else? Did you have something too, dperpeet? 14:11:38 that's good 14:12:15 all right 14:12:19 #topic Translations 14:12:36 I've pretty much finished up all the work on making Cockpit translatable 14:12:49 It wasn't fun ... but it's pretty much done 14:13:02 .hello mvo 14:13:05 mvollmer: mvo 'Marius Vollmer' 14:13:09 Once #5442 #5443 and #5444 are merged 14:13:12 .hello andreasn 14:13:13 andreasn: andreasn 'Andreas Nilsson' 14:13:21 stefw: yay! 14:13:23 so that includes being able to mark up all the different kinds of input that we use 14:13:33 Mustache, React, javascript, HTLM 14:13:37 scanning for and extracting strings 14:13:46 and bringing them in ... including into Mustache and Angular 14:13:46 do we have any language with full coverage? 14:13:54 no we just marked up the strings 14:13:57 the change with double quotes in javascript surprised me 14:14:00 unless someone went back in time and translated it 14:14:03 dperpeet, that was not a change 14:14:06 that was always the case 14:14:13 at least as far as i know 14:14:19 because of how xgettext extracts strings 14:14:41 the very latest modern point version of xgettext knows about javascript 14:14:43 but none of the others do 14:14:54 and so our javascript is treated as C code 14:14:57 interesting, I thought it was a new requirement... I'm certain I never reviewed that 14:14:59 and always has been 14:15:16 dperpeet, did you see the strings getting extracted before when you used _('string') ? 14:15:21 did you run 'make update-po' and check the cockpit.pot file? 14:15:30 so yes, there are all sorts of gotchas 14:15:31 ahem :) 14:15:42 if you run a development build of cockpit you can see "Translating" in the sidebar 14:15:50 click there and you can see the various forms and rules for marking up strings. 14:15:58 there's a lot of places in cockpit where things are/were wrong 14:16:03 and i've done one pass fixing them 14:16:12 other people can fix them as they notice them, and/or review new pull requests 14:16:22 so i would encourage folks to get familiar with the forms if they're going to be reviewing text 14:16:35 yes, thanks for that 14:16:36 once we have a release including these changes, we should make a post to cockpit-devel asking for more translations. 14:16:49 this is ugly horrible nasty work ... but i'm glad it's finished 14:17:06 we also have tests, yay 14:17:10 tests that check that translations work 14:17:14 and extra bonus .... 14:17:21 we even have the correct setlocale() and LANG in cockpit-bridge now 14:17:35 so any libraries it links, or processes it calls will (by default) get the right language set 14:18:00 one thing to note when adding a new language, is that a language_country code must be added to the shell manifest.json 14:18:04 which means we have to be really careful when screen scraping output 14:18:09 and one more reason to avoid that 14:18:13 dperpeet, always use LC_ALL=C when screenscaping output 14:18:16 then you can go wild 14:18:22 but yeah, screenscraping is fugly 14:18:29 of course, but I wouldn't place any bets on whether we actually do that everywhere 14:19:05 someone interested could port the tests to run in no-english 14:19:09 then you would catch those bugs 14:19:11 but that's a lot of work 14:19:15 since it affects both frontend and backend 14:19:18 anyway ... as i was saying 14:19:24 the "Display Language" selection in teh console 14:19:31 actually affects locale *and* language 14:19:42 so "de" is a language 14:19:50 "de_DE" is a locale, "de_AT" is a locale 14:20:27 so i think that's it ... mostly need to start thinking about this during review. 14:20:40 and petervo has/may work on a script to automatically update/pull from zanata 14:21:26 one more cockpituous job? =) 14:21:36 yes, likely for a verify machine 14:21:51 the two types of tasks that are run against github need to be refactored and broken out further 14:21:59 not be so married into the same python code 14:22:04 and then a third can be added 14:22:13 ie: updating the po files will open a pull request 14:22:18 so it goes in that bucket of fish 14:23:47 next topic? or anyone want to talk about this one more? 14:24:29 no, great job 14:24:36 #topic Debian builds 14:24:49 So we're testing on Debian Jessie ... yay 14:24:55 \o/ 14:24:56 mvollmer did a bunch of work to make that happen 14:25:07 what didn't happen is updating the repo to include jessie deb files 14:25:12 i need help with that 14:25:30 reprepro gives me errors about deb files having the same names in unstable and jessie 14:25:38 so someone who knows about this stuff needs to make a call 14:25:51 i have an incomplete pull request 14:25:55 here: https://github.com/cockpit-project/cockpituous/pull/57 14:26:03 and I can paste instructions in there on where I'm stuck 14:26:05 if it helps 14:26:40 I can have a look 14:26:51 ok, i'll put instructions in that pull request 14:26:54 shortly after this discussion 14:27:03 in addition 14:27:07 this page has been updated: http://cockpit-project.org/running.html 14:27:17 there are three sections, self explanatory 14:27:46 neat :) 14:28:14 it's a bit low contrast for my taste, but the sections are a great addition! 14:28:25 you can work with andreasn to make it not so low contrast :) 14:28:30 i'll review pull requests 14:28:36 what's low contrast exactly? The headers? 14:28:42 yeah, we can figure that out 14:29:22 just file it in the tracker here https://github.com/cockpit-project/cockpit-project.github.io 14:29:27 all right, net up 14:29:31 next up 14:29:52 #topic Simpler reauthorization 14:30:28 the next big block of work i'm likely to get pulled into is simplifying our reauth structure 14:30:35 just a heads up so people know what pull requests are about 14:30:48 so rather than reinvent reauthorization using our src/reauthorize code 14:31:08 i'm looking at just implementing a bog standard polkitagent that uses a login password and/or prompts when no password is available. 14:31:12 likely this will be implemented in javascript 14:31:28 so hence means adding the ability to export dbus objects over the bridge 14:31:33 which is not that hard 14:31:38 and i have most of the code written already 14:31:53 this is the first related pull request: https://github.com/cockpit-project/cockpit/pull/5441 14:31:54 will this touch on sudo authorizations that users might have? 14:31:56 setting some of the background 14:32:07 we'll likely have to keep the old way for backwards compatibility as well 14:32:14 petervo, yup 14:32:17 in cockpit-ws 14:32:54 yes, the idea is in addition to having a polkitagent also listen for prompts on the tty on which we launch sudo, and percolate those up as well 14:33:12 ok, great 14:33:15 have you thought about the pattern you'll use on the frontend? 14:33:18 fixing this is one of the biggest items on our LTS support 14:33:25 petervo, i've given it some thought 14:33:28 esp when dealing with multiple prompts? 14:33:37 i like the 'lock/unlock' pattern 14:33:56 the frontend UI implemented in such a way that either priveleged operations are possible (unlocked) ... or they're not (locked) 14:34:02 and you can see in the top bar which is which 14:34:10 you can see if privileged operations were required ... but not allowed 14:34:27 and map that back to superuser: require and/or superuser: try respectively ... and obviously also polkitagent requests. 14:35:02 petervo, worth thinking about: the sudo handling pattern could also extend to ssh if we wanted it to 14:35:08 but that's a next step 14:35:16 first thing would be to have a polkitagent in javascript 14:35:24 yep, that would be nice 14:35:26 currently although we invoke sudo, we never hand it a password 14:35:44 currently we only include sudo support for cloud instances where sudo is a way to get root without a prompt 14:36:00 so the upshot of this is: 14:36:07 design ^^ andreasn, will want to listen in here 14:36:12 when logging in 14:36:21 I'm listening :) 14:36:35 you choose "Use my password for privileged tasks and to connect to other machines" 14:36:37 on the login screen 14:36:43 that's disabled by default 14:36:54 once you choose it, it remains chosen via a cookie for further login attempts on this machine 14:37:06 that sets the mode that you start off in whether locked or unlocked for priveleged operations 14:37:21 the mode is displayed inconspicuously in the top bar next to your name 14:37:36 clicking on the mode lets you change it, ie: type a password to go from locked -> unlocked for privileged operations 14:37:57 if the ui tries to perform an action that requires a privileged operation ... the inconspicousness vanishes ... maybe it goes red up there 14:38:06 indicates that action is required up there ... and that's the reason that permission was denied 14:38:27 this is has some commonality with the gnome-control-center ... 14:38:57 the last thing we want is password prompt dialogs flashing the screen on various actions, showing up right after login, or other dumb times 14:39:06 right 14:39:20 by taking all these steps we can essentially model the escalating privileges model that linux has 14:39:32 so for an account that is wheel, will certain actions be locked by default? 14:39:41 while taking into account the idea that many (most?) users will want to log into Cockpit in such a way that they can perform privileged operations 14:40:05 andreasn, depending on whether you tell it to unlock on the login screen as you log in. 14:40:10 ah, right 14:40:31 but dun dun dun .... here's the thing that everyone needs to be happy with 14:40:32 once you do unlock 14:40:36 your password is cached in javascript 14:41:01 and this really isn't such a shocker ... when you think about security 14:41:24 both sudo, pkexec and gnome-shell already make you type your password into processes within the user security context 14:41:26 in javascript, but not in a cookie or session storage, right? 14:41:41 not in a cookie 14:41:49 but we need a way to get it from the login screen to the shell page 14:41:59 in the case where you've selected the option on teh login screen 14:42:09 yeah, I guess the model become closer to the cli. A bit worried that it will make cockpit less usable "out of the box" though 14:42:14 so if there's a good mechanism for that other than sessionStorage ... i'm all ears 14:42:24 andreasn, yup ... slightly 14:42:41 how will it work in case I log in with the "root" account on a box? 14:42:53 andreasn, it's always unlocked for privileged access 14:42:58 right 14:42:59 er, privileged operations 14:43:03 why do we change the default from "authorized" to not "authorized"? 14:43:31 setting the default will be a single true/false change so we can debate that long after these changes happen. 14:43:40 sure 14:43:53 reinventing the reauthorization model for linux didn't work 14:44:02 as much as the effort that i put in there 14:44:13 andreasn: filed https://github.com/cockpit-project/cockpit-project.github.io/issues/51 14:44:20 larsu: thanks! 14:44:26 and the reauthorization / privilege escalation model for linux sessions is to log in as unprivileged and then escalate privileges 14:44:32 we offer to perform that task with a single checkbox 14:44:50 and/or allow a log in directly as root 14:45:14 which models the rest of the (rather dubious) linux security and privilege escalation model 14:45:38 that said, if once thist is done, we really want to have that single checkbox start off as checked ... then we can discuss it at that point 14:45:49 the main downside of it is that it passes the user's password into the user session 14:45:51 sounds good 14:46:01 doing that without the admins consent ... is worth discussion ... at least 14:46:14 make sense to me 14:46:23 so, UI 14:46:53 yeah, we have the "your user is not allowed to do this because you're not in wheel" tooltips already 14:46:59 the storage page for example turns into a million tooltips for unprivileged users 14:47:08 so something similar could work in this situation 14:47:29 you can't move your mouse without triggering the same tooltip everywhere 14:47:40 maybe that can be improved as well 14:47:44 yeah, i think so 14:48:00 we'll be more forced to think about the UI when non-privileged 14:48:02 are there any operations on the storage page that is permitted at all? 14:48:03 which i think is a good thing 14:48:16 andreasn, well viewing the state is usually permitted as non-privileged 14:48:18 for most pages 14:48:20 although therte are exceptions 14:48:21 right 14:48:29 in the docker page, unless you're privileged your SOL 14:48:37 because ... docker things 14:50:09 the unlock bar sounds like a good approach 14:50:41 in key places we can point to it 14:50:42 but maybe need to discuss that outside this meeting, need to get around to container image scanning topic too 14:51:39 so lets do container image scanning now, before we run out of time 14:51:42 #topic container image scanning 14:52:16 larsu ^ 14:52:31 yes, sorry 14:52:51 it's looking bleak 14:53:09 the daemon stays around without owning the name (but exits after a while) 14:53:23 so even display of the information is looking bleak? 14:53:51 my idea was to poll the daemon every now and then 14:53:58 are there any parts of the design we can scale back on, to meet the technology? 14:54:05 which is working right now, but you'll end up with a lot of processed 14:54:10 *processes 14:54:18 I could turn up the timeout, I guess 14:54:26 yeah maybe for the initial version that would be good 14:54:31 it would help to be able to demonstrate how shit it is 14:54:47 with running code + pull requests that add simple features ... which don't yet exist ... and get people involved 14:54:49 ok, makes sense 14:54:55 in a vacuum ... nobody cares 14:55:14 but once something exists everyone has an opinion ... and what's more some people have an interest 14:55:19 people will care and blame cockpit if it starts all those dead processes though 14:55:24 so we'll need to be careful there 14:55:32 the processes don't say cockpit 14:55:38 and also we have something for that: 14:56:05 cockpit.onvisibilitychange 14:56:07 that should help ^^ 14:56:12 so when they switch away we can kill shit 14:56:16 maybe even log nasty messages to syslog 14:56:26 see http://cockpit-project.org/guide/latest/cockpit-location.html 14:56:40 ah, right 14:56:47 yeah I'll do that and up the timeout 14:56:49 http://cockpit-project.org/guide/latest/cockpit-location.html#cockpit-jump-hidden 14:57:00 the services do exit after a while 14:57:07 haven't figured out when, yet 14:57:29 is the daemon "atomic_dbus.py"? 14:57:32 yes 14:57:42 can't we fix that? 14:57:57 or am I misunderstanding? 14:58:04 yup we can and should, right larsu 14:58:15 they're not sure whether the atomic library "can handle multiple calls" 14:58:15 it's not hard to fix as i understand it 14:58:25 this is the actual response I got on the bug :/ 14:58:32 but yeah, of course I'm trying to fix it 14:58:43 right, sorry for doubting that 14:58:47 it's just all taking much longer than I though 14:58:50 mvollmer: no worries :) 14:59:40 yeah, it's a bummer 14:59:47 but that's how it is with everything we have to touch :S 15:00:01 ya :/ 15:00:16 anyway - just wanted to give that status update. end of topic :) 15:00:29 and that's 16:00 CET sharp 15:00:38 perfect 15:00:40 no time for open floor today :/ 15:00:43 #endmeeting