14:11:12 <abompard> #startmeeting hubs-devel 14:11:12 <zodbot> Meeting started Tue Aug 8 14:11:12 2017 UTC. The chair is abompard. Information about MeetBot at http://wiki.debian.org/MeetBot. 14:11:12 <zodbot> Useful Commands: #action #agreed #halp #info #idea #link #topic. 14:11:12 <zodbot> The meeting name has been set to 'hubs-devel' 14:11:19 <sayan> abompard: but you are open to create topics 14:11:46 <abompard> #topic Roll Call 14:11:49 <shillman> .hello wispfox 14:11:50 <zodbot> shillman: wispfox 'Suzanne Hillman' <wispfox@gmail.com> 14:11:53 <abompard> .hello abompard 14:11:57 <zodbot> abompard: abompard 'Aurelien Bompard' <aurelien@bompard.org> 14:12:02 <sayan> .hello sayanchowdhury 14:12:03 <zodbot> sayan: sayanchowdhury 'Sayan Chowdhury' <sayan.chowdhury2012@gmail.com> 14:12:06 <abompard> #chair shillman 14:12:06 <zodbot> Current chairs: abompard shillman 14:12:09 <sayak> .hello sayaksarkar 14:12:11 <zodbot> sayak: sayaksarkar 'Sayak Sarkar' <sayak.bugsmith@gmail.com> 14:12:12 <abompard> .chair sayan 14:12:14 <zodbot> sayan is seated in a chair with a nice view of a placid lake, unsuspecting that another chair is about to be slammed into them. 14:12:37 <abompard> .chair sayak 14:12:37 <zodbot> sayak is seated in a chair with a nice view of a placid lake, unsuspecting that another chair is about to be slammed into them. 14:12:42 <shillman> *blink* 14:12:46 <sayan> abompard: #chair 14:12:48 <abompard> this is cool 14:12:51 <abompard> I'm having fun 14:12:55 <abompard> #chair sayan 14:12:55 <zodbot> Current chairs: abompard sayan shillman 14:12:58 <abompard> #chair sayak 14:12:58 <zodbot> Current chairs: abompard sayak sayan shillman 14:13:04 <sayan> I never knew this thingy, this is so funny 14:13:25 <abompard> I feel like Steeve Ballmer 14:13:31 <sayan> haha 14:14:14 <abompard> Everybody has a chair? 14:14:36 <sayan> yes 14:14:40 <abompard> cool. 14:14:43 <abompard> Let's go to... 14:14:50 <abompard> #topic Status Updates 14:15:09 <abompard> Who wants to start? 14:15:15 <abompard> sayan maybe? 14:15:15 <sayan> I can go 14:15:18 <abompard> thanks 14:16:23 <sayan> So, last week after abompard help with the blunder typo that I did I created the backend for the rest of the steps 14:16:44 <sayan> I am still waiting on mizmo for the modal UI, so that I can write rest of the javascript 14:17:01 <sayan> Yesterday, I started working back on the storage of the logs 14:17:29 <mizmo> Sayan it is in thr patternlab repo if you build locally you can get the basic modal templates 14:18:01 <sayan> mizmo: ok I will do that, with the same colors like in the mockup 14:18:18 <sayan> I created using the bootstrap but the modal renders broken 14:18:42 <sayan> by bootstrap I mean from the bootstrap documentation 14:19:11 <abompard> sayan: remember we're using bootstrap v4 alpha 14:19:26 <abompard> that's what fedora-bootstrap is based on 14:19:34 <abompard> it's not 100% compatible 14:19:43 <sayan> for storage of logs abompard and I decided that we use mongodb for storing of logs 14:19:57 <sayan> abompard: yes, I refer to v4 docs 14:20:08 <sayan> I will check with the patternlab, it would be better 14:20:32 <sayan> and redis for storing the access tokens 14:20:51 <sayan> I still need to see how we can create/manage multiple users 14:21:43 <sayan> meaning as soon as a user creates account, we start receving data using the person access token 14:22:02 <sayan> that's from my side 14:22:28 <abompard> sayan: I think tokens should be stored in the PGSql db too, unless they are easy to get from matrix again, because Redis has no crash protection 14:22:51 <sayan> abompard: sorry to not mention that 14:23:03 <sayan> Yeah tokens would be stored in postgres too 14:23:07 <abompard> ok cool :) 14:23:23 <abompard> Alright, shillman do you wanna go? 14:23:32 <sayan> I will use redis just for communicating between the two applications 14:24:01 <shillman> Sure. I'm not doing a lot right now for Hubs, but I am working on my talk on the UX I did for FLOCK. 14:24:14 <abompard> cool 14:24:22 <shillman> I'm not yet sure how much background to offer people for Hubs. 14:24:41 <shillman> It 14:24:47 <shillman> 's complicated! :) 14:24:51 <abompard> sayan, mizmo: do you guys know? 14:25:01 <abompard> or have an opinion 14:25:51 <sayan> background as in? 14:26:18 <shillman> As in... before I go into the UX process we used, how much do people need to know about how Hubs works? Will people already know anything? 14:26:37 <sayan> shillman: you can cover the ideology 14:27:53 <shillman> So... a sentence or two about what Hubs is for? 14:28:36 <sayan> shillman: yes, you refer to mizmo's talk on flock update 14:28:43 <sayan> s/talk/blogpost/ 14:28:46 <shillman> ok 14:28:50 <sayan> shillman: 1 slide should be enough 14:28:57 <sayan> you need to set the context 14:29:07 <shillman> *nodnod* What I figured, but wanted to check. 14:29:42 <abompard> good, thanks sayan. 14:29:43 <shillman> thanks. :) 14:30:05 <abompard> anything else shillman? 14:30:09 <shillman> Nope. :) 14:30:13 <abompard> cool ! 14:30:23 <abompard> sayak: wanna go now? 14:30:29 <sayak> abompard, sure 14:30:57 <sayak> I was going through the widgets this week to try and understand where and how to port them to React 14:31:17 <sayak> However, to say the truth I am still quite unsure about how to go about that. 14:31:24 <sayak> I checked Halp for the same 14:31:57 <sayak> but it seems that even Halp uses a very small portion of the JS script in react to create the view. 14:32:40 * abompard has an opinion on porting the widgets to react, but will wait after the status report 14:32:51 <sayan> ok 14:32:56 <sayak> looking through the templates for the other widgets it seems that they are pretty straightforward html templates 14:33:43 <sayak> however, it doesn't much sense in adding react code to it because the templates are quite atomic by themselves and don't have much complex UI logic anywhere 14:34:04 <sayak> so I am pretty unsure at the moment on how to proceed 14:34:06 <sayak> thoughts? 14:34:11 <abompard> yep :-) 14:34:30 <abompard> So, I agree with you that most widgets are very simple 14:34:48 <abompard> and I think it's a good thing to make it easy for people to write simple widgets 14:35:05 <abompard> there's one area where React would be very useful though 14:35:16 <abompard> it's the plugin *loading* system 14:35:25 <abompard> the code that wraps loading of the plugins 14:35:34 <abompard> make them movable in edit mode 14:35:36 <abompard> and all that 14:35:47 <sayak> aah 14:36:00 <abompard> There again it's not very interactive code, but I think it would be useful to have react there for a reason: 14:36:07 <sayan> abompard: yes, we probably don't move all the widgets then 14:36:12 <abompard> that would be the top of the widget hierarchy 14:36:26 <sayan> but move the ones whose data gets updated 14:36:27 <abompard> so that's were we could set react-specific component like the IntlProvider 14:36:35 <abompard> that handles translation 14:36:53 <abompard> yes, that's also where we could attach the eventsource 14:36:57 <abompard> and trigger reloading 14:37:16 <abompard> we could also have a store there 14:37:17 <sayak> makes sense 14:37:18 <abompard> like Reflux 14:37:37 <abompard> I think that having react at the base of the widgets hierarchy would be pretty useful 14:38:38 <abompard> (I think we currently don't need a store, by the way, because widgets are kinda independant with regards to data, but still it's useful to be able to do it if that changes) 14:39:21 <sayan> abompard: that what I wanted to say we can have them move to react widgets 14:39:26 <abompard> by the way, in what I said above : s/plugin/widgets 14:40:01 <sayan> so the we can update the store, and the changes is handled 14:40:07 <abompard> sayan: well, I think having simple "HTML + 1 view" widgets without react is still useful 14:40:36 <abompard> ah, so the current situation is: if the store changes, the widget is entirely reloaded 14:40:37 <abompard> BUT 14:40:45 <abompard> some widgets can opt-out of that 14:41:05 <abompard> and subscribe to the eventsource and reload only what they need 14:41:10 <abompard> the halp widget does that for example 14:42:13 <abompard> anyway if we go for a full-blown store like Redux, IIRC it's event-based 14:42:36 <abompard> so it's still the same mechanism 14:42:41 <sayan> doesn't redux also follow the same flux principles? 14:43:01 * sayak thinks I need to get more proficient with Python to understand the entire project's workflow 14:43:04 <abompard> simple widgets will have a very generic React wrapper that handle getting the data from the backend, and will susbscrie to the events 14:43:23 <abompard> Yeah Redux is a Flux implementation 14:43:40 <abompard> Big label "If I understood correctly" on everything I said 14:43:44 <abompard> i just read the doc... ;-) 14:43:59 <sayan> abompard: that what I was telling, having a generic React wrapper 14:44:28 <abompard> sayan: Oh OK, but this code would be in the widget loader system, right, not in every widget? 14:44:45 <sayan> abompard: yeah 14:44:49 * abompard thinks we're having the same idea actually ;-) 14:44:57 <sayan> not every widget 14:46:04 <abompard> OK, so : page loads, it loads a React widget loader, pass it or let it get the widget lists, and the loader loads each widget. If it's not native, it wraps it in a react component that will subscribe to events, make it movable in edit mode, etc 14:46:49 <abompard> Hey ! Let's discuss that later, OK? I just realized we're still in the meeting :-) 14:46:55 <sayan> Yeah 14:46:57 <sayan> :) 14:46:59 <sayan> Sure 14:47:09 <sayak> where exactly is the widget loader system written? 14:47:10 <sayan> but this was a needed discussion 14:47:15 <sayak> base.py? 14:47:31 <abompard> sayak: I'd say somewhere in static/client/app/core 14:47:45 <sayan> sayak: if you are looking to learn more abompard wrote a very good tutorial https://docs.pagure.org/fedora-hubs-widget-workshop/index.html 14:48:02 <abompard> oh yeah, feel free to test my tutorial :-D 14:48:21 <sayak> abompard, sayak looks interesting 14:48:33 <sayan> sayak talks to himself :) 14:48:43 <sayak> heheheh 14:48:45 <abompard> yeah sayak, you look interesting. 14:49:03 <sayan> abompard: I read it last night, can you add cache invalidation for a single widget? 14:49:14 <abompard> sayan: yes 14:49:28 <sayak> ok so I got my todo for the week, let me create a new widget to play around a bit more 14:49:37 <sayan> sayak: yeah 14:49:44 <abompard> great 14:49:48 <sayak> sayan, abompard any suggestions on any useful widget ideas? 14:50:05 <abompard> Try the tutorial, it will give you an idea 14:50:21 <sayak> awesome! :D 14:50:23 <abompard> I think the example used is pretty useful itself 14:50:39 <abompard> (at least for Fedora packagers) 14:51:03 <sayan> sayak: there are a couple of widgets to make 14:51:11 <abompard> My dream is to implement the whole Package Review Process in a widget :-) 14:51:37 <sayak> also i'll probably do a refresher on my Python skills, haven't worked with Python in a long long time. 14:51:41 <sayak> sayan, yup? 14:51:56 <sayan> abompard: can you help me with the slides too? I am not able to type much because of the thumb pain :( 14:52:08 <abompard> sayan: Oh sure 14:52:13 <sayak> abompard, that's an ambitious dream! :D 14:52:35 <abompard> sayak: not that much actually. It's doable. 14:52:51 <abompard> sayak: you'll see when you've done the tutorial ;-) 14:53:10 <sayak> abompard, will go through it tonight then! :) 14:53:15 <sayan> sayak: yes, once you are done with the tutorial, you can either build a widget from the issues or work on the react thing we talked 14:53:15 <abompard> cool :) 14:53:27 <abompard> And feel free to ask! 14:53:34 <sayak> sayan, sounds good! 14:53:43 <sayak> abompard, I'll for sure! :) 14:54:16 <abompard> I think it's a good thing that you did not just go ahead and convert widgets to React. Always make sure that you see the point in what you code :-) 14:55:02 <abompard> OK, anything else? 14:55:26 <abompard> #topic Open Floor 14:55:31 <sayan> nothing from my side 14:56:32 <abompard> OK, have a good day, folks! 14:56:37 <abompard> #endmeeting