15:01:19 <Ng> #startmeeting vahana
15:01:20 <openstack> Meeting started Wed Nov 25 15:01:19 2015 UTC and is due to finish in 60 minutes.  The chair is Ng. Information about MeetBot at http://wiki.debian.org/MeetBot.
15:01:21 <openstack> Useful Commands: #action #agreed #help #info #idea #link #topic #startvote.
15:01:24 <openstack> The meeting name has been set to 'vahana'
15:01:55 <jasondotstar> Greetings
15:02:20 <jasondotstar> #topic roll call
15:02:22 <Ng> Sorry, I didn't realise that was going to make me the chair :)
15:02:30 <jasondotstar> hehehe
15:02:33 <jasondotstar> no worries
15:02:34 <jasondotstar> go for it
15:02:45 <Ng> I think, for the purposes of future history, we might start with a quick introduction about what Vahana is?
15:03:09 <Ng> #topic Introduction
15:03:31 <jasondotstar> sure
15:03:38 <Ng> There might still be room for disagreement about what Vahana is, so this probably shouldn't be seen as set in stone :)
15:04:15 <Ng> but we're building an iOS client for OpenStack, in the form of one or more frameworks for interacting with the OS API, and a front end app
15:05:33 <jasondotstar> There was an effort put together back in 2010 to achieve a similar goal, but it never took off as a mature project
15:06:00 <Ng> (and the code hasn't changed for 4 years, making it a bit rough to use with current OpenStack)
15:06:14 <jasondotstar> +1
15:06:23 <Ng> so our intention is to start pretty much over
15:07:11 <Ng> also for the historians of the future, I think jasondotstar is leading this project, unless he objects strongly to that?
15:07:43 <jasondotstar> I don't object.
15:07:50 <Ng> \o/
15:08:34 <jasondotstar> excited to make the attempt to re-ignite what I believe is a valuable companion client for OpenStack Admins
15:08:36 <Ng> jasondotstar: anything else on introduction stuff? or shall we move on?
15:08:47 <jasondotstar> nope, let's keep moving
15:09:11 <Ng> I was thinking we should talk a little about goals for the project and what we want the app to be capable of
15:09:20 <jasondotstar> sure
15:09:22 <Ng> (and how we can test those ideas against what users actually want)
15:09:29 <Ng> #topic Goals and Use Cases
15:09:44 <jasondotstar> this is probably a good time to share the etherpad link?
15:09:51 <Ng> good point!
15:09:57 <Ng> #link https://etherpad.openstack.org/p/openstack-mobile-ios-brainstorm
15:10:29 <Ng> I have to admit that I am more interested in, and motivated by, the underlying framework stuff, than the visuals of the app, but if we're making both, it would seem to be sensible to make an app that is useful and compelling :)
15:11:14 <jasondotstar> agreed. I'm interested in both aspects, but I'm hoping that we get some app designer types to join us
15:11:58 <Ng> we should probably have a long-term action to actively try to involve the UX folk, but it might be a little early for that
15:12:02 <jasondotstar> that way the under-the-hood guys can work on that exclusively.....
15:12:21 <jasondotstar> +1
15:12:45 <Ng> #action someone to loop in UX folk
15:13:20 <jasondotstar> I have a couple of crude attempts to mockup UX but I'd rather see someone else with UX chops tackle that.
15:14:11 <Ng> jasondotstar: what sort of vision do you have for the app itself? a nice interface to all the features of OpenStack, or more of a dashboard kinda thing? (or both)
15:15:51 <jasondotstar> I think the near term goal should be a dashboard view
15:15:55 <jasondotstar> b/c I think that most OpenStack admins would appreciate the ability to get a quick glance of what's going on in their OS deployments
15:15:57 <jasondotstar> then in an iterative way
15:15:59 <jasondotstar> we can add actionable features
15:16:01 <jasondotstar> for each of the components
15:16:03 <jasondotstar> starting w/ nova I'd say.
15:16:14 <Ng> +1
15:16:17 <jasondotstar> launching a VM, rebooting a VM, creating a new VM
15:16:31 <jasondotstar> simple rest API calls
15:16:34 <Ng> #agreed early goal to be a simple dashboard view
15:16:45 <jasondotstar> i dont think console access is somethign we should tackle just yet..
15:17:24 <jasondotstar> eventually we move through the core components
15:17:33 <jasondotstar> adding new networks via neutron
15:17:34 <Ng> That has the potential to explode complexity in a lot of ways, and there are already very very good apps that just do VNC/SSH/etc, so we might want to look at their URL schemes, so we can do Open With... type functionality
15:17:38 <jasondotstar> adding storage, etc. etc.
15:17:50 <jasondotstar> +1
15:18:19 <jasondotstar> +1 on open with...
15:18:20 <Ng> #agreed console access is likely out of scope, when excellent third party apps exist for doing that, and have URL schemes
15:19:32 <jasondotstar> there's also the goal
15:19:48 <jasondotstar> of making the dashboard view skinnable
15:19:51 <Ng> huh, talking of URL schemes makes me think that it might be nice if admins could share their current view with each other, so like you're looking at a problem machine and you can do a standard iOS share sheet to send a URL to your colleagues so they can jump straight to the same thing you're looking at
15:20:39 <jasondotstar> hmmm
15:20:41 <jasondotstar> interesting
15:21:31 <jasondotstar> I like that idea
15:21:43 <Ng> since everything has a UUID, it shouldn't be super hard to make a vahana:// URL scheme that can express a location in an infrastructure
15:21:55 <jasondotstar> +1
15:23:14 <Ng> as for the framework, I think my main goal there is that it grows into something that anyone working on some internal enterprise app, or a public cloud related app, can integrate the framework and easily interact with an OpenStack cloud
15:24:48 <Ng> jasondotstar: I'm not really sure who we should be reaching out to to talk about what operators/tenants would actually like out of an app, so maybe we have an action item there - figure out who to talk to?
15:25:07 <Ng> (I'm thinking someone at the foundation, they probably do the most centralised talking to operators at least)
15:25:52 <Ng> maybe also some of the folk running large and/or public OpenStack instances?
15:26:27 <jasondotstar> yes
15:26:31 <jasondotstar> we should add that as an action item.
15:26:32 <jasondotstar> I think having a list of use cases and/or wish list would be valuable
15:26:35 <jasondotstar> one other thing I wanted to mention: perhaps the project is a set of iOS libraries that we release, as opposed to an actual app
15:26:49 <jasondotstar> Ng:  re: large/public OS instances - yes, something to test against would be good
15:26:53 <Ng> #action someone to figure out who we should talk to about identifying specific use cases
15:27:27 <jasondotstar> I can almost see someone using the libraries to create a *very* niche app
15:27:31 <Ng> jasondotstar: I don't disagree, a single app is likely to be problematic, since many installations of OpenStack differ wildly in their features/versions/etc
15:27:45 <jasondotstar> right....
15:28:35 <jasondotstar> we should look at considering the project as a collection of libraries and/or frameworks
15:28:50 <Ng> #action someone to start talking to large/public OpenStack installs for testing and use-case-gathering
15:28:54 <jasondotstar> that might be more palpable to those who are simply going to take what we have and create something of their own
15:29:17 <Ng> +1
15:30:06 <Ng> a framework of reusable UIView subclasses that use the API framework seems like it would be super useful
15:30:31 <jasondotstar> right
15:30:35 <Ng> anything else on goals and use cases?
15:30:48 <jasondotstar> nope, great start I think.
15:31:47 <Ng> jasondotstar: any particular topic you'd like to do next?
15:32:33 <jasondotstar> let's see, we had a couple of questions on the etherpa
15:32:39 <jasondotstar> *etherpad
15:32:52 <jasondotstar> like how early should we start creating blueprints, specs, etc.
15:33:13 <jasondotstar> are we basically whiteboarding this out on etherpad until we nail down what direction we're taking
15:34:01 <Ng> I think we're still at a whiteboarding stage, yes. I feel like I have a bunch more R&D to do on some core classes and project infrastructure before I'm ready to start proposing solid plans for work
15:34:04 <jasondotstar> or should we start with the end in mind as far as getting as much documented as we can
15:34:22 <jasondotstar> +1
15:34:23 <jasondotstar> tjat
15:34:35 <jasondotstar> *that's my feeling as well.
15:34:43 <Ng> #agreed we're still at whiteboarding/R&D stage, too early for blueprints/specs
15:35:21 <jasondotstar> the R&D we're currently doing....
15:35:38 <Ng> #topic Current R&D
15:35:51 <jasondotstar> we're both working using Swift as the pref. lang?
15:36:00 <Ng> yep
15:36:23 <Ng> I've been working on figuring out a sane way to have a core REST client class that I think most of the API framework will inherit from
15:36:29 <Ng> currently using AlamoFire
15:36:44 <Ng> my next intention is to figure out using GYP to generate .xcodeproj files
15:37:17 <Ng> but there are so many fundamental tech decisions that we need to make :/
15:37:23 <jasondotstar> yep
15:37:39 <jasondotstar> perhaps we start with evaluations
15:37:47 <jasondotstar> of different ways of delivering this work
15:37:59 <Ng> the big one I have at the moment is how to handle the results of the asynchronous REST operations - the options being delegates, blocks, KVO or NSNotificationCenter
15:38:24 <Ng> I'm currently running with blocks for no particularly good reason
15:40:24 <Ng> I think I want to have some NSNotificationCenter stuff too, so the API framework can emit things like "I have successfully authenticated", for apps to react to
15:40:28 <jasondotstar> KVO or observation is like the listener pattern
15:41:38 <jasondotstar> +1 re: NSNotificationCenter
15:41:56 <Ng> #agreed API framework should send NSNotifications of important/relevant events
15:42:46 <Ng> blocks feel like the more "modern Apple" way of doing it, but the modern hispter way would be to use ReactiveCocoa ;)
15:43:09 <jasondotstar> hehehe
15:44:11 <jasondotstar> so is it worth it for us to evaluate a couple different ways to 'do things'
15:44:19 <jasondotstar> perhaps present the pros/cons
15:44:32 <jasondotstar> then agree on which way is best
15:44:50 <jasondotstar> sorta like how you arrived at using AlamoFire vs. NSHTTP
15:45:11 <Ng> I don't think that would be a bad idea, but I'm not sure we'll know which is best until we get much higher up the stack and discover that <foo> turns out to be painful
15:45:50 <jasondotstar> +1
15:46:56 <Ng> I think the delegate pattern is probably unsuitable long-term, because you're going to end up with the same sort of mess that happens with UITableViewDelegate/DataSource, where each delegate method first has to figure out which of 18 different operations are being sent to it
15:47:13 <jasondotstar> YES
15:47:39 <Ng> and OpenStack has a *lot* more operations than UITableView ;)
15:49:04 <Ng> jasondotstar: anything else on R&D progress?
15:49:04 <jasondotstar> what are you testing against, btw?
15:49:14 <Ng> devstack
15:49:22 <jasondotstar> ok that's cool.
15:49:36 <jasondotstar> same here.
15:49:38 <Ng> but at this stage I could honestly be testing against any URL that emits JSON ;)
15:49:47 <jasondotstar> that's true
15:50:06 <jasondotstar> ok that's it on R&D
15:50:32 <jasondotstar> I think we can open the floor for general q&a
15:50:38 <Ng> #topic Q&A
15:50:41 <jasondotstar> we've got about 10mins left
15:51:08 <Ng> how are you finding Swift? :)
15:51:24 <jasondotstar> I like it. it's very javascript like
15:51:28 <Ng> I feel like I'm understanding more than half of the code that I'm writing, but by no means all
15:51:31 <jasondotstar> but here's the thing
15:51:36 <jasondotstar> I dont really like js.
15:52:04 <jasondotstar> syntactically it's better than OBJ-c
15:52:33 <Ng> there's certainly a lot more native syntax to deal with
15:53:40 <jasondotstar> yeah
15:53:57 <jasondotstar> I do enjoy the playground
15:54:13 <Ng> yes
15:54:21 <jasondotstar> having a place to simply run code w/o building an app
15:54:24 <Ng> did you discover the trick for having a playground run indefinitely, for async stuff?
15:54:29 <jasondotstar> is helpful
15:54:43 <jasondotstar> no..... plz share that one
15:55:12 <Ng> import XCPlayground
15:55:12 <Ng> XCPlaygroundPage.currentPage.needsIndefiniteExecution = true
15:56:14 <jasondotstar> ok
15:56:21 <jasondotstar> nice!
15:58:06 <jasondotstar> I'll give that a shot
15:58:21 <Ng> :)
15:58:34 <Ng> I don't think I have anything else for today
15:58:37 <jasondotstar> well, I think that's it for our first meeting.
15:58:41 <Ng> \o/
15:58:45 <Ng> #endmeeting