18:01:49 #startmeeting keystone 18:01:50 Meeting started Tue Dec 17 18:01:49 2013 UTC and is due to finish in 60 minutes. The chair is dolphm. Information about MeetBot at http://wiki.debian.org/MeetBot. 18:01:51 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 18:01:55 The meeting name has been set to 'keystone' 18:01:59 #topic Reminder: Hackathon January 15-17th @ Rackspace in San Antonio, TX 18:02:17 feel free to book flights :) sounds like a couple have already been done 18:02:23 ooh, on vacation starting next week. (read: snowboarding trip!) 18:02:31 i'm curious if anyone has gotten a hotel in SA yet 18:02:43 morganfainberg: be careful! :P 18:02:46 dolphm, fly in the night before make the most sense? 18:02:47 dolphm, I'll know my status by end of the week 18:02:59 dolphm: i have not, but i'm planning on just staying at the courtyard 18:03:19 topol: that's what i would do personally 18:03:20 Yeah there was one hotel walking distance to the office that seemed to make sense 18:03:22 dolphm, stevemar and I are a GO! Contingent on you giving us a personal tour of the Alamo 18:03:38 dolphm, we will come in the night before 18:03:42 topol: i shall personally point you to it on a map 18:03:43 i have not booked hotel, but courtyard seems like the best choice 18:04:14 valencia is damned nice and downtown if you're into that, courtyard has free transport 18:04:20 so, pick your poison 18:04:21 can we all pick the same hotel? Are we going with the courtyard? 18:04:49 dolphm, i'm leaning towards free transport since i'm still wokring on details to see if i am paying for this out of my own pocket 18:04:50 topol: courtyard is definitely the easier & slightly cheaper option 18:05:13 dolphm, so les $ is my goal. 18:05:15 morganfainberg I'll have a car 18:05:20 cheaper is good 18:05:21 i would be up for either - the only thing i don't like about the Valencia is that i'll need a car and you have to valet it 18:05:26 #link https://gist.github.com/dolph/5cfa70c02f5b141060c5 18:05:30 dstanek, ++ 18:05:47 Let's agree on courtyard 18:06:20 topol, sounds good to me. 18:06:23 i'll be booking my travel tonight 18:06:35 topol: noted on the gist 18:07:00 any international guests? henrynash or jamielennox ? 18:07:03 if anyone has trouble booking at the discounted rate, chase me down 18:07:08 dolphm, excellent 18:07:16 i'm told there's not a group code, and that you have to call 18:07:16 stevemar: a little hard to justify for a hackathon 18:07:33 any reason not to take the Pear Tree hotel? Easy walk to the office 18:07:50 $80 / night 18:07:51 jamielennox: frankly i wouldn't make the trip unless you're planning on staying longer than 3 days lol 18:07:54 jamielennox, you know you want to hop on a ~19hr flight :P 18:08:00 for 3 days 18:08:03 ayoung: i'm not familiar with it 18:08:31 https://plus.google.com/104227517689615970183/about?gl=us&hl=en 18:08:48 dolphm:, morganfainberg: would end up just sleeping through the whole thing 18:09:19 jamielennox, i hear ya man. 18:09:20 0.5 mi, 9 mins 18:09:20 Interstate 35 Frontage Rd/NE 18:09:44 ayoung, either that or the shuttle from the courtyard, both seem reasonable and in the same-class of price 18:09:47 for the most part 18:09:59 dolphm: it's next to the red lobster 18:10:16 by the home depot 18:10:16 I hate waiting on shuttles. We're coders...and I won;t have the kids to keep me on a regular schedule 18:10:42 what's Shoney's? 18:11:01 So we won't go hungry 18:11:07 ayoung: as i understand it, the shuttles have a regular schedule (they run 3 times a day each way) you just need to give the front desk a heads up that you'd like to be on it 18:11:16 bknudson: a chain diner 18:11:24 Marie Callendars 18:11:46 there's food within walking distance of rax, and we have vendors in house every day 18:11:59 topol and i should have rentals - i think? 18:12:10 yes we will!!! 18:12:11 we could car pool 18:12:31 works for me 18:12:37 Is there any reason not to go to the PearTree? 18:13:05 Im fine with either. I need to check what options pop up in our hotel reservation tool. will do that now 18:13:20 ayoung, i think it is all personal preferance at this point 18:13:22 It would be good to all be at the same hotel 18:13:30 makes Logisitics easier 18:13:35 topol, nothing pops up :( 18:14:08 ayoung, nod 18:14:43 Link to the Courtyard? 18:14:47 mordred road. that's weird. 18:15:08 ayoung: i have heard that it's not a great hotel 18:15:22 whats rackspace's address 18:15:32 Rackspace Hosting, 1 Fanatical Place, Windcrest 18:15:43 topol ^ 18:15:54 postal code 78218 18:16:02 "1803 E Sonterra Blvd, San Antonio, TX 78259" That Courtyard? 18:16:16 stevemar: or 5000 Walzem Rd. (Fanatical Place was just built & named) 18:16:26 ayoung: definitely not 18:16:44 ayoung: that's near my house though lol 18:16:52 ayoung: http://www.marriott.com/hotels/travel/satca-courtyard-san-antonio-airport/ 18:16:52 so I could get a ride in 18:17:01 ayoung: 8615 Broadway Street San Antonio Texas 78217 USA 18:17:09 ayoung: there's a damn good coffee shop right there... 18:17:19 http://www.marriott.com/hotels/travel/satca-courtyard-san-antonio-airport/ 18:17:27 ayoung: (on Sonterra Blvd) 18:17:31 After the Summit I am sick of Airports.... 18:17:40 stevemar, we can get an exception 18:17:41 Never even made it past Kowloon 18:17:53 ayoung: lol 18:18:05 Is the courtyard the Hotel of choice then? That alone is reason to book it 18:18:17 99$ courtyard is within budget 18:18:18 ayoung: sounds like it 18:18:24 topol, i figured that, just never had the need to 18:18:27 ayoung: there are a couple definites for courtyard 18:19:07 #topic Next Keystone meeting: January 7th 18:19:11 6.2 mi, 2 hours 5 mins 18:19:12 NE Interstate 410 Loop That estimate seems long 18:19:30 ah, still set for walking 18:19:36 anyone is welcome to use this time slot and have a meeting if you want, but i'll be AFK for most of the next two weeks 18:19:38 Any hotels with a bedbug special??? 18:19:47 ayoung: walking is slow in texas 18:19:57 Biking route looks cool, 18:20:28 7.8 ,moiles, 48 minutes, WTF? 18:21:04 it's hot there and people move slowly 18:21:08 bknudson: ++ 18:21:09 Do they estimate based on a tricycle? 18:21:12 cars ftw 18:21:20 My experience in TExas in January was that it is not hot....very not hot. 18:21:33 yeah, it'll be really nice 18:21:48 dolphm, s/cars/cats 18:21:57 in the 55-70 F range at the moment 18:22:09 morganfainberg: lol 18:22:34 * ayoung watches the snow fall outside 18:22:38 k, let's move on to actually important things 18:22:44 it's almost marekd's bed time 18:22:48 stevemar, courtyard at the airport has an IBM negotiated rate. Is thatw here everyone is staying? 18:22:49 #topic Leveraging mod_shib / mod_mellon to handle interaction with federated identity providers 18:22:51 marekd: o/ 18:22:56 dolphm: \o 18:23:02 still awake 18:23:04 topol: yes 18:23:04 mod_auth_mellon...I'll find the linlk 18:23:22 #link https://code.google.com/p/modmellon/ 18:24:18 anyone tried it out yet? I know people in our IdM team have, but not me myself. 18:24:28 me, but not mod_mellon. 18:24:31 mod_shib. 18:24:32 ayoung, i haven't had a chance to yet. 18:24:39 ayoung, marekd tried it out: https://gist.github.com/zaccone/914822d37ac2eea420ce 18:24:43 mod_mellon seems to be pretty well packaged (debian, centos, rhel) 18:24:55 we get a whole whack of stuff back 18:25:08 to use saml you need to run in apache? 18:25:22 yes. 18:25:33 #link reference http://www.explainxkcd.com/wiki/index.php/1218:_Doors_of_Durin 18:25:34 bknudson: ++ 18:25:44 another this is: is relies on static config files 18:25:57 mod_mellon for 100% - asked on their mailing list. 18:26:05 (completely reasonable) 18:26:21 bknudson: i'd rather not re-invent the wheel in the next few weeks, but we could implement the same in middleware eventually 18:26:28 dolphm: ++ 18:26:43 marekd: mod_mellon relies on static config? 18:27:00 dolphm: yes. 18:27:11 marekd: does that imply that mod_shib doesn't? 18:27:35 dolphm: mod_shib uses files too... 18:27:51 i just said i am 100% about mod_mellon, because I asked it's authors. 18:28:07 I assume that keystone is going to have to support more than just REMOTE_USER then? 18:28:13 however i have never seen any plugin for mod_shib + SQL/something. 18:28:15 mod_mellon is GNU GPL v2 18:28:38 bknudson: ++, the federation middleware will have to read headers from the apache module 18:28:48 bknudson, they should come through as additional env vars 18:28:50 bknudson: see stevemar's link to marekd's example 18:28:58 bknudson: modules would do the job. 18:29:11 bknudson: keystone would get set of parsed attributes. 18:29:44 which is great, as I personally find SAML not very 'clean' atribute and would rather not write soft for parsing those all XMLs :-) 18:29:54 GNU GPL v2. Isnt that like buying a hot rolex? A big no no? 18:30:10 topol: why? 18:30:14 is it the ADFS_* attrs are the assertions? 18:30:18 yes 18:30:24 bknudson: ^ 18:30:44 topol: considering the nature of our dependency on it, i don't know how much we need to care? worth asking the list 18:30:45 bknudson: ++ 18:30:55 and as a matter of fact YOU configure in the mod_ how to make a initial mapping. 18:31:13 #link https://gist.github.com/zaccone/021203cab26c9e4b0baf 18:31:23 here is the code, that produced the output for my SP 18:31:27 (mod_shib) 18:31:38 but mod_mellon would work pretty much the same way. 18:31:38 reference link http://www.freeipa.org/page/Environment_Variables 18:31:41 topol: i'm looking for the license to mod_shib... can't find much 18:31:59 SAML not yet made it in there, though 18:32:03 topol, I think it is complicated to re-package that code, you need to use the same licensing model 18:32:47 http://code.google.com/p/modmellon/wiki/GenericSetup#Retrieving_attributes_from_mod_mellon 18:33:01 fabiog exactly 18:33:12 fabiog: i believe it's okay for us to support it, as long as we don't have a hard dependency on it 18:33:33 anyway, using mod_* implies static configuration. dolph said it should be generated manually, one day we could add some code -> keystone would generate config based on the data stored in it's backend. 18:33:43 dolphm, we need to be careful, because even re-distributing it could be an issue outside GPL 18:33:52 fabiog: +++ 18:34:10 fabiog exactly +++ 18:34:20 why can't everyone use ASLv2 these days 18:34:35 so keystone would provide a way to map ADFS_* to roles? 18:34:41 morganfainberg, preaching to the choir! 18:34:42 yes, mapping. 18:34:47 and that's going to be some middleware? 18:34:48 bknudson: ^^ 18:34:54 is the config in a config file or in keystone db? 18:34:55 ASL? American Sign Language? Didn';t realize there was an updated version 18:34:56 morganfainberg, I think MIT License is also goo 18:34:58 good 18:35:08 bknudson: what config? 18:35:09 fabiog, prefer apache myself 18:35:16 ayoung, out in left field again :-) 18:35:32 or do we have something that translates ADFS_* to some keystone structure 18:35:46 fabiog, we must have the same lawyers :-) 18:35:50 bknudson: mapping attributes, completely internal stuff, right stevemar ? 18:35:51 bknudson: config for mod_mellon / mod_shib should be deployer-handled in icehouse 18:35:53 Are we OK with mod_mellon as a starting point? Not a hard dep, but a way to get things moving? Put it to avote? 18:36:02 dolphm: ++ 18:36:04 topol, in reality lawyers are all the same ;-) 18:36:22 bknudson: config for how keystone handles assertions is basically in SQL for us, as we're exposing it to the API 18:36:55 ayoung: i'd like to answer that today, but can you find a license for mod_shib ? 18:37:22 I'm fine going with an apache/external auth method. 18:37:33 dolphm, I think you should ask if any concerns on the dev list or the OpenStack gods 18:37:35 is there a pros/cons for mellon vs shib? i've at least heard of mellon and i'm pretty sure it's packaged 18:37:36 dolphm: one thing, not sure if it's relevant: mod_mellon is a pure apache module 18:37:40 topol: ++ 18:37:53 jamielennox: it's packaged 18:37:57 looks like it will be a lot of work to reimplement all that ourselves. 18:38:16 dolphm, I can., but I think we've found mellon is much more in line with what we are looking for. Let me see 18:38:22 dolphm: whereas shibboleth works slightly different: there is a standalone daemon, that does it's work, accessible on unix sockets or tcp, mod_shib actually is a frontend and communicates with shibd daemon 18:38:27 i think the external approach is good, one mod vs the other is just selecting the better i think 18:38:28 ayoung: good to hear 18:38:32 bknudson: ++ 18:38:42 dolphm: on the other hand, i didn't find info about protocol for communicating between peers.... 18:39:01 http://en.wikipedia.org/wiki/Shibboleth_%28Internet2%29#Development 18:39:40 guys, how determined are you to decide today? 18:39:42 since there's potentially multiple providers, I think it makes sense to translate whatever they give us (ADFS_* attrs or whatever) to a keystone structure that keystone uses. 18:40:02 ayoung, yay that one is Apache 2 License 18:40:06 marekd: i'd like to know about blockers on one other the other today 18:40:26 so it's GPL w/ easy deployments vs Apache 2 w/ complicated deployment 18:40:46 dolphm: IdP discovery. i am not sure it's stararized and whether both modules will work in the same way... 18:41:05 https://wiki.shibboleth.net/confluence/display/SHIB2/IdPDiscovery 18:41:17 this is for shibboleth (grep for From a Known Home) 18:41:36 however i couldn't make it work or my shib :P 18:41:44 lol 18:41:45 bknudson: ++ keep the provider specific interface to a minimum 18:42:04 marekd that joke went over my head 18:42:12 The Shibboleth License, Version 1. 18:42:13 * Copyright (c) 2002 18:42:13 * University Corporation for Advanced Internet Development, Inc. 18:42:13 * All rights reserved 18:42:19 topol: hm? 18:42:46 bknudson: sure, and you could probably abstract away the difference between _shib and _mellon eventually 18:42:57 ayoung: wtf lol 18:43:08 dolphm, looking for a short link 18:43:15 but that was dated 2002 18:43:18 MIT cached version 18:43:29 th other thing i am worried veryy much is the client side. 18:43:45 wherever you google for SAML the use-case is a browser one. 18:44:05 'a client uses his WEB BROWSER and logs in' 18:44:11 we're not going to have a library for python-keystoneclient to use? 18:44:34 bknudson: keystoneclient will be a big part in federation authn 18:44:48 https://developers.google.com/google-apps/sso/saml_workflow_vertical.gif 18:45:03 bknudson: if that was your question :P 18:45:03 bknudson: keystoneclient can't pretend to know how to auth with all existing IdP's though 18:45:04 https://github.com/sonian/shibboleth-sp2/blob/master/apache/mod_shib_20.cpp 18:45:49 keystone isn't going to provide saml assertions, only accept them 18:45:57 bknudson: correct. 18:46:00 bknudson: correct 18:46:13 marekd: what are you expecting the client to have to do extra? 18:46:15 that's like step 8 of https://developers.google.com/google-apps/sso/saml_workflow_vertical.gif 18:46:32 oh right, i know what you mean 18:46:32 it's like you need a token from idp to get a token form keystone 18:46:40 jamielennox: keep the session, handle HTTP redirects. 18:46:47 jamielennox: that's for sure. 18:46:49 bknudson: ++ 18:47:04 bknudson: that's exactly how it works (SAML being the token) 18:47:28 dolphm: to me SAML likes like a web-browser only protocol, seriously :( 18:47:29 so we're using the standard SAML workflow instead of the EC or Proxy method? 18:47:29 marekd: session and redirects are fine, i'm not sure if we can handle pointing keystoneclient at any random idp provider though 18:47:35 the client need to get the "encoded SAML response" (step 6) and send it to keystone server 18:47:44 simply because EC / Proxy doesn't require redirects 18:47:45 So..before we run out of time...I'd like to suggest we discuss https://blueprints.launchpad.net/python-keystoneclient/+spec/endpoint-versioning 18:47:48 morganfainberg: ooh, what are the other two methods... 18:47:52 jamielennox: willing to talk after the meeting? 18:47:57 marekd: sure 18:48:14 dolphm, Enhanced client and proxy. but the details i've drummed up are light so far 18:48:16 let me see if i can find that diagram 18:48:16 jamielennox: maybe if we had idp plugins in the client ? 18:48:16 actually auth plugins will fix a lot of this anyway 18:48:29 ayoung: we've talked about that elsewhere, extensively 18:48:48 morganfainberg: SP and IdP doen't require direct communication, it's client who transport requests/responses. 18:49:04 marekd, ah. i see. 18:49:28 dolphm, then it is OK if I go ahead an implement> 18:49:30 ? 18:49:36 morganfainberg: that's why keystoneclient will play a big role gere. 18:49:42 s/gere/here 18:49:44 marekd, that is standard, i think it's doable with EC or proxy though where SP -> idp is in direct communication 18:50:01 marekd, like i said, the info on EC / Proxy methods with saml seemed very light 18:50:11 morganfainberg: standard direct communication between SP<->IdP? 18:50:15 so might not be really usable. 18:50:17 marekd, direct communication will be needed for artifact profile 18:50:28 ayoung: no 18:50:41 atiwari: can you say more? 18:50:43 when SP wants to pull the SAML from IdP 18:50:51 ayoung: absolutely not -- all the prior art and design direction directly conflicts with everything this blueprint describes 18:50:56 dolphm, nope 18:51:04 marekd, http://appliedlife.blogspot.com/2007/06/saml-enhanced-client-or-proxy.html 18:51:04 ayoung: search on the mailing list for discovery 18:51:15 dolphm, so long as we don;t lock ourselves into requiring version, we should be OK 18:51:22 dolphm, without it, we are stuck on v2 18:51:26 In the SAML artifact profile, artifact will not be provided to SP initially 18:51:41 atiwari: any links, docs for that? I never heard of that. 18:51:42 artifact +> assertion 18:51:55 dolphm, people are writing scripts etc and its all based around the current endpoints coming back from the Service Catalog 18:52:18 ayoung: which is a terribly broken approach that we need to rectify and not further 18:52:28 we just need to A) work around it until the v2 is deprecated B) do discovery, and C) stop telling people to put versions on their endpoints 18:52:35 ayoung: IMO all the client libs should be able to do version negotiation via an unversioned endpoint 18:52:40 ayoung: the reason everyone else is writing broken code is because we've failed to set the example 18:52:41 but we need the workaround 18:52:47 shardy: ++ 18:52:52 shardy, eys, but people can't change the endpoints that are in the SC 18:52:55 marekd, link: http://en.wikipedia.org/wiki/SAML_2.0#HTTP_Artifact_Binding but it is for the future 18:52:57 I agree with all of this 18:52:57 ayoung: this is not a matter of deprecating v2 18:53:05 but still insist that we need a wrokaround or we are stuck 18:53:05 may be we can avoid it for now 18:53:21 marekd, dolphm, though it looks like ECP might preclude using the apache mod 18:53:23 wreakaround? 18:53:28 reakhavocaround 18:53:52 so identity providers have a standard for authenticating? (SAML SOAP binding?) 18:53:54 anyway, we need to assume that endpoints come back saying V2.0 at the end, or old clients are going to break 18:53:55 dolphm, less than 10 min left ... 18:54:10 can we just be pragmatic here, so long as we avoid the pitfalls of the past? 18:54:23 from http://3.bp.blogspot.com/_Hu8FwD79TOo/RoK5RmNAebI/AAAAAAAAAA4/trnodJ9iZ9s/s1600-h/ecp-diagram.jpg 18:54:34 ayoung: you're proposing we regurgitate all the pitfalls of the past 18:54:34 morganfainberg: to be honest, the more i read about saml, the more i ask aroung, the more i am convinced everybody has his standard :( 18:54:49 fabiog: not sure we're going to have time to discuss notifications, other than direct people to it 18:55:04 bknudson: i dont see direct arrows between SP & IdP. 18:55:32 marekd, the arrow crosses the SP, SP is the Proxy via SOAP bindings 18:55:34 fabiog: i like the idea - not every extension can be implemented purely in a pipeline 18:55:38 bknudson: SP never talks to IdP directly 18:55:39 and directs the request to the known IdP 18:55:40 bknudson: afaik 18:55:46 dolphm: ++ 18:55:46 in that diagram 18:56:13 well, ECP being the "smart" proxy 18:56:13 dolph, "SP never talks to IdP directly" is not correct 18:56:21 jamielennox: and currently the data is not in sync if there are any dependencies 18:56:29 atiwari: feel free to correct me with an example 18:56:32 morganfainberg: directs the requests mean directs the client to go there, right? 18:56:38 fabiog: there are a bunch of extensions that i think will need to simply run and that shouldn't have a middleware component - is this how the other projects do it though? 18:56:46 marekd, as far as i can tell, yes 18:56:47 nova must have this problem 18:56:51 but yes not in post profile , it is correct 18:56:53 morganfainberg: because i was referring to a direct TCP connection between IdP and SP 18:56:55 http://docs.oasis-open.org/security/saml/v2.0/saml-profiles-2.0-os.pdf 4.2.1 18:56:56 dolphm, no, I am proposing we ignore the versions on the URLs 18:57:09 morganfainberg: and then i say : never heard about that (TCP conns) 18:57:14 erm 4.2 18:57:28 ayoung: i got that much; don't do that 18:57:34 we need to do at least that in order to get v2 and v3 interop 18:57:40 dolphm, we have to. 18:57:44 jamielennox: this is only for registered Keystone extensions, if you want a generic notification you can re-use the rabbitmq model 18:57:44 marekd, i think this is super complex :P 18:57:52 This is the corner we;ve been painted into 18:58:09 versions in the URLS are stupid, I agree 18:58:23 jamielennox: but for the extensions that are interested only in Keystone this will be very efficient and simple (I think) 18:58:24 fabiog: yea i get that, i was just thinking that nova v3 is based around an extensions model and they must be doing notification like this 18:58:29 is PAOS the opposite of SOAP? 18:58:29 and this is not something we can be a purist about, or we will not be able to get rid of them 18:58:29 morganfainberg: i think this is overkill, seriously. i think i must check whether mod_shib, mod_mellon has ECP implemented. 18:58:35 bknudson: yes. 18:58:40 bknudson: whatever it means... 18:58:46 ayoung: we put ourselves here; version discovery in the clients will push deployers to revise their catalogs 18:58:46 bknudson, lol 18:58:52 bknudson, i never noticed that. 18:58:59 morganfainberg: he is right :) 18:59:04 marekd, i know. 18:59:07 ayoung: have you seen the crap nova and cinder are doing? that's our fault too 18:59:07 dolphm, Ifd we tell people to change the endpoints in their service catalog to either drop the version or have v3, it will break all of the v2 clients out there 18:59:12 jamielennox: since I have extended the Oslo notification model, I believe it should be available to all the Openstack modules 18:59:14 it makes sense, but i just... never connected it 18:59:29 so discovery solves it in the future, but it doens't get the car out of the ditch 18:59:30 dolphm, link:http://en.wikipedia.org/wiki/SAML_2.0#HTTP_Artifact_Binding has good desc of artifact binding 18:59:51 ayoung: can you just start accepting a version via HTTP headers and have the server redirect in the case where a version is in the url and a different one is requested? 19:00:07 fabiog: ah, ok, that's fine, i agree with the approach was just interested to know if you were re-using the concept from other projects or if we were going out on our own here 19:00:19 ayoung: understood, but let's write the tools to make the problem non-existant rather than advocating a hacky approach that we've demonstrated is garbage 19:00:20 dstanek, avoid using the word 'just' cuz no solution here is going to be neat or easy 19:00:24 marekd, i wasn't saying ECP was required, just wanted to ask if we were looking at it vs the "browser" style SAML ("traditional web SSO") model) 19:00:40 morganfainberg: ah, ok. 19:00:42 ayoung: s/just // 19:00:48 jamielennox: no not reinventing the weel, just connecting it to the rods ;-) 19:01:00 marekd, and the reasoning is it _could_ support CLi nicely 19:01:00 did nova / cinder ever ask us if they should have new service for different versions? 19:01:05 marekd, but that is all speculation 19:01:07 dolphm, the problem is the old tools 19:01:09 not new 19:01:14 time people 19:01:18 time is up 19:01:19 we go to great lengths to avoid breaking old clients 19:01:20 jamielennox: ah, thanks 19:01:28 #endmeeting