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