18:03:41 <SotK> #startmeeting storyboard
18:03:41 <openstack> Meeting started Thu Jan 14 18:03:41 2021 UTC and is due to finish in 60 minutes.  The chair is SotK. Information about MeetBot at http://wiki.debian.org/MeetBot.
18:03:42 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
18:03:44 <openstack> The meeting name has been set to 'storyboard'
18:04:07 <diablo_rojo> Hello!
18:04:16 <SotK> hi everyone!
18:04:31 <diablo_rojo> Happy New Year!
18:04:45 <SotK> happy new year :)
18:05:00 <fungi> samesies
18:05:15 <SotK> I'd link the agenda but its about 6 months old so it feels a bit pointless
18:05:19 <diablo_rojo> Lets skip the part where we all feel guilty and move on to more productive things.
18:05:29 <SotK> agreed
18:05:35 <diablo_rojo> Lol yeah. I did not update it. I opted for more caffeine instead.
18:05:47 <SotK> a good choice imo
18:05:58 <fungi> we can always choose to feel guilty in private later ;)
18:06:08 <diablo_rojo> I always do :)
18:06:24 <SotK> I quite fancy a meeting where we think about what we want to actually get done in the coming months and start with a fresh agenda next time, unless folk have other ideas
18:06:40 <diablo_rojo> Sounds like a solid plan to me
18:06:42 <diablo_rojo> +1
18:06:46 <fungi> i'm all for that
18:07:09 <SotK> alright then
18:07:12 <SotK> #topic Planning
18:07:17 <SotK> that seems like a good heading
18:07:22 <diablo_rojo> I do love plans.
18:07:50 <fungi> i have quite a few things queued up, which all depend on opendev switching the storyboard.o.o deployment to using the container images we've been publishing
18:08:06 <fungi> so for me at least, that's the top storyboard-related priority
18:08:15 <SotK> yup, I think that feels like top priority for me too
18:08:21 <diablo_rojo> +2
18:08:35 <fungi> gets our continuous deployment continuous again, so folks in opendev can take advantage of more recent fixes which have merged
18:09:00 <fungi> and also unblocks me from making progress on setting up the artifact storage backend
18:09:10 <SotK> do we know what the concrete steps to get that switch done are?
18:09:11 <diablo_rojo> Yes to all of that.
18:09:18 <SotK> is it something I can help with somehow?
18:09:50 <fungi> we do it all at this point with stuff in the system-config repo, including like-production test deployments in zuul jobs
18:10:00 * fungi looks for a good example
18:10:44 <fungi> #link https://opendev.org/opendev/system-config/src/branch/master/playbooks
18:10:58 <fungi> the various service-* playbooks in there
18:11:43 <fungi> service-zuul.yaml might be a good example
18:12:56 <fungi> the meat of the "zuul" role it refers to is here:
18:12:59 <fungi> #link https://opendev.org/opendev/system-config/src/branch/master/playbooks/roles/zuul/tasks/main.yaml
18:13:09 <diablo_rojo> so we need something like that for storyboard?
18:15:17 <fungi> zuul might be an unnecessary complicated example the closer i look at it
18:15:48 <diablo_rojo> There are a lot of parts :)
18:15:50 <fungi> part of the challenge is that we have a mix of some services which we deploy from containers we build our own forked versions of images for, and some where we consume externally-supplied images
18:16:15 <SotK> it makes some sense I think, presumably we'll need start and stop tasks like those in https://opendev.org/opendev/system-config/src/branch/master/playbooks/roles/zuul-scheduler/tasks too?
18:17:23 <fungi> likely
18:17:35 <SotK> (or just put the docker-compose stuff inside the main file, like the etherpad deployment seems to have I guess)
18:18:29 <fungi> etherpad isn't python-based but might be a cleaner example:
18:18:33 <fungi> #link https://opendev.org/opendev/system-config/src/branch/master/playbooks/roles/etherpad
18:19:17 <fungi> we do a docker-compose file for it in a template like this:
18:19:20 <fungi> #link https://opendev.org/opendev/system-config/src/branch/master/playbooks/roles/etherpad/templates/docker-compose.yaml.j2
18:19:43 <fungi> but could just be installed as a normal file if we don't need to parameterize zecrets
18:20:50 <fungi> the other major part i hinted at earlier is deployment testing
18:22:17 <fungi> #link https://opendev.org/opendev/system-config/src/branch/master/zuul.d/system-config-run.yaml
18:22:29 <diablo_rojo> Yeeeah..
18:23:03 <fungi> if you scroll down to the system-config-run-etherpad job for example, that is a production-like deployment test which exercises all of the deployment tooling for a service
18:23:42 <fungi> it gives the job two nodes, one of which is our deployment bastion (bridge.o.o) and the other of which is a server to set up as an etherpad instance (etherpad01.o.o)
18:24:13 <fungi> these aren't our actual production servers, they're just ephemeral job nodes set up similarly at job runtime for testing purposes
18:24:42 <fungi> you'll see the job runs our actual production deployment playbooks on them though
18:24:43 <diablo_rojo> I'm still following.
18:25:19 <diablo_rojo> So its the playbooks for like service-etherpad and defining the ansible roles we don't have/need to write for storyboard?
18:26:07 <fungi> basically, whatever we need to glue together the right docker images
18:26:19 <SotK> that's a really nice testing setup
18:26:44 <SotK> OK I think I understand what is needed
18:26:46 <fungi> the other key bit for the testing is the testinfra scripts, which basically exercise their respective services: https://opendev.org/opendev/system-config/src/branch/master/testinfra
18:27:15 <fungi> so the etherpad one for example just checks that you can reach the api socket over loopback
18:27:32 <fungi> but we can do far more complex testing of a service, that's a very simple example
18:27:57 <fungi> anyway, the goal is not to test the software itself, but to test that it was able to deploy and start up correctly
18:28:11 <fungi> basically exercise the deployment tooling itself
18:28:40 <diablo_rojo> Yeah okay. That makes sense.
18:28:41 <SotK> makes sense
18:29:09 <SotK> are you likely to have time to get to this soon, or shall I do some work on it over the next few weeks?
18:29:47 <fungi> it's really hard to say. i'm often sucked into trying to deal with emergencies (like right now afs is on fire), and that's rarely predictable
18:30:13 <fungi> so if anybody else is interested in trying to make progress on it, that would be amazing
18:30:54 <fungi> the up-side to this new deployment+testing model is that you can basically end-to-end test that the proposed deployment will work before we ever stand up a production server for it
18:31:16 <fungi> we can also fairly easily hold a node from the test job and manually poke it to do more thorough exploration
18:31:34 <SotK> alright then, I'll make that my priority to work on then
18:31:45 <fungi> thanks!
18:32:06 <diablo_rojo_phon> Ugh. Flaky WiFi today.
18:32:21 <diablo_rojo_phon> If there's anything I can do to help SotK, let me know.
18:32:31 <SotK> will do
18:34:05 <SotK> I think after that's sorted and we've got the blocked stuff moving again, I think the next priority needs to be addressing the impending death of AngularJS
18:34:07 <SotK> #link https://docs.angularjs.org/misc/version-support-status
18:34:18 <diablo_rojo_phon> I can sign up to do an audit of open patches and see if anything needs updating.
18:34:22 <fungi> feel free to hit me up with questions or remind me what changes you've pushed for feedback too
18:34:26 <diablo_rojo_phon> Ah yes. What fun.
18:34:47 <SotK> tbh I'd guess that we're currently on an older version and out of support anyway
18:35:07 <diablo_rojo_phon> Yeah I would guess the same.
18:35:10 <fungi> i fully expect that to be the case
18:35:22 <diablo_rojo_phon> I know there are a lot of dependencies that need updating.
18:35:30 <diablo_rojo_phon> We had a list of them if I recall.
18:35:52 * SotK expects that list would now contain our entire dependency list
18:35:59 <diablo_rojo_phon> Hahahahahaha
18:36:04 <fungi> probably so
18:36:09 <diablo_rojo_phon> I really hope not, but probably.
18:37:35 <diablo_rojo_phon> So we need to replace angular.js with something else?
18:37:49 <SotK> ideally yes
18:38:00 <SotK> which basically means rewriting the webclient afaict
18:38:26 <SotK> modern Angular (the ostensible replacement for AngularJS) is quite different
18:38:39 <diablo_rojo_phon> Ughhhh alright. Well I can start some research into alternatives.
18:38:54 <SotK> to the extent that if we were to be switching to it I'd rather just switch to a nicer framework
18:39:31 <SotK> I know (I think I know anyway) that zuul uses react for its webclient
18:39:34 <fungi> right, if it's a full on rewrite to begin with, then evaluating alternatives is prudent
18:40:13 <SotK> I'm not really familiar with react, though I've used it a bit
18:40:19 <diablo_rojo_phon> Yeah I figured I would look into those two and see what else we have. I can probably put together an etherpad.
18:40:25 <fungi> yeah, zuul is using react currently
18:40:37 <SotK> I've used Vue a reasonable amount and am currently using it actively in my day job, so that would be my broad preference
18:41:00 <fungi> and react seems to rely on a js derivative language called jsx?
18:41:42 <SotK> indeed, I find it a bit distasteful but have been trying to teach myself to like it xD
18:41:50 <diablo_rojo_phon> I was just about to mention Vue lol
18:41:56 <SotK> I actually put together a prototype vue storyboard client last year to help me learn vue
18:42:11 <diablo_rojo_phon> Oh nice.
18:42:12 <SotK> which we could use as a starting point for something if we want to go that route
18:42:44 <fungi> also probably a good opportunity to fix some places where we ended up with business logic in the client rather than behind api methods
18:43:00 <SotK> there's an old and broken version of that prototype here: https://storyboard-vue.sotk.co.uk/
18:43:03 <diablo_rojo_phon> Seems like a reasonable option. I'll add that to my notes.
18:43:07 <diablo_rojo_phon> Thanks!
18:43:20 <SotK> yeah I think that we can use this as an opportunity to address quite a few issues really
18:43:29 <fungi> particularly the current search implementation seems liek it does more client-side than it should
18:43:31 * SotK looks pointedly at searching
18:43:39 <fungi> heh
18:43:54 <diablo_rojo> Yay! I'm back.
18:43:56 <diablo_rojo> LOL
18:45:00 <diablo_rojo> Well I will take the research todo and present my findings next week?
18:45:04 <SotK> sounds good
18:45:10 <diablo_rojo> Coolio.
18:45:19 <SotK> I'll try to get that link updated with a working version of what I had
18:46:19 <diablo_rojo> Will wait to check that one out.
18:46:36 <diablo_rojo> I'll start with React and Angular.
18:47:07 <fungi> got a link handy for info on teh vue framework?
18:47:49 <diablo_rojo> https://vuejs.org/
18:47:50 <diablo_rojo> ?
18:48:01 <diablo_rojo> https://vuejs.org/v2/guide/comparison.html
18:48:05 <fungi> perfect, thanks!
18:48:07 <diablo_rojo> might be more helpful
18:48:23 * SotK was just about to send that same link xD
18:48:41 <diablo_rojo> :D
18:49:57 <diablo_rojo> Cool. Then I guess we all have stuff to work on till next week.
18:50:02 <SotK> yup
18:50:08 <diablo_rojo> We have ten min left in the meeting.
18:50:10 <SotK> anyone have anything else they want to discuss?
18:50:24 <diablo_rojo> I don't think so.
18:51:18 <SotK> #endmeeting