16:04:47 #startmeeting storyboard 16:04:48 Meeting started Thu Mar 20 16:04:47 2014 UTC and is due to finish in 60 minutes. The chair is krotscheck. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:04:49 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 16:04:52 Roll call, who's here? 16:04:52 The meeting name has been set to 'storyboard' 16:05:10 I'm here 16:05:15 o/ 16:05:23 (for the first 15min or so) 16:05:35 Ok, let's get over the big stuff quick 16:05:43 #topic MVP 16:06:03 Current status is "everything's working except for comments" 16:06:25 jeblair wants comments before infra copts it. We've been dogfooding it ourselves to some extent. 16:06:27 The controller is no review 16:06:38 NikitaKonovalov: And it looks fantastci 16:06:44 and thaks to ruhe, it's tested 16:06:49 The UI is causing me a bit more issues, because I'm still trying to get my paging patch working 16:07:15 So I haven't gotten to work on that, current ETA this afternoon. 16:07:16 krotscheck: I think the MVP needs task state change as well ? 16:07:40 ttx: That doesn't seem to be explicitly listed: https://etherpad.openstack.org/p/StoryboardMeetup 16:08:09 krotscheck: probably not 16:08:20 ttx: I stand corrected, there's a mention of setting a task as "invalid" 16:08:21 krotscheck: I just don't see how comments can be more useful than task changes 16:08:23 It's implicit 16:08:38 since the idea is to track completion of tasks overall :) 16:08:40 Status changes aren't that hard, thankfully 16:08:46 yeah, i figured 16:08:53 Ok, I'll add that to the agenda 16:08:57 o/ 16:09:05 krotscheck: could be considered MVP+1 16:09:43 Ok, so outstanding for jeblair is comments, outstanding for ttx are task statuses. 16:10:09 krotscheck: if infra thinks they can use it without task changes, i'm fine with leaving them out :) 16:10:15 jeblair: ? 16:10:22 in all cases it's probably the next step 16:10:29 oh i think they're pretty important :) 16:10:35 krotscheck: about comments... the POC tracked the history of changes as comments. Do you think we should too ? 16:11:02 i.e. it would interleave "system remarks" with "human comments" 16:11:14 the same way Lp does 16:11:30 ttx: Let's postpone that discussion until we get to comments. 16:11:32 ttx: that's a good idea, but something i was thinking about recently is that we might want to record the history of editing the story description... 16:11:35 (That's on the agenda) 16:11:36 I think it makes it easier to follow the flow 16:11:45 * jeblair waits for appropriate time in agenda 16:11:52 * ttx shuts up 16:11:58 #topic Auth Research 16:12:02 (where's the agenda?) 16:12:13 #link https://etherpad.openstack.org/p/StoryboardPerms 16:12:20 jeblair: #link https://wiki.openstack.org/wiki/StoryBoard#Meeting 16:12:47 NikitaKonovalov: were you able to do some research into ACL systems that might help us moving forward? 16:13:47 well first we still need to move tokens to database 16:14:02 (For those of you new to this discussion, I threw some ideas into an ether pad. They are very draft-ish) 16:14:03 or we will be not able to scale API controllers 16:14:23 But to make things work faster we may use memcached 16:14:51 keystone has this functionality implemented 16:15:25 NikitaKonovalov: I don't think memcached is an option - one of our requirements is that API keys can be generated and persisted for Infra daemons. If we keep those tokens in memcache we risk losing them. 16:16:08 (unless there's a memcache persistence layer that I'm not familiar with) 16:16:15 I mean, keep them in database an save to memcache for performance 16:16:54 and expiration policy for memcache, so it does not get full of usless tokens 16:17:38 I'm not certain memcache is the right answer here. 16:17:53 Don't get me wrong - having the performance would be fantastic. 16:18:09 And using the expiration policy as our token lifetime would be pretty simple. 16:18:24 I was mostly looking in keystone, so that's the way they do it 16:18:30 Hrm 16:18:43 and actually they support some other key-value storages 16:18:47 Ok, so in-use tokens would get cached into memcache. 16:18:54 right 16:19:10 I like that better. 16:19:32 How easy would it be to adapt keystone's code and make it more pecanish? 16:20:23 That's probably a broader question. 16:20:32 krotscheck: do we need to optimize token storage right now ? 16:20:38 ttx: I was about to ask that 16:20:53 Since we need to put it in the database anyway, let's start there. 16:20:58 we expect like 10 users max at this point :) 16:21:08 there is an WSGI middleware in keystone that does everything realted to tokens, but I'm not sure we can take a part from it 16:21:10 sounds like something that's easy to abstract after the fact 16:21:19 We should be able to layer on memcache later. 16:21:20 ttx: agree 16:21:33 krotscheck: And, to be honest, we might want to use memcache not only for our tokens. 16:21:38 let's start with databsae only 16:21:47 Any disagreements? 16:21:54 (do we need a vote?_ 16:22:10 nope go for it 16:22:26 ++later 16:22:34 (but also ++memcache) 16:22:40 #agreed First step on Storyboard ACL's is to get the tokens into the db, further design discussion postponed until then. 16:22:57 #idea Layer on memcache to optimize token queries. 16:23:14 #topic Database migration pain 16:23:31 ruhe did a great job removing the sqlite pain over the weekend. 16:23:38 ttx: You mentioned there was another potential issue? 16:23:56 krotscheck: I worked around it. Foreign keys in the initial DB definition make it hard to remove them 16:24:03 ttx: Got it 16:24:16 but looks like I hacked around it: https://review.openstack.org/#/c/81562/ 16:24:35 basically we didn'(t name the constraints, and you need to have their name to remove them afterwards 16:25:02 FYI for everyone: Unit tests are now run off of sqllite using the sqla manifest generated from our models. Our migration tests then run a table comparison to see whether the DB generated by that manifest matches the DB generated by our migrations. 16:25:02 the hack is to retroactively name them after what they end up being named in mySQL DB 16:25:26 ttx: will the migrations work after you have changed the initial one? 16:25:31 the leftover quetsion is... should we just name them all NOW (or remove them all NOW) to avoid future pain 16:25:41 NikitaKonovalov: sure 16:25:50 i'm in favor of removing them all now... 16:25:51 that's great 16:25:55 NikitaKonovalov: it will only break people that have postgresql deployed and do CD 16:26:07 krotscheck: oh, mordred and i had a convo in #storybeard earlier and i don't think you were online 16:26:09 let me paste it 16:26:14 because our overwrite of the initial migration doesn't correspond to their current state 16:26:18 Heh. Storybeard. 16:26:26 Like it 16:26:37 I'm also in favor of removing them all now 16:26:46 #link http://paste.openstack.org/show/73920/ 16:26:55 I know cody-somerville expressed the other preference 16:27:07 jeblair: Yeah, my znc bouncer is fubar right now. 16:27:08 krotscheck: storybeard is extra hipster 16:27:15 ..... 16:27:17 lgtm, because thous are not the migrations actually, they are kind of "ajusting the model" 16:27:22 I think we have an april fool's joke. 16:27:29 ++ 16:27:52 That said, if we remove them now it will look a bit funni in the migrations 16:27:57 or funny 16:28:08 so the tldr is that since alembic creates the schema, we can simply omit fk definitions from alembic, but still have the sqla orm understand the relationships 16:28:10 nothing a migration consolidation can't fix 16:28:29 jeblair: yes 16:28:30 please don't get rid of fk constraints. 16:28:32 (as a practice for eliminating fks in the db going forward) 16:28:46 cody-somerville has the floor! 16:29:26 * ttx is happy to defers to the MySQL overlords 16:30:35 if mordred says they are useless and potentially a barrier to scale, he knows a lot more tahn I do on that toic 16:30:40 +p 16:31:04 I'm in the same camp. I've relied on FK's a lot in the past, but mordred's argument makes sense. 16:31:13 we will never be at that scale. 16:31:26 plus, bugs! 16:31:33 too high of a risk that we mess up and corrupt our data 16:31:41 our data deserves the extra protection fk provides 16:31:57 i don't think it provides any extra protection 16:31:57 it will not affect our ability to scale 16:32:05 the application needs to understand and enforce these constraints anyway, so it's wasteful to have the database do it 16:32:12 until have like terabytes of data 16:32:16 cody-somerville: i'm fine either way. Just want to pick a way and stick to it, rather than do it 10 migrations down the road 16:32:23 and they cause all sorts of problems with schema changes (including but not limited to what we've just seen) 16:32:34 jeblair: data lives a long time, code not so much. 16:33:24 I think we can have that discussion off-meeting 16:33:32 and the issue we're seeing is due to alembic being a young project. It's just a missing feature or it's doing something wrong. 16:33:43 Seems like a longer argument. How about we take this to openstack-dev? 16:33:44 just need to make sure cody and monty are in the room at the same time rather than talk past each other 16:33:56 ttx: ++ 16:34:13 otherwise i just agree with the last one who spoke 16:34:17 Seems like a big enough 'best practice' argument that the rest of the community would care. 16:34:45 krotscheck: my personal feeling would be: FKs just created pain for me, let's get rid of them 16:35:58 * jeblair agrees with the last thing ttx said 16:36:06 ttx: Well, that's SQLA's abstraction that's causing the pain. If you were working natively that wouldn't be that much of a problem, but I see your point. 16:36:18 natively on one database that is. 16:36:22 This is sort of a similar argument to type systems. 16:36:30 they will bite us again on some migration that's impossible to do because of a fk constraint 16:36:35 For what it's worth, the south migration engine handles this just fine. 16:37:09 Alright, let's take this offline. Who wants to start the dev-list thread? 16:37:09 or even some code error that the fk system _didn't_ catch but is impossible to clean up due to it. etc. 16:37:15 but yes, fk constraints beyond that can cause issues and it's usually because we want it to. (oh hey, you're doing something that fundamental breaks your data model integrity). 16:37:20 krotscheck: my recommendation would not be to look to openstack-dev for a decision. you will get opinions, but we already have those. :) 16:37:24 cody-somerville: I think jeblair's argument is that migartion engines work better with simple DB definitions, and ORMs preserve integrity from the app perspective 16:37:40 ttx: wow why can't i summarize my thinking like that. 16:37:42 What happens when someone decided to write some raw SWL? 16:37:51 *decides 16:37:56 jeblair: It's a distraction tactic. I actually think the current status is painful but understood, and therefore manageable, therefore we can focus on other features :) 16:38:09 What happens when we do major refactoring? and maybe we mess up. 16:38:17 jeblair: we form a synergetic double-human 16:38:41 cody-somerville: We write more tests :) 16:38:45 the data is just too valuable to risk 16:38:46 cody-somerville: so we need good real tests of schemas and migrations (on mysql and not sqlite) 16:38:47 cody-somerville: ++ 16:39:02 cody-somerville: and if that fails and we hose our production instance, we restore from backup. :) 16:39:25 #topic Comments 16:39:25 people suck at writing tests. writing good tests is hard. 16:39:31 This is like an argument on type safety 16:39:35 * krotscheck is forcing this conversation offline 16:39:36 cody-somerville: (which is the same thing we would do with any kind of delete lots of data error, which fks not only don't protect against but also can facilitate) 16:39:53 we shouldn't spend the whole meeting on that. Better to expose each arguments in a well-thought ML post and see if we can reach consensus 16:40:05 krotscheck: +1 16:40:14 I'd go post on -infra 16:40:49 agree, let's discuss that in mailing list 16:40:52 Ok: jeblair wants comments! We all want comments! We have simple non-threaded comments on a patch right now, but I haven't been able to look at/polish the UI yet. 16:41:01 yay! 16:41:25 Current start ETA is this afternoon, assuming I don't get into another argument with jeblair on paging :) 16:41:48 jeblair and tax mentioned the idea that each task should have a log of changes. 16:41:53 *ttx 16:42:13 right, ttx was suggesting incorporating that as comments 16:42:26 My perspective is that a history log is valuable, however it's a slightly different problem than comments, and should be treated differently. 16:42:38 we can handle that with comments, by just setting a type 16:42:40 i was throwing out the idea that things like 'editing the description' may want to be logged too, but might be too verbose for comments, so we might want a side-channel log of things like that 16:43:04 i don't know if that means that we should put all actions in the side channel log, or some, or what... 16:43:09 krotscheck: so there are two types of "history commenst" 16:43:11 what about a checkbox for show/hide service commnets 16:43:40 ttx: but i do agree with the idea that peoples actions on stories should be visible, and makes sense to put them in the chronology of comments 16:43:54 the UI can filter them before rendering 16:43:58 krotscheck: the first type is meaningful for the discussion. For example, an autocomment saying you added a task affecting Nova spares you from having to post a "Oh BTW this also affects Nova apparently" comment 16:44:00 ttx: Well, there's an event log for what has happened to the story, and there's a comment sections. The event log would include something like "so and so left a comment", and the UI could resolve that comment, but it would also include state changes, etc. 16:44:14 the second type is more an activity log 16:44:57 krotscheck: if you look at LP, whenever you change status you can easily add a comment about it to justify iy 16:44:59 it* 16:45:27 so for example, if you change task status to "merged" you can add a link to the review that was merged 16:45:48 I hate it when people change something and don't explain why 16:45:50 (mildly distracting but i want to mention it anyway: launchpad's rolling up of several actions into one is really nice) 16:45:58 So I don't want us to discourage that 16:46:08 (jeblair: yes) 16:46:11 ttx: I don't want to overload comments with additional functionality that isn't really part of the design discussion. 16:46:20 s/design/story/ 16:46:36 krotscheck: well, the story discussion is all about steps to resolve bugs 16:47:03 so things like "this also affects nova" are pretty critical in the discussion 16:47:04 Ok, so we're conflating "features" and "design" here. 16:47:22 What jeblair is asking for is the ability to collect several actions into one, which I think is good. 16:47:38 What ttx is asking for is the ability to see a full log of a story/tasks history 16:47:56 krotscheck: no 16:48:01 I'm sure we have a bunch of other ways that people want to see the lifecycle of a task. 16:48:12 krotscheck: i'm saying that key status changes are part of the discussion 16:48:14 let's not focus on the thing i mentioned; it's distracting and can be addressed later 16:48:28 ttx: ++ 16:48:42 krotscheck: and that's based on my experience with openstack and LP 16:48:50 not just somethign I deeply believe in 16:49:33 ttx: What I'm saying is that what you're asking for is a feature, and can easily be represented in the UI that way, however how that actually ends up being implemented technically is irrellevant. 16:49:47 here's a nice bug: https://bugs.launchpad.net/openstack-ci/+bug/1266513 16:49:49 Launchpad bug 1266513 in openstack-ci "Some Python requirements are not hosted on PyPI" [Critical,In progress] 16:49:51 with lots of status changes 16:50:01 along with associated comments 16:50:03 ttx: So when we talk about "comments", to me that says : The area in the UI that you're interacting with that contains comments" 16:50:19 krotscheck: I see your point 16:50:21 ttx: When I say comments, I mean the comments API that handles someone actually talking. 16:50:54 krotscheck: I'm just saying whatever we end up doing should support displaying more than just "comments" in the "timeline" 16:51:19 i think there may also be the implication that the "update task state" api may need a comment parameter as well 16:51:25 ttx: So my suggestion is that when someone leaves a comment, or changes a status, they actually create an event associated with that story, which includes some reference to the comment and/or status change. 16:51:31 the simplest way to do that is to have a single table with comment types, like in the POC 16:51:48 and have status chnages be fed into that table 16:51:52 but that's implementation. 16:51:55 And then the UI actually renders a filterable list of events, which themselves resolve the related resources for display 16:52:04 Right. 16:52:20 So right now, is anything other than a single-threaded comment list asked for? 16:52:27 yes, I think using "timeline" (and "events") clarifies what we mean 16:52:50 i was just not using "comments" for the thing you meant 16:52:54 ttx: Using the timeline metaphor can easily be extended to projects, features, stories, releases.... 16:52:57 krotscheck: that sounds reasonable (especially the 1:many event:action-or-comment aspect) 16:53:12 if comments are just a part of a timeline that will contain other types of important events, ++ 16:53:33 kk 16:53:51 Further design discussion pending, I think what NikitaKonovalov gave us is sufficient for MVP, but it's good to know this is on the horizon 16:53:57 7min left 16:53:59 #topic Paging 16:54:32 I'm altering my paging patch to use oslo's marker/limit rather than offset/limit, and to make the max/default page sizes configurable via storyboard.conf. 16:54:48 Hopefully the patch will be updated today. 16:54:58 #topic Task status 16:55:28 ttx: Any ask for anything more than a status FK-ish link to a table of valid task statuses? 16:55:44 krotscheck: nope 16:55:52 NikitaKonovalov: Think you can add that? 16:56:16 my point was just: until we add that, we can list work todo but can't track completion of anything 16:56:30 so it's like the next thing after MVP imho 16:56:55 ok. 16:56:56 we can have more complicated queryis to fetch that 16:56:59 (personally I find it more critical than comments, but that's the result-oriented me) 16:57:00 ttx: we can't mark the mvp as complete until we do, so it's self-necessitating! :) 16:57:39 jeblair: nice 16:57:40 We're running out of time, and I don't want to start another design discussion. 16:58:07 i think we all agree they are important 16:58:09 Let's move this to offline, NikitaKonovalov, I'm just going to assume you make your magic happen and the feature will appear. 16:58:10 krotscheck: should be easy since at this point we have only 3 states and don't plan to get smarter than that 16:58:35 FWIW the end goal is to have that set automatically on merge for git-backed projects 16:58:40 ttx: Yeah, a simple implementation could just be an enum. 16:58:48 but in all cases we need to be able to manually set it too 16:58:52 story//stats may render everything about how many thing are in which state 16:59:15 NikitaKonovalov: That feels more like a /story?state=foo to me. 16:59:21 But we can argue about that. 16:59:23 later 16:59:25 #topic Requested New Feature 16:59:30 in other news, I plan to spend more time on Storyboard in the coming weeks. It's a nice distraction from boring release matters 16:59:43 Anything burning a hole in someone's brain that we need to put ahead of comments and task status? 16:59:45 and I want to stay up to snuff 17:00:05 krotscheck: nope 17:00:09 Awesome. 17:00:12 #endmeeting storyboard