====== IRC Devel Meeting - 2012-01-31 ====== Date: * **15:00 UTC, Tuesday, January 31, 2012** Utilities: * [[http://www.timeanddate.com/worldclock/converter.html|Time Converter]] * IRC webchat: http://webchat.freenode.net/ * IRC client apps: http://en.wikipedia.org/wiki/Internet_Relay_Chat#Clients Place: * **#sip-router** IRC channel on **irc.freenode.net** server ===== Agenda ===== Kamailio related: * (dcm) outstanding issues at this time, if any * (dcm) packaging - ways to automate the process better * (dcm) documentation - suggestions to improve it and attract more contributions in this field * (dcm) 'librarization' of presence modules - is there duplicated code that fit in an internal lib? * (dcm) merging duplicated K|S modules * (dcm) unique ids for user profiles * (JP & RG) IMS branch and related modules * (dcm) kamailio 3.3.0 - roadmap to next major release * (dcm) ideas for new features * (dcm) administration - web site, mailing lists, etc ... do we miss some good resource out there that should be added in the eco-system? ===== Participants ===== Following developers and community members announced intention to participate (add yourself, alphabetic order, especially if you add items in the agenda): * Daniel-Constantin Mierla (dcm) * Elena-Ramona Modroiu (erm) * Jason Penton * Richard Good Note that participation is open to anyone, just join the IRC channel if you want to participate. ===== Transcripts of Discussed Topics ===== This is pretty much the unedited IRC discussion, split by topics. ==== Existing Issues ==== miconda: anyone here to report any outstanding issue (code, administration, etc.) that needs to be fixed? richardgood: nothing to report here. miconda: ok if none is quick with something ... think about and eventually say during this session ==== Packaging ==== miconda: second: packaging miconda: we have debs and rpms miconda: debs provided at deb.kamailio.org are fine for nightly builds jasonpenton: maybe an option for Solaris packages - but I'm not too sure of the demand? miconda: but the release builds need some manual triggering, as I understood from Jon Bonilla miconda: and they stay sometimes long time behind miconda: for that reason I made an OpenSUSE Build Service that can be triggered via web miconda: I will post some details later osas: is there a real need for nightly pkg builds? miconda: rpms should be fine for now on OBS (OpenSUSE Build Service) - rpms for centos, redhat, fedora and opensuse are generated miconda: osas: yes, they are very useful to get fixes from stable branches miconda: agranig: thanks, but I was looking for a solution when many people can get access osas: besides for checking that the build is susscessfull, I don't see a real presure in having nightly builds for all platforms miconda: not for all platforms miconda: but actually the problem is not nightly builds miconda: they are done automatically miconda: just release builds agranig: miconda: sure... just as a side note: we're using jenkins to build our internal debs and generate release repos, maybe this should be considered for kamailio as well? miconda: which have to be done manually, since the releases happen sporadically agranig: i can provide some input on that if we want to go that path miconda: jenkins is a service or tool? agranig: it's a tool... a continuous integration server, which can be hooked up with a git repo, which than triggers deb builds either immediately upon commit, or on nightly intervals, or when you prepare a release miconda: at this moment the debs are generated on a server that would require user access to trigger release builds miconda: and it is hard to keep adding users to be sure someone is going to be available to trigger miconda: OBS does everything over web miconda: or a client installed on own system miconda: so it is convenient to allow "any" people to manage the repository and revoke later if not trusted agranig: ok... with jenkins, you'd have a web interface where you control it (and a jabber interface etc)... it's quite powerful in that regards... you'd still have to maintain users though miconda: I am not saying is the best way, that;s why I wanted to see if there are other options miconda: ok then, let's see if we can get something with jenkins or obs in regards to debs for releases ... miconda: jasonpenton: solaris would be nice miconda: if someone can take care of miconda: I am not a solaris user at all jasonpenton: look - we will be doing it for ourselves anyway - so we will take it on miconda: great, thanks! jasonpenton: but can't commit a time yet! miconda: no problem! agranig: there are couple of tools to maintain repos automatically, we can talk at fosdem about the details miconda: *BSD specs are probably old as well ... miconda: gentoo got quite up to date miconda: agranig: ok miconda: so, to finish this topic miconda: if you know tools to automatize building packages for any distro or want to maintain packaging for some distro, write to sr-dev mailing list ==== Documentation ==== miconda: next topic: documentation ... miconda: I saw lot of good info going though mailing lists, but nobody is digesting in some wiki pages or faqs ... miconda: anyone has ideas of how to attract doc writers?!?! osas: It should be the responsability of the one who get's help to update the wiki miconda: yes, but cannot be enforced osas: and the pone that provides help should remind the one that gets helped to update the wiki osas: it cannot, but if someone is reminded to do so, it will (most of the time) jasonpenton: users will never update/contribute to docs miconda: so we need to engage their willingness somehow jasonpenton: it will be up to devs only IMO osas: no osas: devs have a different POV osas: I cannot see things like a beginner osas: and therefor I cannot update docs from a beginner POV osas: I think that's the issue jasonpenton: true - but users are typically consumers of info and never interested in producing osas: from my POV, the docs are quite good osas: Than you get hellped onces, and that's it miconda: ok, so kind of bonus program ... jasonpenton: lol - that;s a good idea - provide doc for free consulting miconda: you got answers and no updates to docs, then you are delayed osas: I think a friendly reminder by everyone who provides help shold give the docs a boost miconda: osas: yes, that should be done, added as a signature miconda: jasonpenton: could be something like audio conference agranig: just curious... where would you even add interesting junks from the mailing list, e.g. config snippets for specific use cases? osas: and a friendly monthly e-mail about it jasonpenton: agranig: wiki jasonpenton: ? agranig: yeah, but where? miconda: aswering questions to participants and they have to write docs based on answers jasonpenton: what about the responders to good email questions: create a wiki page and the user needs to update on experienceand succuess, etc? miconda: maybe 1-2 sessions a month agranig: like in http://www.kamailio.org/wiki/start#tutorials or where? jasonpenton: and all follow up questions miconda: jasonpenton: sometimes I answer from a mobile or in a hurry, creating a wiki is not always easy... miconda: agraning: yes, that is a place, other can be created, like FAQ page miconda: ok, other ideas? If not, we will digest this discussion and go to mailing list for follow up agranig: handing off good questions to the wiki sounds interesting, but the usability is questionable... you don't get to know if/when the OP is providing infos there etc miconda: agraning: first is to get something, then we can review and clean up miconda: but how to get some writers... agranig: maybe a Q/A portal similar to stackoverflow could help, but then again you could just stick with the mailinglist... qxork: I was thinking about this hard based on the mail yesterday... problem is that without a very good understanding of SIP, the documentation simply won't make sense. qxork: I think what Alex wrote yesterday was amazing agranig: ack agranig: it should be taken as kind of an official project introduction miconda: qxork: access to web site only if answering correctly a SIP spec question? qxork: I do think Alex's piece might make a very good intro ==== Presence ==== miconda: next a bit about presence ... I added recently based on last mailing list activity miconda: is pdunkley or other presence users/devs active in the channel? pdunkley: I am here miconda: I got the impression that some code is duplicated across couple of modules miconda: when presence server was started, we had no internal libraries miconda: but now we have that pdunkley: There is certainly quite a bit of code duplicated within some of the modules. miconda: would it be the case of making an internal lib to collect such code? pdunkley: The only stuff I can think of that is duplicated between the modules is the pres_auth_status()/xcap_auth_status() stuff. miconda: so there will be no need to patch in many places, whenever is something to fix miconda: btw, irc, presence module has also some lib only mode pdunkley: I am not sure how easy it would be to write a lib for some of the stuff. I don't think there is a huge amount duplicated between presence/presence_xml/pua/rls. pdunkley: There is similar (but not quite the same code) in some places. But not a lot duplicated. pdunkley: I don't know about the other presence modules (for dialogs, pua_xmpp, and so on). miconda: ok miconda: wanted to double check ... when I have time I will look a bit over the code pdunkley: I think there could be a lot duplicated between presence_conference, presence_dialoginfo, presence_mwi, ... though miconda: ok pdunkley: A nearly identical pair of files (pidf.[ch]) is in presence_xml, presence_conference, presence_dialoginfo, and pua. pdunkley: and pua_xmpp pdunkley: So there could be something there. miconda: thanks for checking, maybe I have time to look over before Fosdem and update there for a decision miconda: anything else related to presence? miconda: any refactoring that should be done? miconda: anyone using MSRP? pdunkley: I am currently thinking about adding an internal API between RLS and presence. pdunkley: I might clean-up some bits and pieces as I do that, if I spot anything. pdunkley: Internal as in functions, to try and squeeze a bit more performance and dodge some of the race hazards. miconda: ok ... topic done? carstenbock: The topic of my speech at LinuxTag will be on Rich Communications with sip-router.org (if accepted) pdunkley: I've not tried the MSRP yet. I was thinking a handy feature might be some sort of function interface into MSILO so that offline MSRP messages can be captured? miconda: offline msrp ... if the connection to target is closed, could be useful pdunkley: Yes, and establish a connection and send the messages when the target REGISTERs and comes online. miconda: pdunkley: but you have to create a dialog with INVITE first ... pdunkley: Can the uac module (or other modules) be used to terminate the INVITE session and create an INVITE session after REGISTER? miconda: uac does not have for the moment such feature miconda: can be enhanced miconda: dialog module has some feature for doing click-to-dial aXl: regarding pua: i still have to port the deadlock freen version from 1.5 to 3.x. I looked at it quickly a few months ago, but it will require a bit of work for which i don't have time yet. miconda: invite, 200ok, ack, refer, 200ok, bye, 200ok miconda: aXl: i think that was fixed miconda: was it deadlock or race in handling taffic? aXl: it deadlocked because it kept a lock on a hash bucket entry while waiting for a sip response aXl: if all sip listeners are waiting for such a lock... miconda: I had in mind it was fixed by some refactoring in handling the traffic miconda: you can doublecheck when you have the time aXl: ok, i haven't noticed any siginficant changes to pua in the 3.0/3.1 timeframe, so i assumed it wasn;t fixed yet miconda: there were lot in 3.2 and devel pdunkley: DB only mode and a lot of race-hazards fixed since 3.2 miconda: anything else on presence? pdunkley: Nothing from me aXl: no ==== Duplicated Modules ==== miconda: merging duplicated modules miconda: long live topic miconda: I hope we get pdt, dispatcher and few more merged miconda: auth_db depends on db schema, let's see miconda: maybe usrloc, as I have some plans for gruu support jasonpenton: miconda, quick question about modules K|S - if we write a new module, where should it go? K|S|modules? miconda: ser version has implemented parts of gruu already jasonpenton: assuming brand new functinality miconda: should go in modules jasonpenton: ok miconda: radius modules were merged once, then reverted, don't recall the reason right now miconda: xlog from ser still has specifiers like '%ru' and it is used by other ser modules miconda: perhaps is gonna take more to get to a decision for it miconda: speeddial, cpl-c and permissions might be also easy ... miconda: just to give the current state miconda: other modules from modules_k/s can be just copied, they are not duplicated, just have some local dependencies miconda: if any dev has spare time to work on reducing duplicates, write on sr-dev to sync aXl: it'll probably need a dev with experience in both projects, at least with the module to be converted, i don't think there are a lot of them osas: there should be a wiki page dedicated to module merging osas: and maybe it make sense to just drop one version and keep the other one (for some modules) miconda: when I did it, I looked in readmes to be sure the features are not lost miconda: most of complexity comes from different db structure osas: for some osas: for some others, it should be relatively simple osas: like nathelper jasonpenton: I assume in a merge all we need to preserve is 1. funcionality, 2. API, 3. DBSchema? is that all? osas: there are some extra features in s version, but OI don't know how many are relly using those miconda: jasonpenton: ideally miconda: for db schema I try to make it compatible with both miconda: maybe by having some columns used by only one "mode" jasonpenton: miconda: implemented how? #ifdefs? miconda: no, modparams jasonpenton: ok osas: for some modules, maybe we need a pool to see much are those used miconda: I prefer no compile time switches jasonpenton: yeah was gonna say miconda: it is like with use_domain parameter osas: and based on that, consider dropping on version and keeping the other one miconda: domain column is not used if that parameter is not set jasonpenton: ok miconda: osas: yes, at some point we should get to something like that miconda: related to this, I added also the next topic miconda: adding kind of unique id in some structures miconda: ser uses that and might be easy to integrate miconda: we can make it as user@domain from existing records miconda: the idea showed up when I looked a bit over gruu specs jasonpenton: please explain a little miconda, im lost here jasonpenton: you are talking about location db schema? miconda: jasonpenton: at this moment we have (username) or (username,domain) to identify a subscriber jasonpenton: ahh yes - okay miconda: a matter of use_domain, there are conditions and conditions jasonpenton: we had issues with that in IMS extensions too jasonpenton: ok miconda: so it might be good to have a main SIP id the (username,domain) and unique id miconda: sip id can change eventually miconda: so it is about adding a new column in subscriber and location tables miconda: for auth and location services miconda: not sure what will be the impact jasonpenton: happy with that! miconda: wanted to see if people see benefits jasonpenton: def! miconda: the unique id target is to be used internally for references between records jasonpenton: well for IMS extensions, we have to have 'custom data' added to customer profile - and for backwards compat we had to use another DB table jasonpenton: keying with username/domain is not cool jasonpenton: uniqueid will be much better miconda: in gruu is so called permanent address, which has to be mapped to a subscriber miconda: ok ... we have to see the impact anyhow, might not be for next release (or at least not across all modules) ==== IMS ==== miconda: then since you are on stage, the next topic IMS miconda: I added it in case someone wants to ask questions and see the status miconda: there are two branches, afaik jasonpenton: yeah - not much Daniel - we have a working prototype whcih we are testing miconda: carstenbock and jasonpenton jasonpenton: however, one thing we are puzzled over is how to integrate leveraging existing functoinality jasonpenton: mainly in usrloc/registrar carstenbock: I actually point everyone to Jason's branch. carstenbock: Since i think it is more advanced than my branch. miconda: ok jasonpenton: as I mentioned earlier 'custom data' for subscribers - do you think it would be feasible to include in usrloc a 'custom field' to add anything - using some form of serialisation? miconda: jasonpenton: usrloc from modules_s has that functionality miconda: a reason i was looking to merge jasonpenton: ahh - i didnt notice that miconda: it uses avps jasonpenton: I have the bad misconception that k is better than s miconda: in many aspects jasonpenton: ok will look into - we really just dont want to duplicate functoinality miconda: k version has lot of features not in _s miconda: I didn't add in _k/usrloc because I wanted to merge first (and therefore get it) jasonpenton: ok - so our roadmap is to finish testing pretty soon and then push our stuff - so maybe ready for by the ++next release miconda: ok jasonpenton: other than that no updates jasonpenton: also hoping someone could look at dialog2 for us miconda: to implement it? jasonpenton: we're not experts in TM and dialog - but dialog 2 works for us jasonpenton: no Richard did alot of the work already miconda: is it on git? jasonpenton: yes jasonpenton: in our branch miconda: i missed it then miconda: ok miconda: i will try to find time for it jasonpenton: okay no rush jasonpenton: so topic done agranig: one thing regarding usrloc from my side is the sync with db... we've talked on the sr-users list a bit about that, where we should make the write-back a bit more resilient (insert vs update, independent from the state in cache)... I couldn't come up with some generic approach yet carstenbock: Great miconda: agranig: indeed, it was a topic miconda: let's finish this one then miconda: solutions? miconda: someone proposed a new db mode, just for read only at startup miconda: and all registers will be replicated to another instance to write to db agranig: well, one could be to check in the update result whether rows where affected... this is just for mysql though, not sure about other modules miconda: it might be a contribution soon, let's see aXl: for mysql insert ... on duplicate key can be used it is faster than update, then insert (and racefree) agranig: the problem we have atm is rather that the usrloc cache thinks it's already in db, and just tries an update (no insert at all) aXl: above solves that, just use insert always aXl: but only for mysql unfortunately agranig: would this work with pgsql and oracle and other drivers we support? miconda: aXl: or anyone, is insert ... on duplicate good in postgres? miconda: ok ... we have to check, I guess nangel: no, I don't think postgres has insert ... on duplicate... I forget the way to do it though • nangel has mysql + postgresql dbs miconda: ok, back to next topic ... if nothing else here nangel: http://stackoverflow.com/questions/1109061/insert-on-duplicate-update-postgresql - create a function aXl: if we create a new db op like insert_or_update aXl: it can be solved within a transaction for every DB out there agranig: or some stored procedure, yes aXl: that requires DB magic, i'd prefer if de db module of kamailio would provide support for it miconda: maybe a dedicated process to detect consitency miconda: walk through mem records and check if in db ... miconda: anyhow, not easy to decide here miconda: let's continue on mailing lists ==== Roadmape to 3.3.0 ==== miconda: road map to next major release 3.3.3 miconda: 3.3.0 miconda: so we released in October, we should do it before summer miconda: nobody wants (I guess) to do it in holidays from the beach miconda: maybe looking to freeze devel after mid of march, latest on end of march miconda: test on april miconda: release in may? miconda: anyone having plans for major additions that require more time? miconda: looks like no miconda: so I will propose these time lines and see reaction on mailing lists miconda: approaching the end of this session then miconda: anything missing as feature in the project? miconda: what you would like to see added soon? miconda: (not saying it will be) aXl: i have one miconda: good, you have dev access jasonpenton: lol aXl: support for modifying the outgoing message _after_ DNS resolving aXl: like i talked with you about on fosdem aXl: there is a need to enable an rtpproxy for ipv6/ipv4 transistion situations miconda: just after dns, before printing the output buffer carstenbock: There was some hacks on the list recently, like using the local IP as outbound_proxy in some presence-modules... aXl: it would also need to be able to update avp's or record-route parameters carstenbock: It would be nice, if that could be avoided. miconda: I will look for places where we can call an event route on forward, after dns, before building output aXl: what would maybe work is onsend_route where this would be possibel miconda: onsend_route has the outgoing buffer printed aXl: just ned to prohibit rewriting $du miconda: too late for route headers aXl: then a new event would be needed miconda: the tricky part will be with dns failover miconda: ipv6, then fallback to ipv4 aXl: the event should be called for every outgoing message (apart from retransmissions) miconda: ... then to noIP aXl: that;'s exactly the issue im having miconda: ok, understood aXl: mixed ipv4 and ipv6 in one dns records miconda: for records, tm module and forward.c are places to look at miconda: anything else? nangel: wishlist - would be handy to be able to do SRV/A/AAAA/NAPTR lookups directly from script aXl: somewhere between creating the transaction and adding record-route headers ? miconda: yes, Record-Route header is added after dns and selection of local socket to send pdunkley: I have a suggestion for a new feature. Can the rtpproxy module detect when the SDP is indicating TURN/ICE support in the client and only activate when it is needed? Or possibly add something to SDPOPs so this can be detected in config and rtpproxy not used? aXl: but when is the tranasction created? before or after that? miconda: nangel: ok miconda: before miconda: but should work for stateless mode miconda: with forward() aXl: that would be a good thing i think agranig: pdunkley: sounds like this will be much needed in the light of webrtc miconda: in tm, the code of t_relay() should be followed and dug in miconda: in core, forward() in forward.c aXl: ok, thanks pdunkley: agranig: I was thinking in the context of RCE/RCS-e too. For those specifications NAT traversal in the client is mandatory - but some still don't do it. miconda: pdunkley: sdpops can be a good place pdunkley: So need to be able to cope efficiently with both types of client (good ones and bad ones :-)) miconda: I think it is about searching for a=ice and similar pdunkley: It's been on my wish list to do this for a while, but I haven't had time. miconda: ok pdunkley: Yes I think is is something like looking for ice on an attribute line. pdunkley: Maybe a generic SDPOPs to allow someone to match an "a=" line with a reg-ex would be useful for other things too? miconda: search_body() does it miconda: from textops miconda: safe for sdp body only pdunkley: I didn't think of that. miconda: if it is a multi-part body, then can be conflicts a matter of content miconda: so an sdp_search() would be safer miconda: there is also a new transformation on devel miconda: line: http://www.kamailio.org/wiki/cookbooks/devel/transformations#line_transformations miconda: can be enhanced for matching on a line based miconda: btw, IPv6 -- how is it in your side? miconda: production already? miconda: we should be pretty safe with everything related to IPv6 miconda: carrierroute and drouting were not checked by me so far pdunkley: IPv6 is required for RCE/RCS-e as it is IMS based. Lots of people still using IPv4 at the moment though. miconda: from the list of routing modules jasonpenton: that is somethign we still need to test too (IPv6) agranig: our tests were pretty much fine with IPv6, but we don't use carrierroute and drouting... pdunkley: So haven't done much with IPv6 yet myself. jasonpenton: on our roadmap and we will be using cr jasonpenton: as well as dispatcher miconda: I don't use these modules as well, but from the list of modules I know the may deal with, are still in the check list miconda: dispatcher should be ready jasonpenton: great miconda: ok then agranig: at least the core, usrloc and lcr are definitely ready ==== Closing Remarks ==== miconda: last topic -- any relevant resources we are missing in the environment? miconda: lot of cool apps might be out and some of us are not aware miconda: facebook 'Love' page ;-)? qxork: kamailio cake. miconda: I know where to place the order agranig: native websocket-transport-support proposed by inaki agranig: i think he implemented it in his own server, not in kamailio miconda: well, to my understanding so far to websockets (some sporadic reads), it will not be something very complex miconda: it starts as an http miconda: we have that miconda: then there is an handshake based on some headers miconda: then it is pretty much tcp miconda: with packets to be handled based on app id or so ... agranig: what's missing is the WS(S) support in vias... you usually get a client id for a websocket, so you'd need to map a message coming via "normal" sip to the correct socket on the http-side miconda: it is like msrp miconda: you have to keep the mapping of connection id miconda: msrp has no Via headers as well miconda: ok ... added to the list agranig: as far as i understood inakis proposal, websockets will have vias... it's intended to be another transport beside udp, tcp etc agranig: anyways miconda: not sure about Inaki's proposal miconda: knowing a bit about generic websocket specs miconda: so Inaki may have proposed some 'enhancements' agranig: http://tools.ietf.org/html/draft-ibc-sipcore-sip-websocket-01 miconda: anything else? otherwise looks we can close development in few days ... jasonpenton: cool - ciao! miconda: ok! then officially ending here!